refactor(mobile): local_file_manager.interface.dart (#19340)

This commit is contained in:
Alex 2025-06-21 13:35:30 -05:00 committed by GitHub
parent 4c2ad44303
commit b606d4fe73
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 24 additions and 25 deletions

View File

@ -1,5 +0,0 @@
abstract interface class ILocalFilesManager {
Future<bool> moveToTrash(List<String> mediaUrls);
Future<bool> restoreFromTrash(String fileName, int type);
Future<bool> requestManageMediaPermission();
}

View File

@ -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<bool> moveToTrash(List<String> mediaUrls) async {
return await LocalFilesManager.moveToTrash(mediaUrls);
return await _service.moveToTrash(mediaUrls);
}
@override
Future<bool> restoreFromTrash(String fileName, int type) async {
return await LocalFilesManager.restoreFromTrash(fileName, type);
return await _service.restoreFromTrash(fileName, type);
}
@override
Future<bool> requestManageMediaPermission() async {
return await LocalFilesManager.requestManageMediaPermission();
return await _service.requestManageMediaPermission();
}
}

View File

@ -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<LocalFilesManagerService>(
(ref) => LocalFilesManagerService(),
);
class LocalFilesManagerService {
static final Logger _logger = Logger('LocalFilesManager');
static const MethodChannel _channel = MethodChannel('file_trash');
static Future<bool> moveToTrash(List<String> mediaUrls) async {
Future<bool> moveToTrash(List<String> mediaUrls) async {
try {
return await _channel
.invokeMethod('moveToTrash', {'mediaUrls': mediaUrls});
@ -15,7 +20,7 @@ abstract final class LocalFilesManager {
}
}
static Future<bool> restoreFromTrash(String fileName, int type) async {
Future<bool> restoreFromTrash(String fileName, int type) async {
try {
return await _channel.invokeMethod(
'restoreFromTrash',
@ -27,7 +32,7 @@ abstract final class LocalFilesManager {
}
}
static Future<bool> requestManageMediaPermission() async {
Future<bool> requestManageMediaPermission() async {
try {
return await _channel.invokeMethod('requestManageMediaPermission');
} catch (e, s) {

View File

@ -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,

View File

@ -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 {}