nc-photos/app/lib/use_case/download_file.dart

53 lines
1.5 KiB
Dart
Raw Normal View History

2021-09-09 22:42:47 +02:00
import 'package:nc_photos/account.dart';
import 'package:nc_photos/entity/file_descriptor.dart';
2021-09-09 22:42:47 +02:00
import 'package:nc_photos/mobile/platform.dart'
if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform;
import 'package:nc_photos/np_api_util.dart';
2021-10-02 11:12:54 +02:00
import 'package:nc_photos/platform/download.dart';
2021-09-09 22:42:47 +02:00
class DownloadFile {
2021-10-02 11:12:54 +02:00
/// Create a new download but don't start it yet
2023-09-03 11:12:57 +02:00
///
/// [onProgress] is not supported by all implementors. If supported, it will
/// be called with the current download progress, normalized from 0 to 1.
/// There's no guarantee that you will receive a 1 in [onProgress]
2021-10-02 11:12:54 +02:00
Download build(
Account account,
FileDescriptor file, {
2021-09-29 16:34:56 +02:00
String? parentDir,
bool? shouldNotify,
2023-09-03 11:12:57 +02:00
void Function(double progress)? onProgress,
}) {
final url = "${account.url}/${file.fdPath}";
2021-10-02 11:12:54 +02:00
return platform.DownloadBuilder().build(
url: url,
headers: {
"authorization": AuthUtil.fromAccount(account).toHeaderValue(),
},
mimeType: file.fdMime,
filename: file.filename,
2021-09-29 16:34:56 +02:00
parentDir: parentDir,
shouldNotify: shouldNotify,
2023-09-03 11:12:57 +02:00
onProgress: onProgress,
);
2021-09-09 22:42:47 +02:00
}
2021-10-02 11:12:54 +02:00
/// Download [file]
///
/// See [DownloadBuilder]
Future<dynamic> call(
Account account,
FileDescriptor file, {
2021-10-02 11:12:54 +02:00
String? parentDir,
bool? shouldNotify,
2023-09-03 11:12:57 +02:00
void Function(double progress)? onProgress,
2021-10-02 11:12:54 +02:00
}) =>
build(
account,
file,
parentDir: parentDir,
shouldNotify: shouldNotify,
2023-09-03 11:12:57 +02:00
onProgress: onProgress,
2021-10-02 11:12:54 +02:00
)();
2021-09-09 22:42:47 +02:00
}