improved performance and battery usage on older devices
This commit is contained in:
@@ -29,6 +29,19 @@ class CacheableFile {
|
||||
/// file/folder in the list. Nullable so older cached entries decode fine.
|
||||
bool? isSharedWithMe;
|
||||
|
||||
/// Lower-cased [name] for sorting/filtering, cached because comparators
|
||||
/// call it for every comparison (name is mutable, hence the identity check).
|
||||
String get lowerName {
|
||||
if (!identical(_lowerNameFor, name)) {
|
||||
_lowerNameFor = name;
|
||||
_lowerName = name.toLowerCase();
|
||||
}
|
||||
return _lowerName;
|
||||
}
|
||||
|
||||
String? _lowerNameFor;
|
||||
String _lowerName = '';
|
||||
|
||||
CacheableFile({
|
||||
required this.path,
|
||||
required this.isDirectory,
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:crypto/crypto.dart';
|
||||
import 'package:localstore/localstore.dart';
|
||||
|
||||
import '../../../../../utils/cache_invalidation_bus.dart';
|
||||
import '../../../../cache_store.dart';
|
||||
import '../../../../request_cache.dart';
|
||||
import 'list_files.dart';
|
||||
import 'list_files_params.dart';
|
||||
@@ -43,14 +43,11 @@ class ListFilesCache extends SimpleCache<ListFilesResponse> {
|
||||
/// (slow) root listing is already populated by the time the user
|
||||
/// navigates to the Files module.
|
||||
///
|
||||
/// No-ops when a cached root payload is already present in localstore —
|
||||
/// No-ops when a cached root payload is already present in the cache —
|
||||
/// the regular TTL handling in [RequestCache] takes over from there.
|
||||
static Future<void> prefetchRootListing() async {
|
||||
const rootPath = '';
|
||||
final cached = await Localstore.instance
|
||||
.collection(RequestCache.collection)
|
||||
.doc(_documentId(rootPath))
|
||||
.get();
|
||||
final cached = await CacheStore.instance.read(_documentId(rootPath));
|
||||
if (cached != null) return;
|
||||
// Drive the same code path as a regular fetch so the result lands in
|
||||
// the cache; we don't care about the in-memory callback here.
|
||||
@@ -69,10 +66,7 @@ class ListFilesCache extends SimpleCache<ListFilesResponse> {
|
||||
/// `_FilesView` for that path via [CacheInvalidationBus] so it refetches
|
||||
/// even while it is sitting in the background of the navigation stack.
|
||||
static Future<void> invalidate(String path) async {
|
||||
await Localstore.instance
|
||||
.collection(RequestCache.collection)
|
||||
.doc(_documentId(path))
|
||||
.delete();
|
||||
await CacheStore.instance.delete(_documentId(path));
|
||||
CacheInvalidationBus.notifyListFiles(path);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user