feat(mobile): remote asset & exif sync (#18756)

* feat(mobile): remote asset & exif sync

* add visibility and update constraints

* chore: generate drifts

* update ids to be strings

* clear remote entities on logout

* reset sqlite button

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
shenlong 2025-06-03 21:31:50 +05:30 committed by GitHub
parent edae9c2d3d
commit b4a798c39f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 3196 additions and 302 deletions

View file

@ -1,9 +1,17 @@
part of 'base_asset.model.dart';
enum AssetVisibility {
timeline,
hidden,
archive,
locked,
}
// Model for an asset stored in the server
class Asset extends BaseAsset {
final String id;
final String? localId;
final AssetVisibility visibility;
const Asset({
required this.id,
@ -17,6 +25,7 @@ class Asset extends BaseAsset {
super.height,
super.durationInSeconds,
super.isFavorite = false,
this.visibility = AssetVisibility.timeline,
});
@override
@ -32,6 +41,7 @@ class Asset extends BaseAsset {
durationInSeconds: ${durationInSeconds ?? "<NA>"},
localId: ${localId ?? "<NA>"},
isFavorite: $isFavorite,
visibility: $visibility,
}''';
}
@ -39,9 +49,13 @@ class Asset extends BaseAsset {
bool operator ==(Object other) {
if (other is! Asset) return false;
if (identical(this, other)) return true;
return super == other && id == other.id && localId == other.localId;
return super == other &&
id == other.id &&
localId == other.localId &&
visibility == other.visibility;
}
@override
int get hashCode => super.hashCode ^ id.hashCode ^ localId.hashCode;
int get hashCode =>
super.hashCode ^ id.hashCode ^ localId.hashCode ^ visibility.hashCode;
}