Simplify File datetime access

This commit is contained in:
Ming Ming 2021-06-20 19:40:28 +08:00
parent 1b2d36bcab
commit 9c08e5a635
4 changed files with 10 additions and 14 deletions

View file

@ -9,9 +9,7 @@ import 'package:nc_photos/or_null.dart';
import 'package:nc_photos/string_extension.dart'; import 'package:nc_photos/string_extension.dart';
int compareFileDateTimeDescending(File x, File y) { int compareFileDateTimeDescending(File x, File y) {
final xDate = x.metadata?.exif?.dateTimeOriginal ?? x.lastModified; final tmp = y.bestDateTime.compareTo(x.bestDateTime);
final yDate = y.metadata?.exif?.dateTimeOriginal ?? y.lastModified;
final tmp = yDate.compareTo(xDate);
if (tmp != 0) { if (tmp != 0) {
return tmp; return tmp;
} else { } else {
@ -394,6 +392,12 @@ class File with EquatableMixin {
final bool isArchived; final bool isArchived;
} }
extension FileExtension on File {
DateTime get bestDateTime {
return metadata?.exif?.dateTimeOriginal ?? lastModified;
}
}
class FileRepo { class FileRepo {
FileRepo(this.dataSrc); FileRepo(this.dataSrc);

View file

@ -392,9 +392,7 @@ class _HomeAlbumsState extends State<HomeAlbums> {
.where((element) => file_util.isSupportedFormat(element)) .where((element) => file_util.isSupportedFormat(element))
.sorted(compareFileDateTimeDescending) .sorted(compareFileDateTimeDescending)
.first; .first;
return Tuple2( return Tuple2(lastItem.bestDateTime, e);
lastItem.metadata?.exif?.dateTimeOriginal ?? lastItem.lastModified,
e);
} catch (_) { } catch (_) {
return Tuple2(e.lastUpdated, e); return Tuple2(e.lastUpdated, e);
} }

View file

@ -455,7 +455,7 @@ class _HomePhotosState extends State<HomePhotos>
final f = _backingFiles[i]; final f = _backingFiles[i];
String newDateStr; String newDateStr;
final date = f.metadata?.exif?.dateTimeOriginal ?? f.lastModified; final date = f.bestDateTime;
if (date == null) { if (date == null) {
newDateStr = ""; newDateStr = "";
} else if (_thumbZoomLevel >= 0) { } else if (_thumbZoomLevel >= 0) {

View file

@ -59,7 +59,7 @@ class _ViewerDetailPaneState extends State<ViewerDetailPane> {
@override @override
build(BuildContext context) { 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 dateStr = DateFormat(DateFormat.YEAR_ABBR_MONTH_DAY).format(dateTime);
final timeStr = DateFormat(DateFormat.HOUR_MINUTE).format(dateTime); final timeStr = DateFormat(DateFormat.HOUR_MINUTE).format(dateTime);
@ -265,11 +265,6 @@ class _ViewerDetailPaneState extends State<ViewerDetailPane> {
void _updateMetadataExif(Exif exif) { void _updateMetadataExif(Exif exif) {
_log.info("[_updateMetadataExif] $exif"); _log.info("[_updateMetadataExif] $exif");
if (exif.dateTimeOriginal != null) {
setState(() {
_dateTime = exif.dateTimeOriginal;
});
}
if (exif.make != null && exif.model != null) { if (exif.make != null && exif.model != null) {
setState(() { setState(() {
_model = "${exif.make} ${exif.model}"; _model = "${exif.make} ${exif.model}";
@ -362,7 +357,6 @@ class _ViewerDetailPaneState extends State<ViewerDetailPane> {
int _width; int _width;
int _height; int _height;
// EXIF data // EXIF data
DateTime _dateTime;
String _model; String _model;
double _fNumber; double _fNumber;
String _exposureTime; String _exposureTime;