Explorar el Código

added delay for caching files after init + cached files will be deleted on logging out

ashilkn hace 3 años
padre
commit
18fb6917ae

+ 2 - 0
lib/core/configuration.dart

@@ -26,6 +26,7 @@ import 'package:photos/services/billing_service.dart';
 import 'package:photos/services/collections_service.dart';
 import 'package:photos/services/favorites_service.dart';
 import 'package:photos/services/memories_service.dart';
+import 'package:photos/services/search_service.dart';
 import 'package:photos/services/sync_service.dart';
 import 'package:photos/utils/crypto_util.dart';
 import 'package:shared_preferences/shared_preferences.dart';
@@ -158,6 +159,7 @@ class Configuration {
     FavoritesService.instance.clearCache();
     MemoriesService.instance.clearCache();
     BillingService.instance.clearCache();
+    SearchService.instance.clearCachedFiles();
     Bus.instance.fire(UserLoggedOutEvent());
   }
 

+ 2 - 0
lib/main.dart

@@ -25,6 +25,7 @@ import 'package:photos/services/memories_service.dart';
 import 'package:photos/services/notification_service.dart';
 import 'package:photos/services/push_service.dart';
 import 'package:photos/services/remote_sync_service.dart';
+import 'package:photos/services/search_service.dart';
 import 'package:photos/services/sync_service.dart';
 import 'package:photos/services/trash_sync_service.dart';
 import 'package:photos/services/update_service.dart';
@@ -141,6 +142,7 @@ Future<void> _init(bool isBackground, {String via = ''}) async {
   await MemoriesService.instance.init();
   await LocalSettings.instance.init();
   await FileMigrationService.instance.init();
+  await SearchService.instance.init();
   if (Platform.isIOS) {
     PushService.instance.init().then((_) {
       FirebaseMessaging.onBackgroundMessage(

+ 10 - 3
lib/services/search_service.dart

@@ -10,18 +10,25 @@ class SearchService {
   static final SearchService instance = SearchService._privateConstructor();
 
   Future<void> init() async {
-    _cachedFiles = await FilesDB.instance.getAllFilesFromDB();
+    // Intention of delay is to give more CPU cycles to other tasks
+    Future.delayed(const Duration(seconds: 5), () async {
+      FilesDB.instance
+          .getAllFilesFromDB()
+          .then((value) => _cachedFiles = value);
+    });
 
     Bus.instance.on<LocalPhotosUpdatedEvent>().listen((event) {
       _cachedFiles = null;
       getAllFiles();
     });
-
-    //need collectionUpdatedEvent listener?
   }
 
   Future<List<File>> getAllFiles() async {
     _cachedFiles ??= await FilesDB.instance.getAllFilesFromDB();
     return _cachedFiles;
   }
+
+  void clearCachedFiles() {
+    _cachedFiles.clear();
+  }
 }

+ 0 - 1
lib/services/user_service.dart

@@ -895,7 +895,6 @@ class UserService {
       List<LocationSearchResult> locationsAndMatchedFiles = [];
 
       for (var locationAndBbox in matchedLocationNamesAndBboxs) {
-        // locationsToMatchedFiles.addAll({locationAndBbox['place']: []});
         locationsAndMatchedFiles
             .add(LocationSearchResult(locationAndBbox['place'], []));
         for (File file in allFiles) {