refactor(mobile): asset_api.interface.dart (#19353)

This commit is contained in:
Alex 2025-06-21 18:06:38 -05:00 committed by GitHub
parent 484311e9bb
commit 2b03802e9c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 5 additions and 38 deletions

View File

@ -1,26 +0,0 @@
import 'package:immich_mobile/constants/enums.dart';
import 'package:immich_mobile/entities/asset.entity.dart';
abstract interface class IAssetApiRepository {
// Future<Asset> get(String id);
// Future<List<Asset>> getAll();
// Future<Asset> create(Asset asset);
Future<Asset> update(
String id, {
String? description,
});
// Future<void> delete(String id);
Future<List<Asset>> search({List<String> personIds = const []});
Future<void> updateVisibility(
List<String> list,
AssetVisibilityEnum visibility,
);
Future<String?> getAssetMIMEType(String id);
}

View File

@ -1,7 +1,6 @@
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/constants/enums.dart'; import 'package:immich_mobile/constants/enums.dart';
import 'package:immich_mobile/entities/asset.entity.dart'; import 'package:immich_mobile/entities/asset.entity.dart';
import 'package:immich_mobile/interfaces/asset_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';
@ -13,13 +12,12 @@ final assetApiRepositoryProvider = Provider(
), ),
); );
class AssetApiRepository extends ApiRepository implements IAssetApiRepository { class AssetApiRepository extends ApiRepository {
final AssetsApi _api; final AssetsApi _api;
final SearchApi _searchApi; final SearchApi _searchApi;
AssetApiRepository(this._api, this._searchApi); AssetApiRepository(this._api, this._searchApi);
@override
Future<Asset> update(String id, {String? description}) async { Future<Asset> update(String id, {String? description}) async {
final response = await checkNull( final response = await checkNull(
_api.updateAsset(id, UpdateAssetDto(description: description)), _api.updateAsset(id, UpdateAssetDto(description: description)),
@ -27,7 +25,6 @@ class AssetApiRepository extends ApiRepository implements IAssetApiRepository {
return Asset.remote(response); return Asset.remote(response);
} }
@override
Future<List<Asset>> search({List<String> personIds = const []}) async { Future<List<Asset>> search({List<String> personIds = const []}) async {
// TODO this always fetches all assets, change API and usage to actually do pagination // TODO this always fetches all assets, change API and usage to actually do pagination
final List<Asset> result = []; final List<Asset> result = [];
@ -50,7 +47,6 @@ class AssetApiRepository extends ApiRepository implements IAssetApiRepository {
return result; return result;
} }
@override
Future<void> updateVisibility( Future<void> updateVisibility(
List<String> ids, List<String> ids,
AssetVisibilityEnum visibility, AssetVisibilityEnum visibility,
@ -73,7 +69,6 @@ class AssetApiRepository extends ApiRepository implements IAssetApiRepository {
} }
} }
@override
Future<String?> getAssetMIMEType(String assetId) async { Future<String?> getAssetMIMEType(String assetId) async {
final response = await checkNull(_api.getAssetInfo(assetId)); final response = await checkNull(_api.getAssetInfo(assetId));

View File

@ -10,7 +10,6 @@ import 'package:immich_mobile/domain/services/user.service.dart';
import 'package:immich_mobile/entities/asset.entity.dart'; import 'package:immich_mobile/entities/asset.entity.dart';
import 'package:immich_mobile/entities/backup_album.entity.dart'; import 'package:immich_mobile/entities/backup_album.entity.dart';
import 'package:immich_mobile/infrastructure/repositories/user.repository.dart'; import 'package:immich_mobile/infrastructure/repositories/user.repository.dart';
import 'package:immich_mobile/interfaces/asset_api.interface.dart';
import 'package:immich_mobile/models/backup/backup_candidate.model.dart'; import 'package:immich_mobile/models/backup/backup_candidate.model.dart';
import 'package:immich_mobile/providers/api.provider.dart'; import 'package:immich_mobile/providers/api.provider.dart';
import 'package:immich_mobile/providers/infrastructure/exif.provider.dart'; import 'package:immich_mobile/providers/infrastructure/exif.provider.dart';
@ -46,7 +45,7 @@ final assetServiceProvider = Provider(
); );
class AssetService { class AssetService {
final IAssetApiRepository _assetApiRepository; final AssetApiRepository _assetApiRepository;
final AssetRepository _assetRepository; final AssetRepository _assetRepository;
final IExifInfoRepository _exifInfoRepository; final IExifInfoRepository _exifInfoRepository;
final IsarUserRepository _isarUserRepository; final IsarUserRepository _isarUserRepository;

View File

@ -1,7 +1,6 @@
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/person.model.dart'; import 'package:immich_mobile/domain/models/person.model.dart';
import 'package:immich_mobile/entities/asset.entity.dart'; import 'package:immich_mobile/entities/asset.entity.dart';
import 'package:immich_mobile/interfaces/asset_api.interface.dart';
import 'package:immich_mobile/repositories/asset.repository.dart'; import 'package:immich_mobile/repositories/asset.repository.dart';
import 'package:immich_mobile/repositories/asset_api.repository.dart'; import 'package:immich_mobile/repositories/asset_api.repository.dart';
import 'package:immich_mobile/repositories/person_api.repository.dart'; import 'package:immich_mobile/repositories/person_api.repository.dart';
@ -20,7 +19,7 @@ PersonService personService(Ref ref) => PersonService(
class PersonService { class PersonService {
final Logger _log = Logger("PersonService"); final Logger _log = Logger("PersonService");
final PersonApiRepository _personApiRepository; final PersonApiRepository _personApiRepository;
final IAssetApiRepository _assetApiRepository; final AssetApiRepository _assetApiRepository;
final AssetRepository _assetRepository; final AssetRepository _assetRepository;
PersonService( PersonService(

View File

@ -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/asset_api.interface.dart';
import 'package:immich_mobile/repositories/partner_api.repository.dart'; import 'package:immich_mobile/repositories/partner_api.repository.dart';
import 'package:immich_mobile/repositories/album_media.repository.dart'; import 'package:immich_mobile/repositories/album_media.repository.dart';
import 'package:immich_mobile/repositories/album_api.repository.dart'; import 'package:immich_mobile/repositories/album_api.repository.dart';
@ -13,6 +12,7 @@ import 'package:immich_mobile/repositories/auth.repository.dart';
import 'package:immich_mobile/repositories/auth_api.repository.dart'; import 'package:immich_mobile/repositories/auth_api.repository.dart';
import 'package:immich_mobile/repositories/asset.repository.dart'; import 'package:immich_mobile/repositories/asset.repository.dart';
import 'package:immich_mobile/repositories/asset_media.repository.dart'; import 'package:immich_mobile/repositories/asset_media.repository.dart';
import 'package:immich_mobile/repositories/asset_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 {}
@ -29,7 +29,7 @@ class MockAlbumMediaRepository extends Mock implements AlbumMediaRepository {}
class MockBackupAlbumRepository extends Mock implements BackupAlbumRepository {} class MockBackupAlbumRepository extends Mock implements BackupAlbumRepository {}
class MockAssetApiRepository extends Mock implements IAssetApiRepository {} class MockAssetApiRepository extends Mock implements AssetApiRepository {}
class MockAssetMediaRepository extends Mock implements AssetMediaRepository {} class MockAssetMediaRepository extends Mock implements AssetMediaRepository {}