mirror of
https://github.com/immich-app/immich.git
synced 2024-12-17 12:22:31 +02:00
1633af7af6
* introduce Asset as composition of AssetResponseDTO and AssetEntity * filter out duplicate assets (that are both local and remote, take only remote for now) * only allow remote images to be added to albums * introduce ImmichImage to render Asset using local or remote data * optimized deletion of local assets * local video file playback * allow multiple methods to wait on background service finished * skip local assets when adding to album from home screen * fix and optimize delete * show gray box placeholder for local assets * add comments * fix bug: duplicate assets in state after onNewAssetUploaded
35 lines
875 B
Dart
35 lines
875 B
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");
|
|
|
|
@override
|
|
void put(List<Asset> data) {
|
|
putRawData(data.map((e) => e.toJson()).toList());
|
|
}
|
|
|
|
@override
|
|
Future<List<Asset>> get() async {
|
|
try {
|
|
final mapList = await readRawData() as List<dynamic>;
|
|
|
|
final responseData =
|
|
mapList.map((e) => Asset.fromJson(e)).whereNotNull().toList();
|
|
|
|
return responseData;
|
|
} catch (e) {
|
|
debugPrint(e.toString());
|
|
|
|
return [];
|
|
}
|
|
}
|
|
}
|
|
|
|
final assetCacheServiceProvider = Provider(
|
|
(ref) => AssetCacheService(),
|
|
);
|