mirror of
https://github.com/immich-app/immich.git
synced 2025-07-09 03:04:16 -04:00
refactor(mobile): album_api.interface.dart (#19356)
This commit is contained in:
parent
42c2389eb5
commit
ff4d70e351
@ -1,42 +0,0 @@
|
|||||||
import 'package:immich_mobile/constants/enums.dart';
|
|
||||||
import 'package:immich_mobile/entities/album.entity.dart';
|
|
||||||
|
|
||||||
abstract interface class IAlbumApiRepository {
|
|
||||||
Future<Album> get(String id);
|
|
||||||
|
|
||||||
Future<List<Album>> getAll({bool? shared});
|
|
||||||
|
|
||||||
Future<Album> create(
|
|
||||||
String name, {
|
|
||||||
required Iterable<String> assetIds,
|
|
||||||
Iterable<String> sharedUserIds = const [],
|
|
||||||
});
|
|
||||||
|
|
||||||
Future<Album> update(
|
|
||||||
String albumId, {
|
|
||||||
String? name,
|
|
||||||
String? thumbnailAssetId,
|
|
||||||
String? description,
|
|
||||||
bool? activityEnabled,
|
|
||||||
SortOrder? sortOrder,
|
|
||||||
});
|
|
||||||
|
|
||||||
Future<void> delete(String albumId);
|
|
||||||
|
|
||||||
Future<({List<String> added, List<String> duplicates})> addAssets(
|
|
||||||
String albumId,
|
|
||||||
Iterable<String> assetIds,
|
|
||||||
);
|
|
||||||
|
|
||||||
Future<({List<String> removed, List<String> failed})> removeAssets(
|
|
||||||
String albumId,
|
|
||||||
Iterable<String> assetIds,
|
|
||||||
);
|
|
||||||
|
|
||||||
Future<Album> addUsers(
|
|
||||||
String albumId,
|
|
||||||
Iterable<String> userIds,
|
|
||||||
);
|
|
||||||
|
|
||||||
Future<void> removeUser(String albumId, {required String userId});
|
|
||||||
}
|
|
@ -5,7 +5,6 @@ import 'package:immich_mobile/entities/asset.entity.dart';
|
|||||||
import 'package:immich_mobile/infrastructure/entities/user.entity.dart'
|
import 'package:immich_mobile/infrastructure/entities/user.entity.dart'
|
||||||
as entity;
|
as entity;
|
||||||
import 'package:immich_mobile/infrastructure/utils/user.converter.dart';
|
import 'package:immich_mobile/infrastructure/utils/user.converter.dart';
|
||||||
import 'package:immich_mobile/interfaces/album_api.interface.dart';
|
|
||||||
import 'package:immich_mobile/providers/api.provider.dart';
|
import 'package:immich_mobile/providers/api.provider.dart';
|
||||||
import 'package:immich_mobile/repositories/api.repository.dart';
|
import 'package:immich_mobile/repositories/api.repository.dart';
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@ -14,24 +13,21 @@ final albumApiRepositoryProvider = Provider(
|
|||||||
(ref) => AlbumApiRepository(ref.watch(apiServiceProvider).albumsApi),
|
(ref) => AlbumApiRepository(ref.watch(apiServiceProvider).albumsApi),
|
||||||
);
|
);
|
||||||
|
|
||||||
class AlbumApiRepository extends ApiRepository implements IAlbumApiRepository {
|
class AlbumApiRepository extends ApiRepository {
|
||||||
final AlbumsApi _api;
|
final AlbumsApi _api;
|
||||||
|
|
||||||
AlbumApiRepository(this._api);
|
AlbumApiRepository(this._api);
|
||||||
|
|
||||||
@override
|
|
||||||
Future<Album> get(String id) async {
|
Future<Album> get(String id) async {
|
||||||
final dto = await checkNull(_api.getAlbumInfo(id));
|
final dto = await checkNull(_api.getAlbumInfo(id));
|
||||||
return _toAlbum(dto);
|
return _toAlbum(dto);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<List<Album>> getAll({bool? shared}) async {
|
Future<List<Album>> getAll({bool? shared}) async {
|
||||||
final dtos = await checkNull(_api.getAllAlbums(shared: shared));
|
final dtos = await checkNull(_api.getAllAlbums(shared: shared));
|
||||||
return dtos.map(_toAlbum).toList();
|
return dtos.map(_toAlbum).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<Album> create(
|
Future<Album> create(
|
||||||
String name, {
|
String name, {
|
||||||
required Iterable<String> assetIds,
|
required Iterable<String> assetIds,
|
||||||
@ -54,7 +50,6 @@ class AlbumApiRepository extends ApiRepository implements IAlbumApiRepository {
|
|||||||
return _toAlbum(responseDto);
|
return _toAlbum(responseDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<Album> update(
|
Future<Album> update(
|
||||||
String albumId, {
|
String albumId, {
|
||||||
String? name,
|
String? name,
|
||||||
@ -84,12 +79,10 @@ class AlbumApiRepository extends ApiRepository implements IAlbumApiRepository {
|
|||||||
return _toAlbum(response);
|
return _toAlbum(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<void> delete(String albumId) {
|
Future<void> delete(String albumId) {
|
||||||
return _api.deleteAlbum(albumId);
|
return _api.deleteAlbum(albumId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<({List<String> added, List<String> duplicates})> addAssets(
|
Future<({List<String> added, List<String> duplicates})> addAssets(
|
||||||
String albumId,
|
String albumId,
|
||||||
Iterable<String> assetIds,
|
Iterable<String> assetIds,
|
||||||
@ -114,7 +107,6 @@ class AlbumApiRepository extends ApiRepository implements IAlbumApiRepository {
|
|||||||
return (added: added, duplicates: duplicates);
|
return (added: added, duplicates: duplicates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<({List<String> removed, List<String> failed})> removeAssets(
|
Future<({List<String> removed, List<String> failed})> removeAssets(
|
||||||
String albumId,
|
String albumId,
|
||||||
Iterable<String> assetIds,
|
Iterable<String> assetIds,
|
||||||
@ -136,7 +128,6 @@ class AlbumApiRepository extends ApiRepository implements IAlbumApiRepository {
|
|||||||
return (removed: removed, failed: failed);
|
return (removed: removed, failed: failed);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<Album> addUsers(String albumId, Iterable<String> userIds) async {
|
Future<Album> addUsers(String albumId, Iterable<String> userIds) async {
|
||||||
final albumUsers =
|
final albumUsers =
|
||||||
userIds.map((userId) => AlbumUserAddDto(userId: userId)).toList();
|
userIds.map((userId) => AlbumUserAddDto(userId: userId)).toList();
|
||||||
@ -149,7 +140,6 @@ class AlbumApiRepository extends ApiRepository implements IAlbumApiRepository {
|
|||||||
return _toAlbum(response);
|
return _toAlbum(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<void> removeUser(String albumId, {required String userId}) {
|
Future<void> removeUser(String albumId, {required String userId}) {
|
||||||
return _api.removeUserFromAlbum(albumId, userId);
|
return _api.removeUserFromAlbum(albumId, userId);
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,6 @@ import 'package:immich_mobile/entities/backup_album.entity.dart';
|
|||||||
import 'package:immich_mobile/infrastructure/entities/user.entity.dart'
|
import 'package:immich_mobile/infrastructure/entities/user.entity.dart'
|
||||||
as entity;
|
as entity;
|
||||||
import 'package:immich_mobile/interfaces/album.interface.dart';
|
import 'package:immich_mobile/interfaces/album.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/album_api.interface.dart';
|
|
||||||
import 'package:immich_mobile/interfaces/album_media.interface.dart';
|
import 'package:immich_mobile/interfaces/album_media.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/asset.interface.dart';
|
import 'package:immich_mobile/interfaces/asset.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/backup_album.interface.dart';
|
import 'package:immich_mobile/interfaces/backup_album.interface.dart';
|
||||||
@ -52,7 +51,7 @@ class AlbumService {
|
|||||||
final IAssetRepository _assetRepository;
|
final IAssetRepository _assetRepository;
|
||||||
final IBackupAlbumRepository _backupAlbumRepository;
|
final IBackupAlbumRepository _backupAlbumRepository;
|
||||||
final IAlbumMediaRepository _albumMediaRepository;
|
final IAlbumMediaRepository _albumMediaRepository;
|
||||||
final IAlbumApiRepository _albumApiRepository;
|
final AlbumApiRepository _albumApiRepository;
|
||||||
final Logger _log = Logger('AlbumService');
|
final Logger _log = Logger('AlbumService');
|
||||||
Completer<bool> _localCompleter = Completer()..complete(false);
|
Completer<bool> _localCompleter = Completer()..complete(false);
|
||||||
Completer<bool> _remoteCompleter = Completer()..complete(false);
|
Completer<bool> _remoteCompleter = Completer()..complete(false);
|
||||||
|
@ -14,7 +14,6 @@ import 'package:immich_mobile/extensions/collection_extensions.dart';
|
|||||||
import 'package:immich_mobile/infrastructure/repositories/user.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/user.repository.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/user_api.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/user_api.repository.dart';
|
||||||
import 'package:immich_mobile/interfaces/album.interface.dart';
|
import 'package:immich_mobile/interfaces/album.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/album_api.interface.dart';
|
|
||||||
import 'package:immich_mobile/interfaces/album_media.interface.dart';
|
import 'package:immich_mobile/interfaces/album_media.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/asset.interface.dart';
|
import 'package:immich_mobile/interfaces/asset.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/etag.interface.dart';
|
import 'package:immich_mobile/interfaces/etag.interface.dart';
|
||||||
@ -65,7 +64,7 @@ class SyncService {
|
|||||||
final HashService _hashService;
|
final HashService _hashService;
|
||||||
final EntityService _entityService;
|
final EntityService _entityService;
|
||||||
final IAlbumMediaRepository _albumMediaRepository;
|
final IAlbumMediaRepository _albumMediaRepository;
|
||||||
final IAlbumApiRepository _albumApiRepository;
|
final AlbumApiRepository _albumApiRepository;
|
||||||
final IAlbumRepository _albumRepository;
|
final IAlbumRepository _albumRepository;
|
||||||
final IAssetRepository _assetRepository;
|
final IAssetRepository _assetRepository;
|
||||||
final IExifInfoRepository _exifInfoRepository;
|
final IExifInfoRepository _exifInfoRepository;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import 'package:immich_mobile/domain/interfaces/exif.interface.dart';
|
import 'package:immich_mobile/domain/interfaces/exif.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/album.interface.dart';
|
import 'package:immich_mobile/interfaces/album.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/album_api.interface.dart';
|
|
||||||
import 'package:immich_mobile/interfaces/album_media.interface.dart';
|
import 'package:immich_mobile/interfaces/album_media.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/asset.interface.dart';
|
import 'package:immich_mobile/interfaces/asset.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/asset_api.interface.dart';
|
import 'package:immich_mobile/interfaces/asset_api.interface.dart';
|
||||||
@ -13,6 +12,7 @@ import 'package:immich_mobile/interfaces/file_media.interface.dart';
|
|||||||
import 'package:immich_mobile/interfaces/local_files_manager.interface.dart';
|
import 'package:immich_mobile/interfaces/local_files_manager.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/partner.interface.dart';
|
import 'package:immich_mobile/interfaces/partner.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/partner_api.interface.dart';
|
import 'package:immich_mobile/interfaces/partner_api.interface.dart';
|
||||||
|
import 'package:immich_mobile/repositories/album_api.repository.dart';
|
||||||
import 'package:mocktail/mocktail.dart';
|
import 'package:mocktail/mocktail.dart';
|
||||||
|
|
||||||
class MockAlbumRepository extends Mock implements IAlbumRepository {}
|
class MockAlbumRepository extends Mock implements IAlbumRepository {}
|
||||||
@ -36,7 +36,7 @@ class MockAssetMediaRepository extends Mock implements IAssetMediaRepository {}
|
|||||||
|
|
||||||
class MockFileMediaRepository extends Mock implements IFileMediaRepository {}
|
class MockFileMediaRepository extends Mock implements IFileMediaRepository {}
|
||||||
|
|
||||||
class MockAlbumApiRepository extends Mock implements IAlbumApiRepository {}
|
class MockAlbumApiRepository extends Mock implements AlbumApiRepository {}
|
||||||
|
|
||||||
class MockAuthApiRepository extends Mock implements IAuthApiRepository {}
|
class MockAuthApiRepository extends Mock implements IAuthApiRepository {}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user