addSavedRoute method

Future<void> addSavedRoute(
  1. String uid,
  2. String routeId
)

//////////// //////////// Adds a saved route reference for a user

Implementation

// II.E - Route Management
///////////////
/// Adds a saved route reference for a user
Future<void> addSavedRoute(String uid, String routeId) async {
  try {
    if (!_isOnline) {
      // Update cache and track change
      _updateCacheForArrayOperation(uid, 'savedRoutes', routeId, isAddition: true);
      _trackPendingChanges(uid, {'savedRoutes': FieldValue.arrayUnion([routeId])});
      return;
    }

    await _firestore.collection(_collectionPath).doc(uid).update({
      'savedRoutes': FieldValue.arrayUnion([routeId]),
    });

    // Update cache
    _updateCacheForArrayOperation(uid, 'savedRoutes', routeId, isAddition: true);
  } catch (e) {
    print('Error adding saved route: $e');

    if (e is FirebaseException && e.code == 'unavailable') {
      // We're offline, update cache and track for later
      _updateCacheForArrayOperation(uid, 'savedRoutes', routeId, isAddition: true);
      _trackPendingChanges(uid, {'savedRoutes': FieldValue.arrayUnion([routeId])});
    }

    rethrow;
  }
}