From c10b795e99a0ca63788d1b60bc4a58ed37b41708 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 21 Jun 2025 14:24:59 -0500 Subject: [PATCH] refactor(mobile): file_media.interface.dart (#19343) * refactor(mobile): file_media.interface.dart * merge main --- .../lib/interfaces/file_media.interface.dart | 36 ------------------- .../lib/providers/backup/backup.provider.dart | 3 +- .../repositories/file_media.repository.dart | 10 +----- mobile/lib/services/backup.service.dart | 3 +- .../services/backup_verification.service.dart | 5 ++- mobile/lib/services/download.service.dart | 3 +- mobile/test/repository.mocks.dart | 4 +-- 7 files changed, 8 insertions(+), 56 deletions(-) delete mode 100644 mobile/lib/interfaces/file_media.interface.dart diff --git a/mobile/lib/interfaces/file_media.interface.dart b/mobile/lib/interfaces/file_media.interface.dart deleted file mode 100644 index ea01819dc3..0000000000 --- a/mobile/lib/interfaces/file_media.interface.dart +++ /dev/null @@ -1,36 +0,0 @@ -import 'dart:io'; -import 'dart:typed_data'; - -import 'package:immich_mobile/entities/asset.entity.dart'; - -abstract interface class IFileMediaRepository { - Future saveImage( - Uint8List data, { - required String title, - String? relativePath, - }); - - Future saveImageWithFile( - String filePath, { - String? title, - String? relativePath, - }); - - Future saveVideo( - File file, { - required String title, - String? relativePath, - }); - - Future saveLivePhoto({ - required File image, - required File video, - required String title, - }); - - Future clearFileCache(); - - Future enableBackgroundAccess(); - - Future requestExtendedPermissions(); -} diff --git a/mobile/lib/providers/backup/backup.provider.dart b/mobile/lib/providers/backup/backup.provider.dart index 479a3e0bb5..16d4a58bd6 100644 --- a/mobile/lib/providers/backup/backup.provider.dart +++ b/mobile/lib/providers/backup/backup.provider.dart @@ -10,7 +10,6 @@ import 'package:immich_mobile/entities/album.entity.dart'; import 'package:immich_mobile/entities/backup_album.entity.dart'; import 'package:immich_mobile/entities/store.entity.dart'; import 'package:immich_mobile/interfaces/backup_album.interface.dart'; -import 'package:immich_mobile/interfaces/file_media.interface.dart'; import 'package:immich_mobile/models/auth/auth_state.model.dart'; import 'package:immich_mobile/models/backup/available_album.model.dart'; import 'package:immich_mobile/models/backup/backup_candidate.model.dart'; @@ -108,7 +107,7 @@ class BackupNotifier extends StateNotifier { final BackgroundService _backgroundService; final GalleryPermissionNotifier _galleryPermissionNotifier; final AlbumMediaRepository _albumMediaRepository; - final IFileMediaRepository _fileMediaRepository; + final FileMediaRepository _fileMediaRepository; final BackupAlbumService _backupAlbumService; final Ref ref; diff --git a/mobile/lib/repositories/file_media.repository.dart b/mobile/lib/repositories/file_media.repository.dart index 15f7a51e15..6b0237dcdb 100644 --- a/mobile/lib/repositories/file_media.repository.dart +++ b/mobile/lib/repositories/file_media.repository.dart @@ -3,14 +3,12 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/entities/asset.entity.dart'; -import 'package:immich_mobile/interfaces/file_media.interface.dart'; import 'package:immich_mobile/repositories/asset_media.repository.dart'; import 'package:photo_manager/photo_manager.dart' hide AssetType; final fileMediaRepositoryProvider = Provider((ref) => FileMediaRepository()); -class FileMediaRepository implements IFileMediaRepository { - @override +class FileMediaRepository { Future saveImage( Uint8List data, { required String title, @@ -25,7 +23,6 @@ class FileMediaRepository implements IFileMediaRepository { return AssetMediaRepository.toAsset(entity); } - @override Future saveImageWithFile( String filePath, { String? title, @@ -39,7 +36,6 @@ class FileMediaRepository implements IFileMediaRepository { return AssetMediaRepository.toAsset(entity); } - @override Future saveLivePhoto({ required File image, required File video, @@ -53,7 +49,6 @@ class FileMediaRepository implements IFileMediaRepository { return AssetMediaRepository.toAsset(entity); } - @override Future saveVideo( File file, { required String title, @@ -67,14 +62,11 @@ class FileMediaRepository implements IFileMediaRepository { return AssetMediaRepository.toAsset(entity); } - @override Future clearFileCache() => PhotoManager.clearFileCache(); - @override Future enableBackgroundAccess() => PhotoManager.setIgnorePermissionCheck(true); - @override Future requestExtendedPermissions() => PhotoManager.requestPermissionExtend(); } diff --git a/mobile/lib/services/backup.service.dart b/mobile/lib/services/backup.service.dart index d394b4773c..50add6cdb2 100644 --- a/mobile/lib/services/backup.service.dart +++ b/mobile/lib/services/backup.service.dart @@ -13,7 +13,6 @@ import 'package:immich_mobile/entities/backup_album.entity.dart'; import 'package:immich_mobile/entities/store.entity.dart'; import 'package:immich_mobile/interfaces/asset.interface.dart'; import 'package:immich_mobile/interfaces/asset_media.interface.dart'; -import 'package:immich_mobile/interfaces/file_media.interface.dart'; import 'package:immich_mobile/models/backup/backup_candidate.model.dart'; import 'package:immich_mobile/models/backup/current_upload_asset.model.dart'; import 'package:immich_mobile/models/backup/error_upload_asset.model.dart'; @@ -52,7 +51,7 @@ class BackupService { final AppSettingsService _appSetting; final AlbumService _albumService; final AlbumMediaRepository _albumMediaRepository; - final IFileMediaRepository _fileMediaRepository; + final FileMediaRepository _fileMediaRepository; final IAssetRepository _assetRepository; final IAssetMediaRepository _assetMediaRepository; diff --git a/mobile/lib/services/backup_verification.service.dart b/mobile/lib/services/backup_verification.service.dart index 408ac51d74..4de5b127b6 100644 --- a/mobile/lib/services/backup_verification.service.dart +++ b/mobile/lib/services/backup_verification.service.dart @@ -13,7 +13,6 @@ import 'package:immich_mobile/entities/asset.entity.dart'; import 'package:immich_mobile/entities/store.entity.dart'; import 'package:immich_mobile/infrastructure/utils/exif.converter.dart'; import 'package:immich_mobile/interfaces/asset.interface.dart'; -import 'package:immich_mobile/interfaces/file_media.interface.dart'; import 'package:immich_mobile/providers/infrastructure/exif.provider.dart'; import 'package:immich_mobile/providers/infrastructure/user.provider.dart'; import 'package:immich_mobile/repositories/asset.repository.dart'; @@ -25,7 +24,7 @@ import 'package:immich_mobile/utils/diff.dart'; /// Finds duplicates originating from missing EXIF information class BackupVerificationService { final UserService _userService; - final IFileMediaRepository _fileMediaRepository; + final FileMediaRepository _fileMediaRepository; final IAssetRepository _assetRepository; final IExifInfoRepository _exifInfoRepository; @@ -123,7 +122,7 @@ class BackupVerificationService { String auth, String endpoint, RootIsolateToken rootIsolateToken, - IFileMediaRepository fileMediaRepository, + FileMediaRepository fileMediaRepository, }) tuple, ) async { assert(tuple.deleteCandidates.length == tuple.originals.length); diff --git a/mobile/lib/services/download.service.dart b/mobile/lib/services/download.service.dart index d8120a384c..98f1765d04 100644 --- a/mobile/lib/services/download.service.dart +++ b/mobile/lib/services/download.service.dart @@ -6,7 +6,6 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/domain/models/store.model.dart'; import 'package:immich_mobile/entities/asset.entity.dart'; import 'package:immich_mobile/entities/store.entity.dart'; -import 'package:immich_mobile/interfaces/file_media.interface.dart'; import 'package:immich_mobile/models/download/livephotos_medatada.model.dart'; import 'package:immich_mobile/repositories/download.repository.dart'; import 'package:immich_mobile/repositories/file_media.repository.dart'; @@ -23,7 +22,7 @@ final downloadServiceProvider = Provider( class DownloadService { final DownloadRepository _downloadRepository; - final IFileMediaRepository _fileMediaRepository; + final FileMediaRepository _fileMediaRepository; final Logger _log = Logger("DownloadService"); void Function(TaskStatusUpdate)? onImageDownloadStatus; void Function(TaskStatusUpdate)? onVideoDownloadStatus; diff --git a/mobile/test/repository.mocks.dart b/mobile/test/repository.mocks.dart index b66bec1f24..28c6f3f5b0 100644 --- a/mobile/test/repository.mocks.dart +++ b/mobile/test/repository.mocks.dart @@ -7,12 +7,12 @@ import 'package:immich_mobile/interfaces/auth.interface.dart'; import 'package:immich_mobile/interfaces/auth_api.interface.dart'; import 'package:immich_mobile/interfaces/backup_album.interface.dart'; import 'package:immich_mobile/interfaces/etag.interface.dart'; -import 'package:immich_mobile/interfaces/file_media.interface.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_api.repository.dart'; import 'package:immich_mobile/repositories/partner.repository.dart'; import 'package:immich_mobile/repositories/local_files_manager.repository.dart'; +import 'package:immich_mobile/repositories/file_media.repository.dart'; import 'package:mocktail/mocktail.dart'; class MockAlbumRepository extends Mock implements IAlbumRepository {} @@ -34,7 +34,7 @@ class MockAssetApiRepository extends Mock implements IAssetApiRepository {} class MockAssetMediaRepository extends Mock implements IAssetMediaRepository {} -class MockFileMediaRepository extends Mock implements IFileMediaRepository {} +class MockFileMediaRepository extends Mock implements FileMediaRepository {} class MockAlbumApiRepository extends Mock implements AlbumApiRepository {}