Fix not cleaing latestItemTime after removing last item

This commit is contained in:
Ming Ming 2021-11-05 19:22:28 +08:00
parent a964f0f14d
commit 4d54b2099d
2 changed files with 18 additions and 6 deletions

View file

@ -7,6 +7,7 @@ import 'package:nc_photos/entity/album.dart';
import 'package:nc_photos/entity/album/item.dart';
import 'package:nc_photos/entity/file.dart';
import 'package:nc_photos/iterable_extension.dart';
import 'package:nc_photos/or_null.dart';
import 'package:nc_photos/type.dart';
abstract class AlbumProvider with EquatableMixin {
@ -79,7 +80,7 @@ abstract class AlbumProviderBase extends AlbumProvider {
@override
AlbumProviderBase copyWith({
DateTime? latestItemTime,
OrNull<DateTime>? latestItemTime,
});
@override
@ -134,11 +135,12 @@ class AlbumStaticProvider extends AlbumProviderBase {
@override
AlbumStaticProvider copyWith({
DateTime? latestItemTime,
OrNull<DateTime>? latestItemTime,
List<AlbumItem>? items,
}) {
return AlbumStaticProvider(
latestItemTime: latestItemTime ?? this.latestItemTime,
latestItemTime:
latestItemTime == null ? this.latestItemTime : latestItemTime.obj,
items: items ?? this.items,
);
}
@ -198,11 +200,12 @@ class AlbumDirProvider extends AlbumDynamicProvider {
@override
AlbumDirProvider copyWith({
DateTime? latestItemTime,
OrNull<DateTime>? latestItemTime,
List<File>? dirs,
}) {
return AlbumDirProvider(
latestItemTime: latestItemTime ?? this.latestItemTime,
latestItemTime:
latestItemTime == null ? this.latestItemTime : latestItemTime.obj,
dirs: dirs ?? this.dirs,
);
}

View file

@ -4,6 +4,7 @@ import 'package:nc_photos/entity/album/provider.dart';
import 'package:nc_photos/entity/album/sort_provider.dart';
import 'package:nc_photos/entity/file.dart';
import 'package:nc_photos/entity/file_util.dart' as file_util;
import 'package:nc_photos/or_null.dart';
class UpdateAlbumTime {
/// Update the latest item time of an album with unsorted items
@ -33,6 +34,14 @@ class UpdateAlbumTime {
}
Album _updateWithSortedItems(Album album, List<AlbumItem> sortedItems) {
if (sortedItems.isEmpty) {
return album.copyWith(
provider: (album.provider as AlbumProviderBase).copyWith(
latestItemTime: OrNull(null),
),
);
}
DateTime? latestItemTime;
try {
final latestFile = sortedItems
@ -47,7 +56,7 @@ class UpdateAlbumTime {
if (latestItemTime != album.provider.latestItemTime) {
return album.copyWith(
provider: (album.provider as AlbumProviderBase).copyWith(
latestItemTime: latestItemTime,
latestItemTime: OrNull(latestItemTime),
),
);
}