mirror of
https://github.com/immich-app/immich.git
synced 2025-03-18 02:31:28 -05:00
Use owner instead of shared flag when fetching albums.
This commit is contained in:
parent
e35465ccf3
commit
a42911b290
4 changed files with 34 additions and 8 deletions
|
@ -13,6 +13,7 @@ abstract interface class IAlbumRepository implements IDatabaseRepository {
|
|||
String name, {
|
||||
bool? shared,
|
||||
bool? remote,
|
||||
bool? owner,
|
||||
});
|
||||
|
||||
Future<List<Album>> getAll({
|
||||
|
|
|
@ -46,8 +46,18 @@ class AlbumNotifier extends StateNotifier<List<Album>> {
|
|||
) =>
|
||||
_albumService.createAlbum(albumTitle, assets, []);
|
||||
|
||||
Future<Album?> getAlbumByName(String albumName, {bool? remote, bool? shared}) =>
|
||||
_albumService.getAlbumByName(albumName, remote: remote, shared: shared);
|
||||
Future<Album?> getAlbumByName(
|
||||
String albumName, {
|
||||
bool? remote,
|
||||
bool? shared,
|
||||
bool? owner,
|
||||
}) =>
|
||||
_albumService.getAlbumByName(
|
||||
albumName,
|
||||
remote: remote,
|
||||
shared: shared,
|
||||
owner: owner,
|
||||
);
|
||||
|
||||
/// Create an album on the server with the same name as the selected album for backup
|
||||
/// First this will check if the album already exists on the server with name
|
||||
|
@ -55,7 +65,7 @@ class AlbumNotifier extends StateNotifier<List<Album>> {
|
|||
Future<void> createSyncAlbum(
|
||||
String albumName,
|
||||
) async {
|
||||
final album = await getAlbumByName(albumName, remote: true, shared: false);
|
||||
final album = await getAlbumByName(albumName, remote: true, owner: true);
|
||||
if (album != null) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -34,11 +34,16 @@ class AlbumRepository extends DatabaseRepository implements IAlbumRepository {
|
|||
Future<Album> create(Album album) => txn(() => db.albums.store(album));
|
||||
|
||||
@override
|
||||
Future<Album?> getByName(String name, {bool? shared, bool? remote}) {
|
||||
Future<Album?> getByName(String name, {bool? shared, bool? remote, bool? owner}) {
|
||||
var query = db.albums.filter().nameEqualTo(name);
|
||||
if (shared != null) {
|
||||
query = query.sharedEqualTo(shared);
|
||||
}
|
||||
if (owner == true) {
|
||||
query = query.owner((q) => q.isarIdEqualTo(Store.get(StoreKey.currentUser).isarId));
|
||||
} else if (owner == false) {
|
||||
query = query.owner((q) => q.not().isarIdEqualTo(Store.get(StoreKey.currentUser).isarId));
|
||||
}
|
||||
if (remote == true) {
|
||||
query = query.localIdIsNull();
|
||||
} else if (remote == false) {
|
||||
|
|
|
@ -212,7 +212,7 @@ class AlbumService {
|
|||
for (int round = 0;; round++) {
|
||||
final proposedName = "$baseName${round == 0 ? "" : " ($round)"}";
|
||||
|
||||
if (null == await _albumRepository.getByName(proposedName)) {
|
||||
if (null == await _albumRepository.getByName(proposedName, owner: true)) {
|
||||
return proposedName;
|
||||
}
|
||||
}
|
||||
|
@ -408,8 +408,18 @@ class AlbumService {
|
|||
}
|
||||
}
|
||||
|
||||
Future<Album?> getAlbumByName(String name, {bool? remote, bool? shared}) =>
|
||||
_albumRepository.getByName(name, remote: remote, shared: shared);
|
||||
Future<Album?> getAlbumByName(
|
||||
String name, {
|
||||
bool? remote,
|
||||
bool? shared,
|
||||
bool? owner,
|
||||
}) =>
|
||||
_albumRepository.getByName(
|
||||
name,
|
||||
remote: remote,
|
||||
shared: shared,
|
||||
owner: owner,
|
||||
);
|
||||
|
||||
///
|
||||
/// Add the uploaded asset to the selected albums
|
||||
|
@ -419,7 +429,7 @@ class AlbumService {
|
|||
List<String> assetIds,
|
||||
) async {
|
||||
for (final albumName in albumNames) {
|
||||
Album? album = await getAlbumByName(albumName, remote: true, shared: false);
|
||||
Album? album = await getAlbumByName(albumName, remote: true, owner: true);
|
||||
album ??= await createAlbum(albumName, []);
|
||||
if (album != null && album.remoteId != null) {
|
||||
await _albumApiRepository.addAssets(album.remoteId!, assetIds);
|
||||
|
|
Loading…
Add table
Reference in a new issue