From fea5e6783cc4ed76d0fb5bb636cfef7c49042ed5 Mon Sep 17 00:00:00 2001 From: shenlong <139912620+shenlong-tanwen@users.noreply.github.com> Date: Mon, 29 Sep 2025 20:23:40 +0530 Subject: [PATCH] fix: merged timeline orderby localtime (#22371) * chore: refactor dateFmt to truncateDate * fix: merged timeline orderby localtime --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> --- mise.toml | 7 +++++- .../drift_schemas/main/drift_schema_v12.json | Bin 0 -> 37513 bytes .../domain/services/local_sync.service.dart | 6 ++--- .../repositories/db.repository.dart | 21 +++++++++++++++++- .../repositories/db.repository.steps.dart | Bin 138040 -> 148401 bytes .../repositories/timeline.repository.dart | 16 ++++++------- mobile/lib/utils/datetime_helpers.dart | 4 ++-- mobile/test/drift/main/generated/schema.dart | Bin 1402 -> 1492 bytes .../test/drift/main/generated/schema_v12.dart | Bin 0 -> 233465 bytes 9 files changed, 39 insertions(+), 15 deletions(-) create mode 100644 mobile/drift_schemas/main/drift_schema_v12.json create mode 100644 mobile/test/drift/main/generated/schema_v12.dart diff --git a/mise.toml b/mise.toml index 51dc3b160..2f98f2e9d 100644 --- a/mise.toml +++ b/mise.toml @@ -315,7 +315,12 @@ run = [ alias = "mobile:codegen" description = "Execute build_runner to auto-generate dart code" dir = "mobile" -sources = ["pubspec.yaml", "build.yaml", "lib/**/*.dart"] +sources = [ + "pubspec.yaml", + "build.yaml", + "lib/**/*.dart", + "infrastructure/**/*.drift", +] outputs = { auto = true } run = "dart run build_runner build --delete-conflicting-outputs" diff --git a/mobile/drift_schemas/main/drift_schema_v12.json b/mobile/drift_schemas/main/drift_schema_v12.json new file mode 100644 index 0000000000000000000000000000000000000000..1c100ab37f86ea01fb9ce2b539ecfcaf6077c620 GIT binary patch literal 37513 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 literal 0 HcmV?d00001 diff --git a/mobile/lib/domain/services/local_sync.service.dart b/mobile/lib/domain/services/local_sync.service.dart index d333af748..ca356c80d 100644 --- a/mobile/lib/domain/services/local_sync.service.dart +++ b/mobile/lib/domain/services/local_sync.service.dart @@ -281,7 +281,7 @@ extension on Iterable { (e) => LocalAlbum( id: e.id, name: e.name, - updatedAt: tryFromSecondsSinceEpoch(e.updatedAt) ?? DateTime.now(), + updatedAt: tryFromSecondsSinceEpoch(e.updatedAt, isUtc: true) ?? DateTime.timestamp(), assetCount: e.assetCount, ), ).toList(); @@ -296,8 +296,8 @@ extension on Iterable { name: e.name, checksum: null, type: AssetType.values.elementAtOrNull(e.type) ?? AssetType.other, - createdAt: tryFromSecondsSinceEpoch(e.createdAt) ?? DateTime.now(), - updatedAt: tryFromSecondsSinceEpoch(e.updatedAt) ?? DateTime.now(), + createdAt: tryFromSecondsSinceEpoch(e.createdAt, isUtc: true) ?? DateTime.timestamp(), + updatedAt: tryFromSecondsSinceEpoch(e.updatedAt, isUtc: true) ?? DateTime.timestamp(), width: e.width, height: e.height, durationInSeconds: e.durationInSeconds, diff --git a/mobile/lib/infrastructure/repositories/db.repository.dart b/mobile/lib/infrastructure/repositories/db.repository.dart index 65d26d974..7291c3a97 100644 --- a/mobile/lib/infrastructure/repositories/db.repository.dart +++ b/mobile/lib/infrastructure/repositories/db.repository.dart @@ -93,7 +93,7 @@ class Drift extends $Drift implements IDatabaseRepository { } @override - int get schemaVersion => 11; + int get schemaVersion => 12; @override MigrationStrategy get migration => MigrationStrategy( @@ -159,6 +159,25 @@ class Drift extends $Drift implements IDatabaseRepository { from10To11: (m, v11) async { await m.addColumn(v11.localAlbumAssetEntity, v11.localAlbumAssetEntity.marker_); }, + from11To12: (m, v12) async { + final localToUTCMapping = { + v12.localAssetEntity: [v12.localAssetEntity.createdAt, v12.localAssetEntity.updatedAt], + v12.localAlbumEntity: [v12.localAlbumEntity.updatedAt], + }; + + for (final entry in localToUTCMapping.entries) { + final table = entry.key; + await m.alterTable( + TableMigration( + table, + columnTransformer: { + for (final column in entry.value) + column: column.modify(const DateTimeModifier.utc()).strftime('%Y-%m-%dT%H:%M:%fZ'), + }, + ), + ); + } + }, ), ); diff --git a/mobile/lib/infrastructure/repositories/db.repository.steps.dart b/mobile/lib/infrastructure/repositories/db.repository.steps.dart index 7910d9fceed7a914be09c9312e154f72eae3ef34..c973cd6f13fcf35c63150c5f039497bfded3218b 100644 GIT binary patch delta 188 zcmdn7jbmdwXG06)7A8iX=}wOsg&B<|JI+*NG@KmBs0SqL8H=~eKVj5X+s??tB*r}b z5D$}?sG*TUadJj#Zlb0_T2X$kp2Xl$fl{orD@Ft05+ft A$N&HU diff --git a/mobile/lib/infrastructure/repositories/timeline.repository.dart b/mobile/lib/infrastructure/repositories/timeline.repository.dart index 033c146f9..14ffafa64 100644 --- a/mobile/lib/infrastructure/repositories/timeline.repository.dart +++ b/mobile/lib/infrastructure/repositories/timeline.repository.dart @@ -43,7 +43,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository { } return _db.mergedAssetDrift.mergedBucket(userIds: userIds, groupBy: groupBy.index).map((row) { - final date = row.bucketDate.dateFmt(groupBy); + final date = row.bucketDate.truncateDate(groupBy); return TimeBucket(date: date, assetCount: row.assetCount); }).watch(); } @@ -123,7 +123,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository { ..orderBy([OrderingTerm.desc(dateExp)]); return query.map((row) { - final timeline = row.read(dateExp)!.dateFmt(groupBy); + final timeline = row.read(dateExp)!.truncateDate(groupBy); final assetCount = row.read(assetCountExp)!; return TimeBucket(date: timeline, assetCount: assetCount); }).watch(); @@ -199,7 +199,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository { } return query.map((row) { - final timeline = row.read(dateExp)!.dateFmt(groupBy); + final timeline = row.read(dateExp)!.truncateDate(groupBy); final assetCount = row.read(assetCountExp)!; return TimeBucket(date: timeline, assetCount: assetCount); }).watch(); @@ -328,7 +328,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository { ..orderBy([OrderingTerm.desc(dateExp)]); return query.map((row) { - final timeline = row.read(dateExp)!.dateFmt(groupBy); + final timeline = row.read(dateExp)!.truncateDate(groupBy); final assetCount = row.read(assetCountExp)!; return TimeBucket(date: timeline, assetCount: assetCount); }).watch(); @@ -399,7 +399,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository { ..orderBy([OrderingTerm.desc(dateExp)]); return query.map((row) { - final timeline = row.read(dateExp)!.dateFmt(groupBy); + final timeline = row.read(dateExp)!.truncateDate(groupBy); final assetCount = row.read(assetCountExp)!; return TimeBucket(date: timeline, assetCount: assetCount); }).watch(); @@ -463,7 +463,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository { ..orderBy([OrderingTerm.desc(dateExp)]); return query.map((row) { - final timeline = row.read(dateExp)!.dateFmt(groupBy); + final timeline = row.read(dateExp)!.truncateDate(groupBy); final assetCount = row.read(assetCountExp)!; return TimeBucket(date: timeline, assetCount: assetCount); }).watch(); @@ -520,7 +520,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository { ..orderBy([OrderingTerm.desc(dateExp)]); return query.map((row) { - final timeline = row.read(dateExp)!.dateFmt(groupBy); + final timeline = row.read(dateExp)!.truncateDate(groupBy); final assetCount = row.read(assetCountExp)!; return TimeBucket(date: timeline, assetCount: assetCount); }).watch(); @@ -586,7 +586,7 @@ extension on Expression { } extension on String { - DateTime dateFmt(GroupAssetsBy groupBy) { + DateTime truncateDate(GroupAssetsBy groupBy) { final format = switch (groupBy) { GroupAssetsBy.day || GroupAssetsBy.auto => "y-M-d", GroupAssetsBy.month => "y-M", diff --git a/mobile/lib/utils/datetime_helpers.dart b/mobile/lib/utils/datetime_helpers.dart index 829f71c37..c13c8ca31 100644 --- a/mobile/lib/utils/datetime_helpers.dart +++ b/mobile/lib/utils/datetime_helpers.dart @@ -1,7 +1,7 @@ const int _maxMillisecondsSinceEpoch = 8640000000000000; // 275760-09-13 const int _minMillisecondsSinceEpoch = -62135596800000; // 0001-01-01 -DateTime? tryFromSecondsSinceEpoch(int? secondsSinceEpoch) { +DateTime? tryFromSecondsSinceEpoch(int? secondsSinceEpoch, {bool isUtc = false}) { if (secondsSinceEpoch == null) { return null; } @@ -12,7 +12,7 @@ DateTime? tryFromSecondsSinceEpoch(int? secondsSinceEpoch) { } try { - return DateTime.fromMillisecondsSinceEpoch(milliSeconds); + return DateTime.fromMillisecondsSinceEpoch(milliSeconds, isUtc: isUtc); } catch (e) { return null; } diff --git a/mobile/test/drift/main/generated/schema.dart b/mobile/test/drift/main/generated/schema.dart index 1d78a44317628d54e5898055c53540662b1c5cff..073a86078f5538f3962f753d2ec53a6f28cbcae3 100644 GIT binary patch delta 86 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