Fixed sorting on files, removed some logging

This commit is contained in:
2023-07-16 22:15:24 +02:00
parent 575343ff82
commit a5b2242dc3
17 changed files with 210 additions and 180 deletions

View File

@ -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}");
}
}
}

View File

@ -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']);
}

View File

@ -13,6 +13,7 @@ class CacheableFile {
String? eTag;
DateTime? createdAt;
DateTime? modifiedAt;
String? sort;
@JsonKey(includeFromJson: false, includeToJson: false)
bool currentlyDownloading = false;

View File

@ -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;
}
}

View File

@ -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();
}