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';
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);

View file

@ -392,9 +392,7 @@ class _HomeAlbumsState extends State<HomeAlbums> {
.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);
}

View file

@ -455,7 +455,7 @@ class _HomePhotosState extends State<HomePhotos>
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) {

View file

@ -59,7 +59,7 @@ class _ViewerDetailPaneState extends State<ViewerDetailPane> {
@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<ViewerDetailPane> {
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<ViewerDetailPane> {
int _width;
int _height;
// EXIF data
DateTime _dateTime;
String _model;
double _fNumber;
String _exposureTime;