diff --git a/lib/entity/album/provider.dart b/lib/entity/album/provider.dart index 7e46c4ab..bcde930b 100644 --- a/lib/entity/album/provider.dart +++ b/lib/entity/album/provider.dart @@ -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? latestItemTime, }); @override @@ -134,11 +135,12 @@ class AlbumStaticProvider extends AlbumProviderBase { @override AlbumStaticProvider copyWith({ - DateTime? latestItemTime, + OrNull? latestItemTime, List? 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? latestItemTime, List? dirs, }) { return AlbumDirProvider( - latestItemTime: latestItemTime ?? this.latestItemTime, + latestItemTime: + latestItemTime == null ? this.latestItemTime : latestItemTime.obj, dirs: dirs ?? this.dirs, ); } diff --git a/lib/use_case/update_album_time.dart b/lib/use_case/update_album_time.dart index 0cc2120b..3549cc49 100644 --- a/lib/use_case/update_album_time.dart +++ b/lib/use_case/update_album_time.dart @@ -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 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), ), ); }