A framework for building convergent cross-platform Nextcloud clients using Flutter.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.1 KiB

part of '../neon_files.dart';
sealed class FilesTask {
FilesTask({
required this.path,
required this.file,
});
final List<String> path;
final File file;
@protected
final streamController = StreamController<double>();
/// Task progress in percent [0, 1].
late final progress = streamController.stream.asBroadcastStream();
}
class FilesDownloadTask extends FilesTask {
FilesDownloadTask({
required super.path,
required super.file,
});
Future execute(final NextcloudClient client) async {
await client.webdav.getFile(
path.join('/'),
file,
onProgress: (final progress) {
streamController.add(progress);
},
);
}
}
class FilesUploadTask extends FilesTask {
FilesUploadTask({
required super.path,
required super.file,
});
FileStat? _stat;
FileStat get stat => _stat ??= file.statSync();
Future execute(final NextcloudClient client) async {
await client.webdav.putFile(
file,
stat,
path.join('/'),
lastModified: stat.modified,
onProgress: (final progress) {
streamController.add(progress);
},
);
}
}