Try to parse create timestamp from file name when unavailable

This commit is contained in:
Vishnu Mohandas 2020-05-06 02:12:21 +05:30
parent b00c6db00c
commit 1279ccbf3d
2 changed files with 17 additions and 4 deletions

View file

@ -3,6 +3,7 @@ import 'dart:typed_data';
import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:photo_manager/photo_manager.dart';
import 'package:path/path.dart';
import 'package:logging/logging.dart';
class Photo {
int generatedId;
@ -29,9 +30,19 @@ class Photo {
photo.localId = asset.id;
photo.title = asset.title;
photo.pathName = pathEntity.name;
photo.createTimestamp = asset.createDateTime.microsecondsSinceEpoch == 0
? asset.modifiedDateTime.microsecondsSinceEpoch
: asset.createDateTime.microsecondsSinceEpoch;
photo.createTimestamp = asset.createDateTime.microsecondsSinceEpoch;
if (photo.createTimestamp == 0) {
try {
final parsedDateTime = DateTime.parse(
basenameWithoutExtension(photo.title)
.replaceAll("IMG_", "")
.replaceAll("DCIM_", "")
.replaceAll("_", " "));
photo.createTimestamp = parsedDateTime.microsecondsSinceEpoch;
} catch (e) {
photo.createTimestamp = asset.modifiedDateTime.microsecondsSinceEpoch;
}
}
return photo;
}

View file

@ -1,5 +1,6 @@
import 'dart:async';
import 'dart:io';
import 'dart:math';
import 'package:logging/logging.dart';
import 'package:photos/core/event_bus.dart';
@ -57,7 +58,8 @@ class PhotoSyncManager {
// "Recents" contain duplicate information on Android
var assetList = await pathEntity.assetList;
for (AssetEntity entity in assetList) {
if (entity.modifiedDateTime.microsecondsSinceEpoch >
if (max(entity.createDateTime.microsecondsSinceEpoch,
entity.modifiedDateTime.microsecondsSinceEpoch) >
lastDBUpdateTimestamp) {
try {
photos.add(await Photo.fromAsset(pathEntity, entity));