mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-30 18:35:00 -04:00 
			
		
		
		
	* dep(mobile): update flutter and deps * chore: dart analyzer * chore: update flutter workflow version * chore: dart format * fix: gallery_viewer PopScope --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
		
			
				
	
	
		
			60 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:hooks_riverpod/hooks_riverpod.dart';
 | |
| import 'package:immich_mobile/modules/backup/background_service/background.service.dart';
 | |
| 
 | |
| class IOSBackgroundSettings {
 | |
|   final bool appRefreshEnabled;
 | |
|   final int numberOfBackgroundTasksQueued;
 | |
|   final DateTime? timeOfLastFetch;
 | |
|   final DateTime? timeOfLastProcessing;
 | |
| 
 | |
|   IOSBackgroundSettings({
 | |
|     required this.appRefreshEnabled,
 | |
|     required this.numberOfBackgroundTasksQueued,
 | |
|     this.timeOfLastFetch,
 | |
|     this.timeOfLastProcessing,
 | |
|   });
 | |
| }
 | |
| 
 | |
| class IOSBackgroundSettingsNotifier
 | |
|     extends StateNotifier<IOSBackgroundSettings?> {
 | |
|   final BackgroundService _service;
 | |
|   IOSBackgroundSettingsNotifier(this._service) : super(null);
 | |
| 
 | |
|   IOSBackgroundSettings? get settings => state;
 | |
| 
 | |
|   Future<IOSBackgroundSettings> refresh() async {
 | |
|     final lastFetchTime =
 | |
|         await _service.getIOSBackupLastRun(IosBackgroundTask.fetch);
 | |
|     final lastProcessingTime =
 | |
|         await _service.getIOSBackupLastRun(IosBackgroundTask.processing);
 | |
|     int numberOfProcesses = await _service.getIOSBackupNumberOfProcesses();
 | |
|     final appRefreshEnabled =
 | |
|         await _service.getIOSBackgroundAppRefreshEnabled();
 | |
| 
 | |
|     // If this is enabled and there are no background processes,
 | |
|     // the user just enabled app refresh in Settings.
 | |
|     // But we don't have any background services running, since it was disabled
 | |
|     // before.
 | |
|     if (await _service.isBackgroundBackupEnabled() && numberOfProcesses == 0) {
 | |
|       // We need to restart the background service
 | |
|       await _service.enableService();
 | |
|       numberOfProcesses = await _service.getIOSBackupNumberOfProcesses();
 | |
|     }
 | |
| 
 | |
|     final settings = IOSBackgroundSettings(
 | |
|       appRefreshEnabled: appRefreshEnabled,
 | |
|       numberOfBackgroundTasksQueued: numberOfProcesses,
 | |
|       timeOfLastFetch: lastFetchTime,
 | |
|       timeOfLastProcessing: lastProcessingTime,
 | |
|     );
 | |
| 
 | |
|     state = settings;
 | |
|     return settings;
 | |
|   }
 | |
| }
 | |
| 
 | |
| final iOSBackgroundSettingsProvider = StateNotifierProvider<
 | |
|     IOSBackgroundSettingsNotifier, IOSBackgroundSettings?>(
 | |
|   (ref) => IOSBackgroundSettingsNotifier(ref.watch(backgroundServiceProvider)),
 | |
| );
 |