fix(mobile): do not crash on malformed asset duration (#1921)

* fix(mobile): do not crash on malformed asset duration

* add unit test
This commit is contained in:
Fynn Petersen-Frey
2023-03-06 16:27:01 +01:00
committed by GitHub
parent f52e076cb3
commit 9ac087c59c
3 changed files with 29 additions and 5 deletions

View File

@@ -19,7 +19,8 @@ class Asset {
fileCreatedAt = DateTime.parse(remote.fileCreatedAt).toUtc(),
fileModifiedAt = DateTime.parse(remote.fileModifiedAt).toUtc(),
updatedAt = DateTime.parse(remote.updatedAt).toUtc(),
durationInSeconds = remote.duration.toDuration().inSeconds,
// use -1 as fallback duration (to not mix it up with non-video assets correctly having duration=0)
durationInSeconds = remote.duration.toDuration()?.inSeconds ?? -1,
fileName = p.basename(remote.originalPath),
height = remote.exifInfo?.exifImageHeight?.toInt(),
width = remote.exifInfo?.exifImageWidth?.toInt(),

View File

@@ -1,8 +1,13 @@
extension DurationExtension on String {
Duration toDuration() {
final parts =
split(':').map((e) => double.parse(e).toInt()).toList(growable: false);
return Duration(hours: parts[0], minutes: parts[1], seconds: parts[2]);
Duration? toDuration() {
try {
final parts = split(':')
.map((e) => double.parse(e).toInt())
.toList(growable: false);
return Duration(hours: parts[0], minutes: parts[1], seconds: parts[2]);
} catch (e) {
return null;
}
}
double toDouble() {