fix(mobile): stack count reset when navigating to library (#4647)

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
shenlong 2023-10-26 14:19:06 +00:00 committed by GitHub
parent cb0e37e76e
commit b49b10141e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 52 additions and 23 deletions

View file

@ -153,7 +153,10 @@ class Asset {
String? stackParentId;
int stackCount;
@ignore
int get stackChildrenCount => stackCount ?? 0;
int? stackCount;
/// `true` if this [Asset] is present on the device
@ignore
@ -253,7 +256,11 @@ class Asset {
isFavorite != a.isFavorite ||
isArchived != a.isArchived ||
isTrashed != a.isTrashed ||
stackCount != a.stackCount;
// no local stack count or different count from remote
((stackCount == null && a.stackCount != null) ||
(stackCount != null &&
a.stackCount != null &&
stackCount != a.stackCount));
}
/// Returns a new [Asset] with values from this and merged & updated with [a]
@ -269,6 +276,7 @@ class Asset {
width: a.width ?? width,
height: a.height ?? height,
exifInfo: a.exifInfo?.copyWith(id: id) ?? exifInfo,
stackCount: a.stackCount ?? stackCount,
);
} else if (isRemote) {
return _copyWith(
@ -299,7 +307,7 @@ class Asset {
height: a.height,
livePhotoVideoId: a.livePhotoVideoId,
stackParentId: a.stackParentId,
stackCount: a.stackCount,
stackCount: a.stackCount ?? stackCount,
// isFavorite + isArchived are not set by device-only assets
isFavorite: a.isFavorite,
isArchived: a.isArchived,

View file

@ -250,7 +250,7 @@ Asset _assetDeserialize(
localId: reader.readStringOrNull(offsets[10]),
ownerId: reader.readLong(offsets[11]),
remoteId: reader.readStringOrNull(offsets[12]),
stackCount: reader.readLong(offsets[13]),
stackCount: reader.readLongOrNull(offsets[13]),
stackParentId: reader.readStringOrNull(offsets[14]),
type: _AssettypeValueEnumMap[reader.readByteOrNull(offsets[15])] ??
AssetType.other,
@ -294,7 +294,7 @@ P _assetDeserializeProp<P>(
case 12:
return (reader.readStringOrNull(offset)) as P;
case 13:
return (reader.readLong(offset)) as P;
return (reader.readLongOrNull(offset)) as P;
case 14:
return (reader.readStringOrNull(offset)) as P;
case 15:
@ -1825,8 +1825,24 @@ extension AssetQueryFilter on QueryBuilder<Asset, Asset, QFilterCondition> {
});
}
QueryBuilder<Asset, Asset, QAfterFilterCondition> stackCountIsNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNull(
property: r'stackCount',
));
});
}
QueryBuilder<Asset, Asset, QAfterFilterCondition> stackCountIsNotNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNotNull(
property: r'stackCount',
));
});
}
QueryBuilder<Asset, Asset, QAfterFilterCondition> stackCountEqualTo(
int value) {
int? value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'stackCount',
@ -1836,7 +1852,7 @@ extension AssetQueryFilter on QueryBuilder<Asset, Asset, QFilterCondition> {
}
QueryBuilder<Asset, Asset, QAfterFilterCondition> stackCountGreaterThan(
int value, {
int? value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
@ -1849,7 +1865,7 @@ extension AssetQueryFilter on QueryBuilder<Asset, Asset, QFilterCondition> {
}
QueryBuilder<Asset, Asset, QAfterFilterCondition> stackCountLessThan(
int value, {
int? value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
@ -1862,8 +1878,8 @@ extension AssetQueryFilter on QueryBuilder<Asset, Asset, QFilterCondition> {
}
QueryBuilder<Asset, Asset, QAfterFilterCondition> stackCountBetween(
int lower,
int upper, {
int? lower,
int? upper, {
bool includeLower = true,
bool includeUpper = true,
}) {
@ -2854,7 +2870,7 @@ extension AssetQueryProperty on QueryBuilder<Asset, Asset, QQueryProperty> {
});
}
QueryBuilder<Asset, int, QQueryOperations> stackCountProperty() {
QueryBuilder<Asset, int?, QQueryOperations> stackCountProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'stackCount');
});