Fixed sorting on files, removed some logging
This commit is contained in:
@ -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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user