diff --git a/mobile/lib/interfaces/local_files_manager.interface.dart b/mobile/lib/interfaces/local_files_manager.interface.dart deleted file mode 100644 index 07274b7e29..0000000000 --- a/mobile/lib/interfaces/local_files_manager.interface.dart +++ /dev/null @@ -1,5 +0,0 @@ -abstract interface class ILocalFilesManager { - Future moveToTrash(List mediaUrls); - Future restoreFromTrash(String fileName, int type); - Future requestManageMediaPermission(); -} diff --git a/mobile/lib/repositories/local_files_manager.repository.dart b/mobile/lib/repositories/local_files_manager.repository.dart index c2e234d14d..4e99f5d6ef 100644 --- a/mobile/lib/repositories/local_files_manager.repository.dart +++ b/mobile/lib/repositories/local_files_manager.repository.dart @@ -1,25 +1,25 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:immich_mobile/interfaces/local_files_manager.interface.dart'; -import 'package:immich_mobile/utils/local_files_manager.dart'; +import 'package:immich_mobile/services/local_files_manager.service.dart'; -final localFilesManagerRepositoryProvider = - Provider((ref) => const LocalFilesManagerRepository()); +final localFilesManagerRepositoryProvider = Provider( + (ref) => + LocalFilesManagerRepository(ref.watch(localFileManagerServiceProvider)), +); -class LocalFilesManagerRepository implements ILocalFilesManager { - const LocalFilesManagerRepository(); +class LocalFilesManagerRepository { + LocalFilesManagerRepository(this._service); + + final LocalFilesManagerService _service; - @override Future moveToTrash(List mediaUrls) async { - return await LocalFilesManager.moveToTrash(mediaUrls); + return await _service.moveToTrash(mediaUrls); } - @override Future restoreFromTrash(String fileName, int type) async { - return await LocalFilesManager.restoreFromTrash(fileName, type); + return await _service.restoreFromTrash(fileName, type); } - @override Future requestManageMediaPermission() async { - return await LocalFilesManager.requestManageMediaPermission(); + return await _service.requestManageMediaPermission(); } } diff --git a/mobile/lib/utils/local_files_manager.dart b/mobile/lib/services/local_files_manager.service.dart similarity index 69% rename from mobile/lib/utils/local_files_manager.dart rename to mobile/lib/services/local_files_manager.service.dart index a4cf41a6e6..3d5f7a217d 100644 --- a/mobile/lib/utils/local_files_manager.dart +++ b/mobile/lib/services/local_files_manager.service.dart @@ -1,11 +1,16 @@ import 'package:flutter/services.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:logging/logging.dart'; -abstract final class LocalFilesManager { +final localFileManagerServiceProvider = Provider( + (ref) => LocalFilesManagerService(), +); + +class LocalFilesManagerService { static final Logger _logger = Logger('LocalFilesManager'); static const MethodChannel _channel = MethodChannel('file_trash'); - static Future moveToTrash(List mediaUrls) async { + Future moveToTrash(List mediaUrls) async { try { return await _channel .invokeMethod('moveToTrash', {'mediaUrls': mediaUrls}); @@ -15,7 +20,7 @@ abstract final class LocalFilesManager { } } - static Future restoreFromTrash(String fileName, int type) async { + Future restoreFromTrash(String fileName, int type) async { try { return await _channel.invokeMethod( 'restoreFromTrash', @@ -27,7 +32,7 @@ abstract final class LocalFilesManager { } } - static Future requestManageMediaPermission() async { + Future requestManageMediaPermission() async { try { return await _channel.invokeMethod('requestManageMediaPermission'); } catch (e, s) { diff --git a/mobile/lib/services/sync.service.dart b/mobile/lib/services/sync.service.dart index 5013411599..6f47463242 100644 --- a/mobile/lib/services/sync.service.dart +++ b/mobile/lib/services/sync.service.dart @@ -16,7 +16,6 @@ import 'package:immich_mobile/infrastructure/repositories/user_api.repository.da import 'package:immich_mobile/interfaces/album.interface.dart'; import 'package:immich_mobile/interfaces/asset.interface.dart'; import 'package:immich_mobile/interfaces/etag.interface.dart'; -import 'package:immich_mobile/interfaces/local_files_manager.interface.dart'; import 'package:immich_mobile/providers/app_settings.provider.dart'; import 'package:immich_mobile/providers/infrastructure/exif.provider.dart'; import 'package:immich_mobile/providers/infrastructure/user.provider.dart'; @@ -74,7 +73,7 @@ class SyncService { final AsyncMutex _lock = AsyncMutex(); final Logger _log = Logger('SyncService'); final AppSettingsService _appSettingsService; - final ILocalFilesManager _localFilesManager; + final LocalFilesManagerRepository _localFilesManager; SyncService( this._hashService, diff --git a/mobile/test/repository.mocks.dart b/mobile/test/repository.mocks.dart index 638b08c1ea..b66bec1f24 100644 --- a/mobile/test/repository.mocks.dart +++ b/mobile/test/repository.mocks.dart @@ -8,11 +8,11 @@ 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/interfaces/local_files_manager.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:mocktail/mocktail.dart'; class MockAlbumRepository extends Mock implements IAlbumRepository {} @@ -47,4 +47,4 @@ class MockPartnerRepository extends Mock implements PartnerRepository {} class MockPartnerApiRepository extends Mock implements PartnerApiRepository {} class MockLocalFilesManagerRepository extends Mock - implements ILocalFilesManager {} + implements LocalFilesManagerRepository {}