mirror of
https://github.com/immich-app/immich.git
synced 2025-07-09 03:04:16 -04:00
refactor(mobile): file_media.interface.dart (#19343)
* refactor(mobile): file_media.interface.dart * merge main
This commit is contained in:
parent
b606d4fe73
commit
c10b795e99
@ -1,36 +0,0 @@
|
|||||||
import 'dart:io';
|
|
||||||
import 'dart:typed_data';
|
|
||||||
|
|
||||||
import 'package:immich_mobile/entities/asset.entity.dart';
|
|
||||||
|
|
||||||
abstract interface class IFileMediaRepository {
|
|
||||||
Future<Asset?> saveImage(
|
|
||||||
Uint8List data, {
|
|
||||||
required String title,
|
|
||||||
String? relativePath,
|
|
||||||
});
|
|
||||||
|
|
||||||
Future<Asset?> saveImageWithFile(
|
|
||||||
String filePath, {
|
|
||||||
String? title,
|
|
||||||
String? relativePath,
|
|
||||||
});
|
|
||||||
|
|
||||||
Future<Asset?> saveVideo(
|
|
||||||
File file, {
|
|
||||||
required String title,
|
|
||||||
String? relativePath,
|
|
||||||
});
|
|
||||||
|
|
||||||
Future<Asset?> saveLivePhoto({
|
|
||||||
required File image,
|
|
||||||
required File video,
|
|
||||||
required String title,
|
|
||||||
});
|
|
||||||
|
|
||||||
Future<void> clearFileCache();
|
|
||||||
|
|
||||||
Future<void> enableBackgroundAccess();
|
|
||||||
|
|
||||||
Future<void> requestExtendedPermissions();
|
|
||||||
}
|
|
@ -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/backup_album.entity.dart';
|
||||||
import 'package:immich_mobile/entities/store.entity.dart';
|
import 'package:immich_mobile/entities/store.entity.dart';
|
||||||
import 'package:immich_mobile/interfaces/backup_album.interface.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/auth/auth_state.model.dart';
|
||||||
import 'package:immich_mobile/models/backup/available_album.model.dart';
|
import 'package:immich_mobile/models/backup/available_album.model.dart';
|
||||||
import 'package:immich_mobile/models/backup/backup_candidate.model.dart';
|
import 'package:immich_mobile/models/backup/backup_candidate.model.dart';
|
||||||
@ -108,7 +107,7 @@ class BackupNotifier extends StateNotifier<BackUpState> {
|
|||||||
final BackgroundService _backgroundService;
|
final BackgroundService _backgroundService;
|
||||||
final GalleryPermissionNotifier _galleryPermissionNotifier;
|
final GalleryPermissionNotifier _galleryPermissionNotifier;
|
||||||
final AlbumMediaRepository _albumMediaRepository;
|
final AlbumMediaRepository _albumMediaRepository;
|
||||||
final IFileMediaRepository _fileMediaRepository;
|
final FileMediaRepository _fileMediaRepository;
|
||||||
final BackupAlbumService _backupAlbumService;
|
final BackupAlbumService _backupAlbumService;
|
||||||
final Ref ref;
|
final Ref ref;
|
||||||
|
|
||||||
|
@ -3,14 +3,12 @@ import 'dart:io';
|
|||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:immich_mobile/entities/asset.entity.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:immich_mobile/repositories/asset_media.repository.dart';
|
||||||
import 'package:photo_manager/photo_manager.dart' hide AssetType;
|
import 'package:photo_manager/photo_manager.dart' hide AssetType;
|
||||||
|
|
||||||
final fileMediaRepositoryProvider = Provider((ref) => FileMediaRepository());
|
final fileMediaRepositoryProvider = Provider((ref) => FileMediaRepository());
|
||||||
|
|
||||||
class FileMediaRepository implements IFileMediaRepository {
|
class FileMediaRepository {
|
||||||
@override
|
|
||||||
Future<Asset?> saveImage(
|
Future<Asset?> saveImage(
|
||||||
Uint8List data, {
|
Uint8List data, {
|
||||||
required String title,
|
required String title,
|
||||||
@ -25,7 +23,6 @@ class FileMediaRepository implements IFileMediaRepository {
|
|||||||
return AssetMediaRepository.toAsset(entity);
|
return AssetMediaRepository.toAsset(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<Asset?> saveImageWithFile(
|
Future<Asset?> saveImageWithFile(
|
||||||
String filePath, {
|
String filePath, {
|
||||||
String? title,
|
String? title,
|
||||||
@ -39,7 +36,6 @@ class FileMediaRepository implements IFileMediaRepository {
|
|||||||
return AssetMediaRepository.toAsset(entity);
|
return AssetMediaRepository.toAsset(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<Asset?> saveLivePhoto({
|
Future<Asset?> saveLivePhoto({
|
||||||
required File image,
|
required File image,
|
||||||
required File video,
|
required File video,
|
||||||
@ -53,7 +49,6 @@ class FileMediaRepository implements IFileMediaRepository {
|
|||||||
return AssetMediaRepository.toAsset(entity);
|
return AssetMediaRepository.toAsset(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<Asset?> saveVideo(
|
Future<Asset?> saveVideo(
|
||||||
File file, {
|
File file, {
|
||||||
required String title,
|
required String title,
|
||||||
@ -67,14 +62,11 @@ class FileMediaRepository implements IFileMediaRepository {
|
|||||||
return AssetMediaRepository.toAsset(entity);
|
return AssetMediaRepository.toAsset(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
Future<void> clearFileCache() => PhotoManager.clearFileCache();
|
Future<void> clearFileCache() => PhotoManager.clearFileCache();
|
||||||
|
|
||||||
@override
|
|
||||||
Future<void> enableBackgroundAccess() =>
|
Future<void> enableBackgroundAccess() =>
|
||||||
PhotoManager.setIgnorePermissionCheck(true);
|
PhotoManager.setIgnorePermissionCheck(true);
|
||||||
|
|
||||||
@override
|
|
||||||
Future<void> requestExtendedPermissions() =>
|
Future<void> requestExtendedPermissions() =>
|
||||||
PhotoManager.requestPermissionExtend();
|
PhotoManager.requestPermissionExtend();
|
||||||
}
|
}
|
||||||
|
@ -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/entities/store.entity.dart';
|
||||||
import 'package:immich_mobile/interfaces/asset.interface.dart';
|
import 'package:immich_mobile/interfaces/asset.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/asset_media.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/backup_candidate.model.dart';
|
||||||
import 'package:immich_mobile/models/backup/current_upload_asset.model.dart';
|
import 'package:immich_mobile/models/backup/current_upload_asset.model.dart';
|
||||||
import 'package:immich_mobile/models/backup/error_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 AppSettingsService _appSetting;
|
||||||
final AlbumService _albumService;
|
final AlbumService _albumService;
|
||||||
final AlbumMediaRepository _albumMediaRepository;
|
final AlbumMediaRepository _albumMediaRepository;
|
||||||
final IFileMediaRepository _fileMediaRepository;
|
final FileMediaRepository _fileMediaRepository;
|
||||||
final IAssetRepository _assetRepository;
|
final IAssetRepository _assetRepository;
|
||||||
final IAssetMediaRepository _assetMediaRepository;
|
final IAssetMediaRepository _assetMediaRepository;
|
||||||
|
|
||||||
|
@ -13,7 +13,6 @@ import 'package:immich_mobile/entities/asset.entity.dart';
|
|||||||
import 'package:immich_mobile/entities/store.entity.dart';
|
import 'package:immich_mobile/entities/store.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/exif.converter.dart';
|
import 'package:immich_mobile/infrastructure/utils/exif.converter.dart';
|
||||||
import 'package:immich_mobile/interfaces/asset.interface.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/exif.provider.dart';
|
||||||
import 'package:immich_mobile/providers/infrastructure/user.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/user.provider.dart';
|
||||||
import 'package:immich_mobile/repositories/asset.repository.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
|
/// Finds duplicates originating from missing EXIF information
|
||||||
class BackupVerificationService {
|
class BackupVerificationService {
|
||||||
final UserService _userService;
|
final UserService _userService;
|
||||||
final IFileMediaRepository _fileMediaRepository;
|
final FileMediaRepository _fileMediaRepository;
|
||||||
final IAssetRepository _assetRepository;
|
final IAssetRepository _assetRepository;
|
||||||
final IExifInfoRepository _exifInfoRepository;
|
final IExifInfoRepository _exifInfoRepository;
|
||||||
|
|
||||||
@ -123,7 +122,7 @@ class BackupVerificationService {
|
|||||||
String auth,
|
String auth,
|
||||||
String endpoint,
|
String endpoint,
|
||||||
RootIsolateToken rootIsolateToken,
|
RootIsolateToken rootIsolateToken,
|
||||||
IFileMediaRepository fileMediaRepository,
|
FileMediaRepository fileMediaRepository,
|
||||||
}) tuple,
|
}) tuple,
|
||||||
) async {
|
) async {
|
||||||
assert(tuple.deleteCandidates.length == tuple.originals.length);
|
assert(tuple.deleteCandidates.length == tuple.originals.length);
|
||||||
|
@ -6,7 +6,6 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|||||||
import 'package:immich_mobile/domain/models/store.model.dart';
|
import 'package:immich_mobile/domain/models/store.model.dart';
|
||||||
import 'package:immich_mobile/entities/asset.entity.dart';
|
import 'package:immich_mobile/entities/asset.entity.dart';
|
||||||
import 'package:immich_mobile/entities/store.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/models/download/livephotos_medatada.model.dart';
|
||||||
import 'package:immich_mobile/repositories/download.repository.dart';
|
import 'package:immich_mobile/repositories/download.repository.dart';
|
||||||
import 'package:immich_mobile/repositories/file_media.repository.dart';
|
import 'package:immich_mobile/repositories/file_media.repository.dart';
|
||||||
@ -23,7 +22,7 @@ final downloadServiceProvider = Provider(
|
|||||||
|
|
||||||
class DownloadService {
|
class DownloadService {
|
||||||
final DownloadRepository _downloadRepository;
|
final DownloadRepository _downloadRepository;
|
||||||
final IFileMediaRepository _fileMediaRepository;
|
final FileMediaRepository _fileMediaRepository;
|
||||||
final Logger _log = Logger("DownloadService");
|
final Logger _log = Logger("DownloadService");
|
||||||
void Function(TaskStatusUpdate)? onImageDownloadStatus;
|
void Function(TaskStatusUpdate)? onImageDownloadStatus;
|
||||||
void Function(TaskStatusUpdate)? onVideoDownloadStatus;
|
void Function(TaskStatusUpdate)? onVideoDownloadStatus;
|
||||||
|
@ -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/auth_api.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/backup_album.interface.dart';
|
import 'package:immich_mobile/interfaces/backup_album.interface.dart';
|
||||||
import 'package:immich_mobile/interfaces/etag.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/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';
|
||||||
import 'package:immich_mobile/repositories/partner.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/local_files_manager.repository.dart';
|
||||||
|
import 'package:immich_mobile/repositories/file_media.repository.dart';
|
||||||
import 'package:mocktail/mocktail.dart';
|
import 'package:mocktail/mocktail.dart';
|
||||||
|
|
||||||
class MockAlbumRepository extends Mock implements IAlbumRepository {}
|
class MockAlbumRepository extends Mock implements IAlbumRepository {}
|
||||||
@ -34,7 +34,7 @@ class MockAssetApiRepository extends Mock implements IAssetApiRepository {}
|
|||||||
|
|
||||||
class MockAssetMediaRepository extends Mock implements IAssetMediaRepository {}
|
class MockAssetMediaRepository extends Mock implements IAssetMediaRepository {}
|
||||||
|
|
||||||
class MockFileMediaRepository extends Mock implements IFileMediaRepository {}
|
class MockFileMediaRepository extends Mock implements FileMediaRepository {}
|
||||||
|
|
||||||
class MockAlbumApiRepository extends Mock implements AlbumApiRepository {}
|
class MockAlbumApiRepository extends Mock implements AlbumApiRepository {}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user