mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	feature(mobile): sync assets, albums & users to local database on device (#1759)
* feature(mobile): sync assets, albums & users to local database on device * try to fix tests * move DB sync operations to new SyncService * clear db on user logout * fix reason for endless loading timeline * fix error when deleting album * fix thumbnail of device albums * add a few comments * fix Hive box not open in album service when loading local assets * adjust tests to int IDs * fix bug: show all albums when Recent is selected * update generated api * reworked Recents album isAll handling * guard against wrongly interleaved sync operations * fix: timeline asset ordering (sort asset state by created at) * fix: sort assets in albums by created at
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							8f11529a75
						
					
				
				
					commit
					8708867c1c
				
			
							
								
								
									
										16
									
								
								mobile/lib/utils/async_mutex.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								mobile/lib/utils/async_mutex.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| import 'dart:async'; | ||||
|  | ||||
| /// Async mutex to guarantee actions are performed sequentially and do not interleave | ||||
| class AsyncMutex { | ||||
|   Future _running = Future.value(null); | ||||
|  | ||||
|   /// Execute [operation] exclusively, after any currently running operations. | ||||
|   /// Returns a [Future] with the result of the [operation]. | ||||
|   Future<T> run<T>(Future<T> Function() operation) { | ||||
|     final completer = Completer<T>(); | ||||
|     _running.whenComplete(() { | ||||
|       completer.complete(Future<T>.sync(operation)); | ||||
|     }); | ||||
|     return _running = completer.future; | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user