From 10a435ebadfbf81aa4d71fa62a21f5f81edadd76 Mon Sep 17 00:00:00 2001 From: bponders12-cell Date: Tue, 1 Sep 2026 20:45:12 -0400 Subject: [PATCH] Scope sync outbox to authenticated account --- lib/services/sync/sync_providers.dart | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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),