53 lines
1.3 KiB
Dart
53 lines
1.3 KiB
Dart
|
|
import '../../api/apiResponse.dart';
|
|
import '../../api/marianumcloud/webdav/queries/listFiles/listFilesCache.dart';
|
|
import '../../api/marianumcloud/webdav/queries/listFiles/listFilesResponse.dart';
|
|
import '../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() => [_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();
|
|
}
|
|
}
|