From 9c08e5a635f8855b9d034ba1d72914ab69d95462 Mon Sep 17 00:00:00 2001 From: Ming Ming Date: Sun, 20 Jun 2021 19:40:28 +0800 Subject: [PATCH] Simplify File datetime access --- lib/entity/file.dart | 10 +++++++--- lib/widget/home_albums.dart | 4 +--- lib/widget/home_photos.dart | 2 +- lib/widget/viewer_detail_pane.dart | 8 +------- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/lib/entity/file.dart b/lib/entity/file.dart index d30bcd0a..e35a020e 100644 --- a/lib/entity/file.dart +++ b/lib/entity/file.dart @@ -9,9 +9,7 @@ import 'package:nc_photos/or_null.dart'; import 'package:nc_photos/string_extension.dart'; int compareFileDateTimeDescending(File x, File y) { - final xDate = x.metadata?.exif?.dateTimeOriginal ?? x.lastModified; - final yDate = y.metadata?.exif?.dateTimeOriginal ?? y.lastModified; - final tmp = yDate.compareTo(xDate); + final tmp = y.bestDateTime.compareTo(x.bestDateTime); if (tmp != 0) { return tmp; } else { @@ -394,6 +392,12 @@ class File with EquatableMixin { final bool isArchived; } +extension FileExtension on File { + DateTime get bestDateTime { + return metadata?.exif?.dateTimeOriginal ?? lastModified; + } +} + class FileRepo { FileRepo(this.dataSrc); diff --git a/lib/widget/home_albums.dart b/lib/widget/home_albums.dart index df2d2efc..11c48d00 100644 --- a/lib/widget/home_albums.dart +++ b/lib/widget/home_albums.dart @@ -392,9 +392,7 @@ class _HomeAlbumsState extends State { .where((element) => file_util.isSupportedFormat(element)) .sorted(compareFileDateTimeDescending) .first; - return Tuple2( - lastItem.metadata?.exif?.dateTimeOriginal ?? lastItem.lastModified, - e); + return Tuple2(lastItem.bestDateTime, e); } catch (_) { return Tuple2(e.lastUpdated, e); } diff --git a/lib/widget/home_photos.dart b/lib/widget/home_photos.dart index 44dd82a3..cbd5adea 100644 --- a/lib/widget/home_photos.dart +++ b/lib/widget/home_photos.dart @@ -455,7 +455,7 @@ class _HomePhotosState extends State final f = _backingFiles[i]; String newDateStr; - final date = f.metadata?.exif?.dateTimeOriginal ?? f.lastModified; + final date = f.bestDateTime; if (date == null) { newDateStr = ""; } else if (_thumbZoomLevel >= 0) { diff --git a/lib/widget/viewer_detail_pane.dart b/lib/widget/viewer_detail_pane.dart index 24a6d4af..555843f7 100644 --- a/lib/widget/viewer_detail_pane.dart +++ b/lib/widget/viewer_detail_pane.dart @@ -59,7 +59,7 @@ class _ViewerDetailPaneState extends State { @override build(BuildContext context) { - final dateTime = (_dateTime ?? widget.file.lastModified).toLocal(); + final dateTime = widget.file.bestDateTime.toLocal(); final dateStr = DateFormat(DateFormat.YEAR_ABBR_MONTH_DAY).format(dateTime); final timeStr = DateFormat(DateFormat.HOUR_MINUTE).format(dateTime); @@ -265,11 +265,6 @@ class _ViewerDetailPaneState extends State { void _updateMetadataExif(Exif exif) { _log.info("[_updateMetadataExif] $exif"); - if (exif.dateTimeOriginal != null) { - setState(() { - _dateTime = exif.dateTimeOriginal; - }); - } if (exif.make != null && exif.model != null) { setState(() { _model = "${exif.make} ${exif.model}"; @@ -362,7 +357,6 @@ class _ViewerDetailPaneState extends State { int _width; int _height; // EXIF data - DateTime _dateTime; String _model; double _fNumber; String _exposureTime;