import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/domain/utils/background_sync.dart'; import 'package:immich_mobile/providers/backup/drift_backup.provider.dart'; import 'package:immich_mobile/providers/sync_status.provider.dart'; final backgroundSyncProvider = Provider((ref) { final syncStatusNotifier = ref.read(syncStatusProvider.notifier); final backupProvider = ref.read(driftBackupProvider.notifier); final manager = BackgroundSyncManager( onRemoteSyncStart: () { syncStatusNotifier.startRemoteSync(); backupProvider.updateError(BackupError.none); }, onRemoteSyncComplete: (isSuccess) { syncStatusNotifier.completeRemoteSync(); backupProvider.updateError(isSuccess == true ? BackupError.none : BackupError.syncFailed); }, onRemoteSyncError: syncStatusNotifier.errorRemoteSync, onLocalSyncStart: syncStatusNotifier.startLocalSync, onLocalSyncComplete: syncStatusNotifier.completeLocalSync, onLocalSyncError: syncStatusNotifier.errorLocalSync, onHashingStart: syncStatusNotifier.startHashJob, onHashingComplete: syncStatusNotifier.completeHashJob, onHashingError: syncStatusNotifier.errorHashJob, ); ref.onDispose(manager.cancel); return manager; });