ARCH: wire account and garage sync into authenticated cloud lifecycle

This commit is contained in:
bponders12-cell 2026-09-01 17:07:26 -04:00
parent 21012993dd
commit 7ca382d33a
1 changed files with 12 additions and 0 deletions

View File

@ -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<FirebaseSyncProvider>((ref) => FirebaseSyn
r2UploadService: ref.watch(r2UploadServiceProvider),
));
final firebaseAccountSyncServiceProvider = Provider<FirebaseAccountSyncService>((ref) => FirebaseAccountSyncService(
db: ref.watch(databaseProvider),
auth: ref.watch(authServiceProvider),
));
final githubSyncProvider = Provider<GitHubSyncProvider>((ref) => GitHubSyncProvider(
service: ref.watch(githubSyncServiceProvider),
auth: ref.watch(githubAuthServiceProvider),
@ -34,9 +40,15 @@ final syncManagerProvider = ChangeNotifierProvider<SyncManager>((ref) {
initialProviders: [ref.watch(firebaseSyncProvider), ref.watch(githubSyncProvider)],
defaultProviderId: 'firebase',
);
final accountSync = ref.watch(firebaseAccountSyncServiceProvider);
ref.listen<AuthState>(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<void>.value();
});
}
});
ref.onDispose(manager.dispose);