diff --git a/lib/services/sync/sync_providers.dart b/lib/services/sync/sync_providers.dart index f280eef..a1e9366 100644 --- a/lib/services/sync/sync_providers.dart +++ b/lib/services/sync/sync_providers.dart @@ -3,6 +3,7 @@ import '../../database/database.dart'; import '../../features/records/records_service.dart'; import '../auth/auth_providers.dart'; import '../auth/auth_state.dart'; +import '../cloud/firebase_account_sync_service.dart'; import '../github/github_auth_service.dart'; import '../github/github_sync_service.dart'; import 'firebase_sync_provider.dart'; @@ -23,6 +24,11 @@ final firebaseSyncProvider = Provider((ref) => FirebaseSyn r2UploadService: ref.watch(r2UploadServiceProvider), )); +final firebaseAccountSyncServiceProvider = Provider((ref) => FirebaseAccountSyncService( + db: ref.watch(databaseProvider), + auth: ref.watch(authServiceProvider), + )); + final githubSyncProvider = Provider((ref) => GitHubSyncProvider( service: ref.watch(githubSyncServiceProvider), auth: ref.watch(githubAuthServiceProvider), @@ -34,9 +40,15 @@ final syncManagerProvider = ChangeNotifierProvider((ref) { initialProviders: [ref.watch(firebaseSyncProvider), ref.watch(githubSyncProvider)], defaultProviderId: 'firebase', ); + final accountSync = ref.watch(firebaseAccountSyncServiceProvider); ref.listen(authNotifierProvider, (previous, next) { if (next.isAuthenticated && previous?.isAuthenticated != true) { manager.retryAuthRequired(); + accountSync.syncAccount().catchError((error) { + // Profile/garage synchronization is downstream of riding and must + // never interrupt telemetry or ride persistence. + return Future.value(); + }); } }); ref.onDispose(manager.dispose);