diff --git a/lib/services/sync/sync_providers.dart b/lib/services/sync/sync_providers.dart index a290713..f714c7c 100644 --- a/lib/services/sync/sync_providers.dart +++ b/lib/services/sync/sync_providers.dart @@ -16,7 +16,16 @@ import 'sync_outbox.dart'; final r2UploadServiceProvider = Provider((ref) => R2UploadService()); final syncBundleWorkerProvider = Provider((ref) => SyncBundleWorker(ref.watch(databaseProvider))); -final syncOutboxProvider = Provider((ref) => SyncOutbox(ref.watch(sharedPreferencesProvider))); + +/// Cloud sync state is account-scoped. The Firebase UID is intentionally part +/// of the persisted namespace so signing out and into another account cannot +/// inherit the previous account's synced/pending/failed ride state. +final syncOutboxProvider = Provider((ref) { + final prefs = ref.watch(sharedPreferencesProvider); + final user = ref.watch(currentUserProvider); + final namespace = user?.uid ?? 'local'; + return SyncOutbox(prefs, storageNamespace: namespace); +}); final firebaseSyncProvider = Provider((ref) => FirebaseSyncProvider( db: ref.watch(databaseProvider),