mirror of
https://github.com/immich-app/immich.git
synced 2025-07-09 03:04:16 -04:00
fix(mobile): photo_manager ignore filters (#18742)
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
parent
d48702f943
commit
df927dd3ce
@ -17,6 +17,30 @@ class AlbumMediaRepository implements IAlbumMediaRepository {
|
|||||||
bool get useCustomFilter =>
|
bool get useCustomFilter =>
|
||||||
Store.get(StoreKey.photoManagerCustomFilter, false);
|
Store.get(StoreKey.photoManagerCustomFilter, false);
|
||||||
|
|
||||||
|
FilterOptionGroup? _getAlbumFilter({
|
||||||
|
DateTimeCond? updateTimeCond,
|
||||||
|
bool? containsPathModified,
|
||||||
|
List<OrderOption>? orderBy,
|
||||||
|
}) =>
|
||||||
|
useCustomFilter
|
||||||
|
? FilterOptionGroup(
|
||||||
|
imageOption: const FilterOption(
|
||||||
|
needTitle: true,
|
||||||
|
sizeConstraint: SizeConstraint(ignoreSize: true),
|
||||||
|
),
|
||||||
|
videoOption: const FilterOption(
|
||||||
|
needTitle: true,
|
||||||
|
sizeConstraint: SizeConstraint(ignoreSize: true),
|
||||||
|
durationConstraint: DurationConstraint(allowNullable: true),
|
||||||
|
),
|
||||||
|
containsPathModified: containsPathModified ?? false,
|
||||||
|
createTimeCond: DateTimeCond.def().copyWith(ignore: true),
|
||||||
|
updateTimeCond:
|
||||||
|
updateTimeCond ?? DateTimeCond.def().copyWith(ignore: true),
|
||||||
|
orders: orderBy ?? [],
|
||||||
|
)
|
||||||
|
: null;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<Album>> getAll() async {
|
Future<List<Album>> getAll() async {
|
||||||
final filter = useCustomFilter
|
final filter = useCustomFilter
|
||||||
@ -30,7 +54,8 @@ class AlbumMediaRepository implements IAlbumMediaRepository {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<String>> getAssetIds(String albumId) async {
|
Future<List<String>> getAssetIds(String albumId) async {
|
||||||
final album = await AssetPathEntity.fromId(albumId);
|
final album =
|
||||||
|
await AssetPathEntity.fromId(albumId, filterOption: _getAlbumFilter());
|
||||||
final List<AssetEntity> assets =
|
final List<AssetEntity> assets =
|
||||||
await album.getAssetListRange(start: 0, end: 0x7fffffffffffffff);
|
await album.getAssetListRange(start: 0, end: 0x7fffffffffffffff);
|
||||||
return assets.map((e) => e.id).toList();
|
return assets.map((e) => e.id).toList();
|
||||||
@ -38,7 +63,8 @@ class AlbumMediaRepository implements IAlbumMediaRepository {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<int> getAssetCount(String albumId) async {
|
Future<int> getAssetCount(String albumId) async {
|
||||||
final album = await AssetPathEntity.fromId(albumId);
|
final album =
|
||||||
|
await AssetPathEntity.fromId(albumId, filterOption: _getAlbumFilter());
|
||||||
return album.assetCountAsync;
|
return album.assetCountAsync;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,17 +79,14 @@ class AlbumMediaRepository implements IAlbumMediaRepository {
|
|||||||
}) async {
|
}) async {
|
||||||
final onDevice = await AssetPathEntity.fromId(
|
final onDevice = await AssetPathEntity.fromId(
|
||||||
albumId,
|
albumId,
|
||||||
filterOption: FilterOptionGroup(
|
filterOption: _getAlbumFilter(
|
||||||
imageOption: const FilterOption(needTitle: true),
|
|
||||||
videoOption: const FilterOption(needTitle: true),
|
|
||||||
containsPathModified: true,
|
|
||||||
updateTimeCond: modifiedFrom == null && modifiedUntil == null
|
updateTimeCond: modifiedFrom == null && modifiedUntil == null
|
||||||
? null
|
? null
|
||||||
: DateTimeCond(
|
: DateTimeCond(
|
||||||
min: modifiedFrom ?? DateTime.utc(-271820),
|
min: modifiedFrom ?? DateTime.utc(-271820),
|
||||||
max: modifiedUntil ?? DateTime.utc(275760),
|
max: modifiedUntil ?? DateTime.utc(275760),
|
||||||
),
|
),
|
||||||
orders: orderByModificationDate
|
orderBy: orderByModificationDate
|
||||||
? [const OrderOption(type: OrderOptionType.updateDate)]
|
? [const OrderOption(type: OrderOptionType.updateDate)]
|
||||||
: [],
|
: [],
|
||||||
),
|
),
|
||||||
@ -80,7 +103,10 @@ class AlbumMediaRepository implements IAlbumMediaRepository {
|
|||||||
DateTime? modifiedFrom,
|
DateTime? modifiedFrom,
|
||||||
DateTime? modifiedUntil,
|
DateTime? modifiedUntil,
|
||||||
}) async {
|
}) async {
|
||||||
final assetPathEntity = await AssetPathEntity.fromId(id);
|
final assetPathEntity = await AssetPathEntity.fromId(
|
||||||
|
id,
|
||||||
|
filterOption: _getAlbumFilter(containsPathModified: true),
|
||||||
|
);
|
||||||
return _toAlbum(assetPathEntity);
|
return _toAlbum(assetPathEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user