[mob][fix] Gracefully handle time value in double instead of int

This commit is contained in:
Neeraj Gupta 2024-05-23 13:41:10 +05:30
parent cc7a516eba
commit da4aa1b1b2
2 changed files with 17 additions and 2 deletions

View file

@ -13,6 +13,7 @@ import "package:photos/service_locator.dart";
import 'package:photos/utils/date_time_util.dart'; import 'package:photos/utils/date_time_util.dart';
import 'package:photos/utils/exif_util.dart'; import 'package:photos/utils/exif_util.dart';
import 'package:photos/utils/file_uploader_util.dart'; import 'package:photos/utils/file_uploader_util.dart';
import "package:photos/utils/parse.dart";
//Todo: files with no location data have lat and long set to 0.0. This should ideally be null. //Todo: files with no location data have lat and long set to 0.0. This should ideally be null.
class EnteFile { class EnteFile {
@ -131,8 +132,9 @@ class EnteFile {
localID = metadata["localID"]; localID = metadata["localID"];
title = metadata["title"]; title = metadata["title"];
deviceFolder = metadata["deviceFolder"]; deviceFolder = metadata["deviceFolder"];
creationTime = metadata["creationTime"] ?? 0; creationTime = parseKeyAsInt(metadata, "creationTime", 0);
modificationTime = metadata["modificationTime"] ?? creationTime; modificationTime =
parseKeyAsInt(metadata, "modificationTime", creationTime!);
final latitude = double.tryParse(metadata["latitude"].toString()); final latitude = double.tryParse(metadata["latitude"].toString());
final longitude = double.tryParse(metadata["longitude"].toString()); final longitude = double.tryParse(metadata["longitude"].toString());
if (latitude == null || longitude == null) { if (latitude == null || longitude == null) {

View file

@ -0,0 +1,13 @@
import "package:flutter/foundation.dart";
int parseKeyAsInt(Map<String, dynamic> map, String key, int defaultValue) {
try {
return map[key] ?? defaultValue;
} catch (e) {
if (kDebugMode) {
print("Error parsing key $key as int: $e");
}
final double val = map[key] as double;
return val.toInt();
}
}