Client/lib/data/files/filesProps.dart
2023-05-06 11:40:38 +02:00

54 lines
1.4 KiB
Dart

import 'package:marianum_mobile/api/apiResponse.dart';
import 'package:marianum_mobile/api/marianumcloud/webdav/queries/listFiles/listFilesCache.dart';
import 'package:marianum_mobile/api/marianumcloud/webdav/queries/listFiles/listFilesResponse.dart';
import 'package:marianum_mobile/data/dataHolder.dart';
extension ExtendedList on List {
T indexOrNull<T>(int index) => index +1 <= length ? this[index] : null;
T firstOrNull<T>() => isEmpty ? null : first;
T lastOrNull<T>() => isEmpty ? null : last;
}
class FilesProps extends DataHolder {
List<String> folderPath = List<String>.empty(growable: true);
String currentFolderName = "Home";
ListFilesResponse? _listFilesResponse;
ListFilesResponse get listFilesResponse => _listFilesResponse!;
void runPath(List<String> path) {
folderPath = path;
run();
}
@override
List<ApiResponse?> properties() {
return [_listFilesResponse];
}
@override
void run() {
_listFilesResponse = null;
notifyListeners();
ListFilesCache(
path: folderPath.isEmpty ? "/" : folderPath.join("/"),
onUpdate: (ListFilesResponse data) => {
_listFilesResponse = data,
notifyListeners(),
}
);
}
void enterFolder(String name) {
folderPath.add(name);
currentFolderName = name;
run();
}
void popFolder() {
folderPath.removeLast();
if(folderPath.isEmpty) currentFolderName = "Home";
run();
}
}