From 416e30ede22f16f6de1fb04b5b9fcfa5399a9e0d Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 12 Mar 2023 08:43:09 -0500 Subject: [PATCH] fix(mobile): Sorted shared album and added share user doesn't reflect change in album view (#1955) * fix: sorted shared album * Added TODO comment for tomorrow work * update album shared property after adding user --------- Co-authored-by: Fynn Petersen-Frey --- .../album/providers/shared_album.provider.dart | 12 ++++++++++-- mobile/lib/modules/album/services/album.service.dart | 6 +++++- mobile/lib/shared/services/sync.service.dart | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/mobile/lib/modules/album/providers/shared_album.provider.dart b/mobile/lib/modules/album/providers/shared_album.provider.dart index a1c83a95c2..24a57a993d 100644 --- a/mobile/lib/modules/album/providers/shared_album.provider.dart +++ b/mobile/lib/modules/album/providers/shared_album.provider.dart @@ -37,12 +37,20 @@ class SharedAlbumNotifier extends StateNotifier> { } Future getAllSharedAlbums() async { - var albums = await _db.albums.filter().sharedEqualTo(true).findAll(); + var albums = await _db.albums + .filter() + .sharedEqualTo(true) + .sortByCreatedAtDesc() + .findAll(); if (!const ListEquality().equals(albums, state)) { state = albums; } await _albumService.refreshRemoteAlbums(isShared: true); - albums = await _db.albums.filter().sharedEqualTo(true).findAll(); + albums = await _db.albums + .filter() + .sharedEqualTo(true) + .sortByCreatedAtDesc() + .findAll(); if (!const ListEquality().equals(albums, state)) { state = albums; } diff --git a/mobile/lib/modules/album/services/album.service.dart b/mobile/lib/modules/album/services/album.service.dart index 594bc163a9..a846c50dd1 100644 --- a/mobile/lib/modules/album/services/album.service.dart +++ b/mobile/lib/modules/album/services/album.service.dart @@ -211,7 +211,11 @@ class AlbumService { if (result != null) { album.sharedUsers .addAll((await _db.users.getAllById(sharedUserIds)).cast()); - await _db.writeTxn(() => album.sharedUsers.save()); + album.shared = result.shared; + await _db.writeTxn(() async { + await _db.albums.put(album); + await album.sharedUsers.save(); + }); return true; } } catch (e) { diff --git a/mobile/lib/shared/services/sync.service.dart b/mobile/lib/shared/services/sync.service.dart index 57d565cfce..efe3856385 100644 --- a/mobile/lib/shared/services/sync.service.dart +++ b/mobile/lib/shared/services/sync.service.dart @@ -501,7 +501,6 @@ Triple, List, List> _diffAssets( (!a.isLocal && b.isLocal) || (!a.isRemote && b.isRemote)) { toUpdate.add(b.updateFromDb(a)); - debugPrint("both"); return true; } return false; @@ -554,5 +553,6 @@ bool _hasAlbumResponseDtoChanged(AlbumResponseDto dto, Album a) { dto.albumName != a.name || dto.albumThumbnailAssetId != a.thumbnail.value?.remoteId || dto.shared != a.shared || + dto.sharedUsers.length != a.sharedUsers.length || DateTime.parse(dto.updatedAt).toUtc() != a.modifiedAt.toUtc(); }