Fixed sorting on files, removed some logging
This commit is contained in:
@ -1,4 +1,3 @@
|
||||
import 'dart:developer';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:http/http.dart' as http;
|
||||
@ -14,15 +13,10 @@ class FileSharingApi {
|
||||
headers.putIfAbsent("OCS-APIRequest", () => "true");
|
||||
|
||||
Uri endpoint = Uri.https("${AccountData().buildHttpAuthString()}@cloud.marianum-fulda.de", "/ocs/v2.php/apps/files_sharing/api/v1/shares", query.toJson().map((key, value) => MapEntry(key, value.toString())));
|
||||
|
||||
log("request file share");
|
||||
Response response = await http.post(endpoint, headers: headers);
|
||||
|
||||
if(response.statusCode != HttpStatus.ok) {
|
||||
throw Exception("Api call failed with ${response.statusCode}: ${response.body}");
|
||||
} else {
|
||||
log("File share successfull: ${response.body}");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:http/http.dart';
|
||||
@ -15,7 +14,6 @@ class GetReactions extends TalkApi<GetReactionsResponse> {
|
||||
|
||||
@override
|
||||
assemble(String raw) {
|
||||
log(raw);
|
||||
return GetReactionsResponse.fromJson(jsonDecode(raw)['ocs']);
|
||||
}
|
||||
|
||||
|
@ -13,6 +13,7 @@ class CacheableFile {
|
||||
String? eTag;
|
||||
DateTime? createdAt;
|
||||
DateTime? modifiedAt;
|
||||
String? sort;
|
||||
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
bool currentlyDownloading = false;
|
||||
|
@ -1,5 +1,7 @@
|
||||
import 'package:jiffy/jiffy.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
import '../../../../../view/pages/files/files.dart';
|
||||
import '../../../../apiResponse.dart';
|
||||
import 'cacheableFile.dart';
|
||||
|
||||
@ -13,4 +15,43 @@ class ListFilesResponse extends ApiResponse {
|
||||
|
||||
factory ListFilesResponse.fromJson(Map<String, dynamic> json) => _$ListFilesResponseFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$ListFilesResponseToJson(this);
|
||||
|
||||
List<CacheableFile> sortBy({bool foldersToTop = true, SortOption sortOption = SortOption.name, bool reversed = false}) {
|
||||
var list = List<CacheableFile>.empty(growable: true);
|
||||
|
||||
if(foldersToTop) {
|
||||
list.addAll(_sort(files.where((element) => element.isDirectory).toSet(), reversed: reversed, sortOption: sortOption));
|
||||
list.addAll(_sort(files.where((element) => !element.isDirectory).toSet(), reversed: reversed, sortOption: sortOption));
|
||||
} else {
|
||||
list.addAll(_sort(files, reversed: reversed, sortOption: sortOption));
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
List<CacheableFile> _sort(Set<CacheableFile> files, {SortOption sortOption = SortOption.name, bool reversed = false}) {
|
||||
for (var file in files) {
|
||||
final buffer = StringBuffer();
|
||||
|
||||
switch(sortOption) {
|
||||
case SortOption.date:
|
||||
buffer.write(Jiffy.parseFromMillisecondsSinceEpoch(file.modifiedAt?.millisecondsSinceEpoch ?? 0).format(pattern: "yyyyMMddhhmmss"));
|
||||
break;
|
||||
|
||||
case SortOption.name:
|
||||
buffer.write(file.name.toLowerCase());
|
||||
break;
|
||||
|
||||
case SortOption.size:
|
||||
buffer.write(file.size);
|
||||
break;
|
||||
}
|
||||
|
||||
file.sort = buffer.toString();
|
||||
}
|
||||
|
||||
|
||||
var list = files.toList()..sort((a, b) => b.sort!.compareTo(a.sort!));
|
||||
return reversed ? list.reversed.toList() : list;
|
||||
}
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:developer';
|
||||
|
||||
import '../../../../model/accountData.dart';
|
||||
import '../../webuntisApi.dart';
|
||||
@ -41,7 +40,6 @@ class Authenticate extends WebuntisApi {
|
||||
}
|
||||
|
||||
if(_lastResponse == null) {
|
||||
log("Not authenticated... requesting");
|
||||
awaitingResponse = true;
|
||||
await createSession();
|
||||
}
|
||||
|
@ -1,4 +1,3 @@
|
||||
import 'dart:developer';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:better_open_file/better_open_file.dart';
|
||||
@ -35,7 +34,7 @@ class FileElement extends StatefulWidget {
|
||||
progress: ProgressImplementation(),
|
||||
deleteOnCancel: true,
|
||||
onDone: () {
|
||||
//Future<OpenResult> result = OpenFile.open(local); // TODO legacy - refactor remove
|
||||
//Future<OpenResult> result = OpenFile.open(local); // TODO legacy - refactor: remove onDone parameter
|
||||
Navigator.of(context).push(MaterialPageRoute(builder: (context) => FileViewer(path: local)));
|
||||
onDone(OpenResult(message: "File viewer opened", type: ResultType.done));
|
||||
// result.then((value) => {
|
||||
@ -76,7 +75,9 @@ class _FileElementState extends State<FileElement> {
|
||||
],
|
||||
);
|
||||
}
|
||||
return widget.file.isDirectory ? Text("geändert ${Jiffy.parseFromDateTime(widget.file.modifiedAt ?? DateTime.now()).fromNow()}") : Text("${filesize(widget.file.size)}, ${Jiffy.parseFromDateTime(widget.file.modifiedAt ?? DateTime.now()).fromNow()}");
|
||||
return widget.file.isDirectory
|
||||
? Text("${widget.file.sort} geändert ${Jiffy.parseFromDateTime(widget.file.modifiedAt ?? DateTime.now()).fromNow()}")
|
||||
: Text("${widget.file.sort} ${filesize(widget.file.size)}, ${Jiffy.parseFromDateTime(widget.file.modifiedAt ?? DateTime.now()).fromNow()}");
|
||||
}
|
||||
|
||||
@override
|
||||
@ -125,8 +126,6 @@ class _FileElementState extends State<FileElement> {
|
||||
widget.file.currentlyDownloading = true;
|
||||
});
|
||||
|
||||
log("Download: ${widget.file.path} to ${widget.file.name}");
|
||||
|
||||
downloadCore = FileElement.download(context, widget.file.path, widget.file.name, (progress) {
|
||||
setState(() => percent = progress);
|
||||
}, (result) {
|
||||
|
@ -72,7 +72,6 @@ class _FileUploadDialogState extends State<FileUploadDialog> {
|
||||
);
|
||||
|
||||
cancelableOperation!.then((value) {
|
||||
log("Upload done!");
|
||||
setState(() {
|
||||
state = FileUploadState.done;
|
||||
});
|
||||
|
@ -1,5 +1,4 @@
|
||||
|
||||
import 'dart:developer';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
@ -100,12 +99,11 @@ class _FilesState extends State<Files> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
List<CacheableFile> files = (data?.files.toList() ?? List.empty())..sort((a, b) {
|
||||
int directorySort = Provider.of<SettingsProvider>(context).val().fileSettings.sortFoldersToTop ? a.isDirectory ? b.isDirectory ? 0 : 1 : -1 : 0;
|
||||
if(directorySort == 0) return SortOptions.getOption(currentSort).compare(a, b);
|
||||
return directorySort;
|
||||
});
|
||||
if(currentSortDirection) files = files.reversed.toList();
|
||||
List<CacheableFile> files = data?.sortBy(
|
||||
sortOption: currentSort,
|
||||
foldersToTop: Provider.of<SettingsProvider>(context).val().fileSettings.sortFoldersToTop,
|
||||
reversed: currentSortDirection
|
||||
) ?? List<CacheableFile>.empty();
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
@ -206,7 +204,6 @@ class _FilesState extends State<Files> {
|
||||
onTap: () {
|
||||
context.loaderOverlay.show();
|
||||
FilePick.documentPick().then((value) {
|
||||
log(value ?? "?");
|
||||
mediaUpload(value);
|
||||
});
|
||||
Navigator.of(context).pop();
|
||||
@ -218,7 +215,6 @@ class _FilesState extends State<Files> {
|
||||
onTap: () {
|
||||
context.loaderOverlay.show();
|
||||
FilePick.galleryPick().then((value) {
|
||||
log(value?.path ?? "?");
|
||||
mediaUpload(value?.path);
|
||||
});
|
||||
Navigator.of(context).pop();
|
||||
|
@ -1,4 +1,3 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:loader_overlay/loader_overlay.dart';
|
||||
@ -77,7 +76,6 @@ class _ChatTextfieldState extends State<ChatTextfield> {
|
||||
onTap: () {
|
||||
context.loaderOverlay.show();
|
||||
FilePick.documentPick().then((value) {
|
||||
log(value ?? "?");
|
||||
mediaUpload(value);
|
||||
});
|
||||
Navigator.of(context).pop();
|
||||
@ -89,7 +87,6 @@ class _ChatTextfieldState extends State<ChatTextfield> {
|
||||
onTap: () {
|
||||
context.loaderOverlay.show();
|
||||
FilePick.galleryPick().then((value) {
|
||||
log(value?.path ?? "?");
|
||||
mediaUpload(value?.path);
|
||||
});
|
||||
Navigator.of(context).pop();
|
||||
|
@ -1,4 +1,3 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:async/async.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@ -80,7 +79,6 @@ class JoinChat extends SearchDelegate<String> {
|
||||
}
|
||||
);
|
||||
} else if(snapshot.hasError) {
|
||||
log(snapshot.error.toString());
|
||||
return PlaceholderView(icon: Icons.search_off, text: snapshot.error.toString());
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
@ -37,7 +36,6 @@ class _MessageReactionsState extends State<MessageReactions> {
|
||||
future: data,
|
||||
builder: (context, snapshot) {
|
||||
if(snapshot.data == null) return const LoadingSpinner();
|
||||
log(snapshot.data!.toJson().toString());
|
||||
return ListView(
|
||||
children: [
|
||||
...snapshot.data!.data.entries.map<Widget>((entry) {
|
||||
@ -48,7 +46,7 @@ class _MessageReactionsState extends State<MessageReactions> {
|
||||
collapsedIconColor: Theme.of(context).colorScheme.onSurface,
|
||||
|
||||
subtitle: const Text("Tippe für mehr"),
|
||||
leading: Text(entry.key),
|
||||
leading: CenteredLeading(Text(entry.key)),
|
||||
title: Text("${entry.value.length} mal reagiert"),
|
||||
children: entry.value.map((e) {
|
||||
bool isSelf = AccountData().getUsername() == e.actorId;
|
||||
|
@ -1,4 +1,3 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
@ -9,7 +8,6 @@ class FilePick {
|
||||
static Future<XFile?> galleryPick() async {
|
||||
final XFile? pickedImage = await _picker.pickImage(source: ImageSource.gallery);
|
||||
if (pickedImage != null) {
|
||||
log("Picked ${pickedImage.path} (${pickedImage.mimeType})");
|
||||
return pickedImage;
|
||||
}
|
||||
return null;
|
||||
|
Reference in New Issue
Block a user