mirror of
https://github.com/immich-app/immich.git
synced 2024-12-28 22:51:59 +00:00
ee0130a58b
* improve download asset * fix: download motion photos on ios --------- Co-authored-by: dvbthien <dvbthien@gmail.com> Co-authored-by: Alex <alex.tran1502@gmail.com>
80 lines
2.1 KiB
Dart
80 lines
2.1 KiB
Dart
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
|
|
Future<Asset?> saveImage(
|
|
Uint8List data, {
|
|
required String title,
|
|
String? relativePath,
|
|
}) async {
|
|
final entity = await PhotoManager.editor.saveImage(
|
|
data,
|
|
filename: title,
|
|
title: title,
|
|
relativePath: relativePath,
|
|
);
|
|
return AssetMediaRepository.toAsset(entity);
|
|
}
|
|
|
|
@override
|
|
Future<Asset?> saveImageWithFile(
|
|
String filePath, {
|
|
String? title,
|
|
String? relativePath,
|
|
}) async {
|
|
final entity = await PhotoManager.editor.saveImageWithPath(
|
|
filePath,
|
|
title: title,
|
|
relativePath: relativePath,
|
|
);
|
|
return AssetMediaRepository.toAsset(entity);
|
|
}
|
|
|
|
@override
|
|
Future<Asset?> saveLivePhoto({
|
|
required File image,
|
|
required File video,
|
|
required String title,
|
|
}) async {
|
|
final entity = await PhotoManager.editor.darwin.saveLivePhoto(
|
|
imageFile: image,
|
|
videoFile: video,
|
|
title: title,
|
|
);
|
|
return AssetMediaRepository.toAsset(entity);
|
|
}
|
|
|
|
@override
|
|
Future<Asset?> saveVideo(
|
|
File file, {
|
|
required String title,
|
|
String? relativePath,
|
|
}) async {
|
|
final entity = await PhotoManager.editor.saveVideo(
|
|
file,
|
|
title: title,
|
|
relativePath: relativePath,
|
|
);
|
|
return AssetMediaRepository.toAsset(entity);
|
|
}
|
|
|
|
@override
|
|
Future<void> clearFileCache() => PhotoManager.clearFileCache();
|
|
|
|
@override
|
|
Future<void> enableBackgroundAccess() =>
|
|
PhotoManager.setIgnorePermissionCheck(true);
|
|
|
|
@override
|
|
Future<void> requestExtendedPermissions() =>
|
|
PhotoManager.requestPermissionExtend();
|
|
}
|