mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	replace usage of AssetResponseDto with Asset Add new class ExifInfo to store data from ExifResponseDto
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:collection/collection.dart';
 | |
| import 'package:flutter/foundation.dart';
 | |
| import 'package:hooks_riverpod/hooks_riverpod.dart';
 | |
| import 'package:immich_mobile/shared/models/asset.dart';
 | |
| import 'package:immich_mobile/shared/services/json_cache.dart';
 | |
| 
 | |
| class AssetCacheService extends JsonCache<List<Asset>> {
 | |
|   AssetCacheService() : super("asset_cache");
 | |
| 
 | |
|   static Future<List<Map<String, dynamic>>> _computeSerialize(
 | |
|     List<Asset> assets,
 | |
|   ) async {
 | |
|     return assets.map((e) => e.toJson()).toList();
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   void put(List<Asset> data) async {
 | |
|     putRawData(await compute(_computeSerialize, data));
 | |
|   }
 | |
| 
 | |
|   static Future<List<Asset>> _computeEncode(List<dynamic> data) async {
 | |
|     return data.map((e) => Asset.fromJson(e)).whereNotNull().toList();
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Future<List<Asset>?> get() async {
 | |
|     try {
 | |
|       final mapList = await readRawData() as List<dynamic>;
 | |
|       final responseData = await compute(_computeEncode, mapList);
 | |
|       return responseData;
 | |
|     } catch (e) {
 | |
|       debugPrint(e.toString());
 | |
|       await invalidate();
 | |
|       return null;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| final assetCacheServiceProvider = Provider(
 | |
|   (ref) => AssetCacheService(),
 | |
| );
 |