removeSavedRoute method

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

Removes a saved route reference for a user

Implementation

Future<void> removeSavedRoute(String uid, String routeId) async {
  try {
    if (!_isOnline) {
      // Update cache and track change
      _updateCacheForArrayOperation(uid, 'savedRoutes', routeId, isAddition: false);
      _trackPendingChanges(uid, {'savedRoutes': FieldValue.arrayRemove([routeId])});
      return;
    }

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

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

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

    rethrow;
  }
}