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.
 
 

85 lines
2.1 KiB

part of '../neon_files.dart';
@immutable
class FileDetails {
const FileDetails({
required this.path,
required this.isDirectory,
required this.size,
required this.etag,
required this.mimeType,
required this.lastModified,
required this.hasPreview,
required this.isFavorite,
}) : progress = null,
isUploading = false,
isDownloading = false;
FileDetails.fromWebDav({
required final WebDavFile file,
required final List<String> path,
}) : path = List.from(path)..add(file.name),
isDirectory = file.isDirectory,
size = file.size,
etag = file.etag,
mimeType = file.mimeType,
lastModified = file.lastModified,
hasPreview = file.hasPreview,
isFavorite = file.favorite,
progress = null,
isUploading = false,
isDownloading = false;
FileDetails.fromUploadTask({
required final UploadTask task,
}) : path = task.path,
size = task.size,
lastModified = task.lastModified,
progress = task.progress,
isUploading = true,
isDownloading = false,
isDirectory = false,
etag = null,
mimeType = null,
hasPreview = null,
isFavorite = null;
FileDetails.fromDownloadTask({
required final DownloadTask task,
required final WebDavFile file,
}) : path = task.path,
isDirectory = file.isDirectory,
size = file.size,
etag = file.etag,
mimeType = file.mimeType,
lastModified = file.lastModified,
hasPreview = file.hasPreview,
isFavorite = file.favorite,
progress = task.progress,
isUploading = false,
isDownloading = true;
String get name => path.last;
final List<String> path;
final bool isDirectory;
final int? size;
final String? etag;
final String? mimeType;
final DateTime? lastModified;
final bool? hasPreview;
final bool? isFavorite;
final Stream<double>? progress;
final bool isUploading;
final bool isDownloading;
bool get isLoading => isUploading || isDownloading;
}