fix: sync is_favorite from native (#20412)

* feat: sync is_favorite from native

* handle favorite during upload

* Update mobile/ios/Runner/Sync/MessagesImpl.swift

Co-authored-by: Alex <alex.tran1502@gmail.com>

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
This commit is contained in:
shenlong
2025-07-30 08:27:04 +05:30
committed by GitHub
parent 07ed060c32
commit 268b411a6f
9 changed files with 30 additions and 8 deletions
@@ -312,6 +312,7 @@ extension on Iterable<PlatformAsset> {
height: e.height,
durationInSeconds: e.durationInSeconds,
orientation: e.orientation,
isFavorite: e.isFavorite,
),
).toList();
}
@@ -236,6 +236,7 @@ class DriftLocalAlbumRepository extends DriftDatabaseRepository {
id: asset.id,
orientation: Value(asset.orientation),
checksum: const Value(null),
isFavorite: Value(asset.isFavorite),
);
batch.insert<$LocalAssetEntityTable, LocalAssetEntityData>(
_db.localAssetEntity,
+5 -1
View File
@@ -40,6 +40,7 @@ class PlatformAsset {
this.height,
required this.durationInSeconds,
required this.orientation,
required this.isFavorite,
});
String id;
@@ -60,8 +61,10 @@ class PlatformAsset {
int orientation;
bool isFavorite;
List<Object?> _toList() {
return <Object?>[id, name, type, createdAt, updatedAt, width, height, durationInSeconds, orientation];
return <Object?>[id, name, type, createdAt, updatedAt, width, height, durationInSeconds, orientation, isFavorite];
}
Object encode() {
@@ -80,6 +83,7 @@ class PlatformAsset {
height: result[6] as int?,
durationInSeconds: result[7]! as int,
orientation: result[8]! as int,
isFavorite: result[9]! as bool,
);
}
+4 -1
View File
@@ -247,6 +247,7 @@ class UploadService {
metadata: metadata,
group: group,
priority: priority,
isFavorite: asset.isFavorite,
);
}
@@ -270,6 +271,7 @@ class UploadService {
fields: fields,
group: kBackupLivePhotoGroup,
priority: 0, // Highest priority to get upload immediately
isFavorite: asset.isFavorite,
);
}
@@ -281,6 +283,7 @@ class UploadService {
String? deviceAssetId,
String? metadata,
int? priority,
bool? isFavorite,
}) async {
final serverEndpoint = Store.get(StoreKey.serverEndpoint);
final url = Uri.parse('$serverEndpoint/assets').toString();
@@ -297,7 +300,7 @@ class UploadService {
'deviceId': deviceId,
'fileCreatedAt': fileCreatedAt.toUtc().toIso8601String(),
'fileModifiedAt': fileModifiedAt.toUtc().toIso8601String(),
'isFavorite': 'false',
'isFavorite': isFavorite?.toString() ?? 'false',
'duration': '0',
if (fields != null) ...fields,
};