From da4aa1b1b2c4e7ab38bc4bc33379747ec1f8ef6c Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Thu, 23 May 2024 13:41:10 +0530 Subject: [PATCH] [mob][fix] Gracefully handle time value in double instead of int --- mobile/lib/models/file/file.dart | 6 ++++-- mobile/lib/utils/parse.dart | 13 +++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 mobile/lib/utils/parse.dart diff --git a/mobile/lib/models/file/file.dart b/mobile/lib/models/file/file.dart index 9df25bb05..4a7cf0a42 100644 --- a/mobile/lib/models/file/file.dart +++ b/mobile/lib/models/file/file.dart @@ -13,6 +13,7 @@ import "package:photos/service_locator.dart"; import 'package:photos/utils/date_time_util.dart'; import 'package:photos/utils/exif_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. class EnteFile { @@ -131,8 +132,9 @@ class EnteFile { localID = metadata["localID"]; title = metadata["title"]; deviceFolder = metadata["deviceFolder"]; - creationTime = metadata["creationTime"] ?? 0; - modificationTime = metadata["modificationTime"] ?? creationTime; + creationTime = parseKeyAsInt(metadata, "creationTime", 0); + modificationTime = + parseKeyAsInt(metadata, "modificationTime", creationTime!); final latitude = double.tryParse(metadata["latitude"].toString()); final longitude = double.tryParse(metadata["longitude"].toString()); if (latitude == null || longitude == null) { diff --git a/mobile/lib/utils/parse.dart b/mobile/lib/utils/parse.dart new file mode 100644 index 000000000..cdb0373fb --- /dev/null +++ b/mobile/lib/utils/parse.dart @@ -0,0 +1,13 @@ +import "package:flutter/foundation.dart"; + +int parseKeyAsInt(Map 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(); + } +}