added upload with multiple files #61

Merged
MineTec merged 7 commits from develop-uploadMultipleFiles into develop 2024-04-09 08:21:55 +00:00
Member

#37

#37
Pupsi added 1 commit 2024-04-05 16:18:56 +00:00
Pupsi added 1 commit 2024-04-05 16:19:57 +00:00
MineTec reviewed 2024-04-05 18:14:56 +00:00
@ -91,3 +93,3 @@
path: widget.path.isEmpty ? '/' : widget.path.join('/'),
onUpdate: (ListFilesResponse d) {
if(!context.mounted) return; // prevent setState when widget is possibly already disposed
log('_query');
Owner

raus

raus
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-05 18:15:29 +00:00
@ -92,2 +94,3 @@
onUpdate: (ListFilesResponse d) {
if(!context.mounted) return; // prevent setState when widget is possibly already disposed
log('_query');
if(!context.mounted) return; // prevent setState when widget is possibly already disposed
Owner

kommentar raus

kommentar raus
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-05 18:22:15 +00:00
@ -102,0 +108,4 @@
pushScreen(
context,
withNavBar: false,
screen: FilesUploadDialog(filePaths: paths, remotePath: widget.path.join('/'), onUploadFinished: (uploadedFilePaths) => _query),
Owner

funktioniert das _query callback ohne die klammern()?

funktioniert das _query callback ohne die klammern()?
Owner

wofüg irst das leere return hier?

wofüg irst das leere return hier?
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-05 18:26:03 +00:00
@ -0,0 +11,4 @@
class FilesUploadDialog extends StatefulWidget {
final List<String> filePaths;
final String remotePath;
final void Function(List<String> uploadedFilePaths) onUploadFinished;
Owner

wofür ist hier der Parameter List<String> uploadedFilePaths?

wofür ist hier der Parameter `List<String> uploadedFilePaths`?
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-05 18:34:03 +00:00
@ -0,0 +32,4 @@
class _FilesUploadDialogState extends State<FilesUploadDialog> {
final List<UploadableFile> _uploadableFiles = [];
Owner

variable nicht leer initialisieren und durch addAll popularisieren

du kannst die variable hier late setzen und im initState setzen

variable nicht leer initialisieren und durch addAll popularisieren du kannst die variable hier late setzen und im initState setzen
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-05 18:35:07 +00:00
@ -0,0 +34,4 @@
class _FilesUploadDialogState extends State<FilesUploadDialog> {
final List<UploadableFile> _uploadableFiles = [];
bool _isUploading = false;
double _progressValue = 0.0;
Owner

passenderer Variablenname _overallProgressValue
damit klar ist das sie den Gesamtfortschritt wiederspiegelt

passenderer Variablenname `_overallProgressValue` damit klar ist das sie den Gesamtfortschritt wiederspiegelt
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-05 18:36:14 +00:00
@ -0,0 +47,4 @@
}));
}
void showErrorMessage(int errorCode){
Owner

was ist das für ein error code? Ein http status code?

Falls ja variable enstprechend umbenennen und in der message auch angeben

was ist das für ein error code? Ein http status code? Falls ja variable enstprechend umbenennen und in der message auch angeben
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-05 18:41:24 +00:00
@ -0,0 +66,4 @@
);
}
void uploadSelectedFiles({bool override = false}) async {
Owner

dein ehemaliger name upload ist in diesem kontext doch besser, vielleicht auch uploadFiles

dein ehemaliger name `upload` ist in diesem kontext doch besser, vielleicht auch `uploadFiles`
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-05 18:43:06 +00:00
@ -0,0 +73,4 @@
});
for (var element in _uploadableFiles) {
setState(() {
Owner

setState für jede datei auszuführen ist unnötig und ressourcenintensiv.

Mit setState auf zeile 70 verbinden und inline schreiben mit

_uploadableFiles.foreach(f => f.isConflicting = false)

setState für jede datei auszuführen ist unnötig und ressourcenintensiv. Mit setState auf zeile 70 verbinden und inline schreiben mit `_uploadableFiles.foreach(f => f.isConflicting = false)`
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-05 18:44:24 +00:00
@ -0,0 +84,4 @@
List<WebDavResponse> result = (await webdavClient.propfind(PathUri.parse(widget.remotePath))).responses;
List<UploadableFile> conflictingFiles = [];
for (var file in _uploadableFiles) {
Owner

umschreiben in fluente schreibweise

conflictingFiles = _uploadableFiles.where(...)
umschreiben in fluente schreibweise ``` conflictingFiles = _uploadableFiles.where(...) ```
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-05 18:45:54 +00:00
@ -0,0 +122,4 @@
onPressed: () {
Navigator.pop(context, true);
},
child: const Text('Ersetzen', textAlign: TextAlign.center),
Owner

Überschreiben

diese Aktion sollte nochmal ein "Bist du sicher" dialog öffnen. Du kannst hierzu den bestehenden ConfirmDialog verwenden

`Überschreiben` diese Aktion sollte nochmal ein "Bist du sicher" dialog öffnen. Du kannst hierzu den bestehenden ConfirmDialog verwenden
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-05 18:46:32 +00:00
@ -0,0 +116,4 @@
onPressed: () {
Navigator.pop(context, false);
},
child: const Text('Bearbeiten', textAlign: TextAlign.center),
Owner

Umbenennen

`Umbenennen`
Author
Member

Passt Bearbeiten nicht besser? Es gibt ja dann auch noch die Möglichkeit neben dem Umbenennen auch die Datei zu löschen oder komplett abzubrechen.

Passt Bearbeiten nicht besser? Es gibt ja dann auch noch die Möglichkeit neben dem Umbenennen auch die Datei zu löschen oder komplett abzubrechen.
Pupsi marked this conversation as resolved
Pupsi added 1 commit 2024-04-06 11:35:02 +00:00
MineTec reviewed 2024-04-07 13:27:27 +00:00
@ -204,7 +216,6 @@ class _FilesState extends State<Files> {
leading: const Icon(Icons.upload_file),
title: const Text('Aus Dateien hochladen'),
onTap: () {
context.loaderOverlay.show();
Owner

gibts in irgendeiner form dann enien loadingindicator?

die Galerie/ Dateiwahl kann bei einigen handys doch etwas länger dauern.

gibts in irgendeiner form dann enien loadingindicator? die Galerie/ Dateiwahl kann bei einigen handys doch etwas länger dauern.
Author
Member

schwierig: wo soll der wieder versteckt werden? Irgendwie bekomme ich das nicht so gut hin.

schwierig: wo soll der wieder versteckt werden? Irgendwie bekomme ich das nicht so gut hin.
MineTec marked this conversation as resolved
MineTec reviewed 2024-04-07 13:27:41 +00:00
@ -215,9 +226,8 @@ class _FilesState extends State<Files> {
leading: const Icon(Icons.add_a_photo_outlined),
title: const Text('Aus Gallerie hochladen'),
onTap: () {
context.loaderOverlay.show();
Owner

hier ebenfalls

hier ebenfalls
MineTec marked this conversation as resolved
MineTec reviewed 2024-04-07 13:29:59 +00:00
@ -0,0 +48,4 @@
}).toList();
/*_uploadableFiles.addAll(widget.filePaths.map((filePath) {
String fileName = filePath.split(Platform.pathSeparator).last;
Owner

ungenutzer code raus

ungenutzer code raus
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-07 13:33:53 +00:00
@ -0,0 +87,4 @@
List<WebDavResponse> result = (await webdavClient.propfind(PathUri.parse(widget.remotePath))).responses;
List<UploadableFile> conflictingFiles = _uploadableFiles.where((file) {
String fileName = file.fileName;
if (result.any((element) => Uri.decodeComponent(element.href!).endsWith('/$fileName'))) {
Owner

einfaches return

return result.any((element) => Uri.decodeComponent(element.href!).endsWith('/$fileName'))

ggf auch ohne return als pfeilsyntax

einfaches return `return result.any((element) => Uri.decodeComponent(element.href!).endsWith('/$fileName'))` ggf auch ohne return als pfeilsyntax
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-07 13:34:56 +00:00
@ -0,0 +147,4 @@
if(!replaceFiles) {
for (var element in conflictingFiles) {
element.isConflicting = true;
Owner

state variablen in setState ändern

state variablen in setState ändern
Pupsi marked this conversation as resolved
Pupsi added 1 commit 2024-04-07 13:49:52 +00:00
Pupsi added 1 commit 2024-04-07 13:59:00 +00:00
Pupsi added 1 commit 2024-04-07 14:48:46 +00:00
Owner

im talk kann bei der bilderwahl nur ein bild gewählt werden. Nur beiden dateien ist das selektieren mehrerer dateien möglich.

gleiches bei der galeriewahl in den Dateien.

im talk kann bei der bilderwahl nur ein bild gewählt werden. Nur beiden dateien ist das selektieren mehrerer dateien möglich. gleiches bei der galeriewahl in den Dateien.
MineTec reviewed 2024-04-08 20:11:08 +00:00
@ -0,0 +170,4 @@
);
if(uploadTask.statusCode < 200 || uploadTask.statusCode > 299) {
// error code
Owner

kommentar raus

kommentar raus
Pupsi marked this conversation as resolved
MineTec reviewed 2024-04-08 20:13:32 +00:00
@ -0,0 +264,4 @@
height: 24,
padding: EdgeInsets.zero,
child: IconButton(
tooltip: 'Namen löschen',
Owner

das ist sehr verwirrend....

bitte nur die tonne rechts, die das element löscht.

Der "Name" sollte nicht per button löschbar sein.

das ist sehr verwirrend.... bitte nur die tonne rechts, die das element löscht. Der "Name" sollte nicht per button löschbar sein.
Pupsi marked this conversation as resolved
Pupsi added 1 commit 2024-04-08 20:39:35 +00:00
MineTec merged commit 92361ec455 into develop 2024-04-09 08:21:55 +00:00
MineTec deleted branch develop-uploadMultipleFiles 2024-04-09 08:21:55 +00:00
Sign in to join this conversation.
No description provided.