import 'dart:developer'; 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(int index) => index +1 <= length ? this[index] : null; T firstOrNull() => isEmpty ? null : first; T lastOrNull() => isEmpty ? null : last; } class FilesProps extends DataHolder { List folderPath = List.empty(growable: true); String currentFolderName = "Home"; ListFilesResponse? _listFilesResponse; ListFilesResponse get listFilesResponse => _listFilesResponse!; void runPath(List path) { log(path.toString()); folderPath = path; run(); } @override List properties() { return [_listFilesResponse]; } @override void run() { _listFilesResponse = null; notifyListeners(); log("fetch data"); ListFilesCache( path: folderPath.isEmpty ? "/" : folderPath.join("/"), onUpdate: (ListFilesResponse data) => { _listFilesResponse = data, log("got data"), notifyListeners(), } ); } void enterFolder(String name) { folderPath.add(name); currentFolderName = name; run(); } void popFolder() { folderPath.removeLast(); if(folderPath.isEmpty) currentFolderName = "Home"; run(); } }