ARCH: wire account and garage sync into authenticated cloud lifecycle
This commit is contained in:
parent
21012993dd
commit
7ca382d33a
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue