drift(mobile): drift auth user sync

This commit is contained in:
wuzihao051119
2025-07-25 12:28:02 +08:00
parent ad65e9011a
commit 4677ceb03c
69 changed files with 9116 additions and 1206 deletions
@@ -95,7 +95,7 @@ class AlbumRepository extends DatabaseRepository {
}
Future<void> removeUsers(Album album, List<UserDto> users) => txn(
() => album.sharedUsers.update(unlink: users.map(entity.User.fromDto)),
() => album.sharedUsers.update(unlink: users.map(entity.IsarUser.fromDto)),
);
Future<void> addAssets(Album album, List<Asset> assets) => txn(() => album.assets.update(link: assets));
@@ -109,8 +109,9 @@ class AlbumRepository extends DatabaseRepository {
return album;
}
Future<void> addUsers(Album album, List<UserDto> users) =>
txn(() => album.sharedUsers.update(link: users.map(entity.User.fromDto)));
Future<void> addUsers(Album album, List<UserDto> users) => txn(
() => album.sharedUsers.update(link: users.map(entity.IsarUser.fromDto)),
);
Future<void> deleteAllLocal() => txn(() => db.albums.where().localIdIsNotNull().deleteAll());
@@ -177,10 +177,10 @@ class AlbumApiRepository extends ApiRepository {
sortOrder: dto.order == AssetOrder.asc ? SortOrder.asc : SortOrder.desc,
);
album.remoteAssetCount = dto.assetCount;
album.owner.value = entity.User.fromDto(UserConverter.fromSimpleUserDto(dto.owner));
album.owner.value = entity.IsarUser.fromDto(UserConverter.fromSimpleUserDto(dto.owner));
album.remoteThumbnailAssetId = dto.albumThumbnailAssetId;
final users = dto.albumUsers.map((albumUser) => UserConverter.fromSimpleUserDto(albumUser.user));
album.sharedUsers.addAll(users.map(entity.User.fromDto));
album.sharedUsers.addAll(users.map(entity.IsarUser.fromDto));
final assets = dto.assets.map(Asset.remote).toList();
album.assets.addAll(assets);
@@ -99,7 +99,7 @@ class AlbumMediaRepository {
shared: false,
activityEnabled: false,
);
album.owner.value = User.fromDto(Store.get(StoreKey.currentUser));
album.owner.value = IsarUser.fromDto(Store.get(StoreKey.currentUser));
album.localId = assetPathEntity.id;
album.isAll = assetPathEntity.isAll;
return album;
+2 -1
View File
@@ -43,6 +43,7 @@ class AuthRepository extends DatabaseRepository {
_drift.remoteAlbumEntity.deleteAll(),
_drift.remoteAssetEntity.deleteAll(),
_drift.userEntity.deleteAll(),
_drift.authUserEntity.deleteAll(),
]);
return db.writeTxn(() {
@@ -51,7 +52,7 @@ class AuthRepository extends DatabaseRepository {
db.exifInfos.clear(),
db.albums.clear(),
db.eTags.clear(),
db.users.clear(),
db.isarUsers.clear(),
]);
});
}
@@ -13,22 +13,24 @@ class PartnerRepository extends DatabaseRepository {
const PartnerRepository(super.db);
Future<List<UserDto>> getSharedBy() async {
return (await db.users.filter().isPartnerSharedByEqualTo(true).sortById().findAll()).map((u) => u.toDto()).toList();
return (await db.isarUsers.filter().isPartnerSharedByEqualTo(true).sortById().findAll())
.map((u) => u.toDto())
.toList();
}
Future<List<UserDto>> getSharedWith() async {
return (await db.users.filter().isPartnerSharedWithEqualTo(true).sortById().findAll())
return (await db.isarUsers.filter().isPartnerSharedWithEqualTo(true).sortById().findAll())
.map((u) => u.toDto())
.toList();
}
Stream<List<UserDto>> watchSharedBy() {
return (db.users.filter().isPartnerSharedByEqualTo(true).sortById().watch())
return (db.isarUsers.filter().isPartnerSharedByEqualTo(true).sortById().watch())
.map((users) => users.map((u) => u.toDto()).toList());
}
Stream<List<UserDto>> watchSharedWith() {
return (db.users.filter().isPartnerSharedWithEqualTo(true).sortById().watch())
return (db.isarUsers.filter().isPartnerSharedWithEqualTo(true).sortById().watch())
.map((users) => users.map((u) => u.toDto()).toList());
}
}
@@ -15,11 +15,11 @@ class TimelineRepository extends DatabaseRepository {
const TimelineRepository(super.db);
Future<List<String>> getTimelineUserIds(String id) {
return db.users.filter().inTimelineEqualTo(true).or().idEqualTo(id).idProperty().findAll();
return db.isarUsers.filter().inTimelineEqualTo(true).or().idEqualTo(id).idProperty().findAll();
}
Stream<List<String>> watchTimelineUsers(String id) {
return db.users.filter().inTimelineEqualTo(true).or().idEqualTo(id).idProperty().watch();
return db.isarUsers.filter().inTimelineEqualTo(true).or().idEqualTo(id).idProperty().watch();
}
Stream<RenderList> watchArchiveTimeline(String userId) {