Ensure that local collections are loaded into memory on app init

This commit is contained in:
Vishnu Mohandas 2020-10-26 15:27:31 +05:30
parent 7fe8f9fa40
commit 95ccf02b2e
2 changed files with 19 additions and 2 deletions

View file

@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:photos/core/constants.dart';
import 'package:photos/core/configuration.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/sync_service.dart';
@ -30,6 +31,7 @@ void _main() async {
areLogsEnabled: false,
);
await Configuration.instance.init();
await CollectionsService.instance.init();
await SyncService.instance.init();
await MemoriesService.instance.init();
await FavoritesService.instance.init();

View file

@ -33,11 +33,22 @@ class CollectionsService {
static final CollectionsService instance =
CollectionsService._privateConstructor();
Future<void> init() async {
final collections = await _db.getAllCollections();
for (final collection in collections) {
_cacheOwnedCollectionAttributes(collection);
}
final sharedCollections = await _db.getAllSharedCollections();
for (final collection in sharedCollections) {
_collectionIDToSharedCollections[collection.id] = collection;
}
}
Future<void> sync() async {
final lastCollectionCreationTime =
await _db.getLastCollectionCreationTime();
var collections =
await getOwnedCollections(lastCollectionCreationTime ?? 0);
await _getOwnedCollections(lastCollectionCreationTime ?? 0);
await _db.insert(collections);
collections = await _db.getAllCollections();
for (final collection in collections) {
@ -59,6 +70,10 @@ class CollectionsService {
return _localCollections[path];
}
List<Collection> getOwnedCollections() {
return _collectionIDToOwnedCollections.values.toList();
}
Future<List<String>> getSharees(int collectionID) {
return Dio()
.get(
@ -115,7 +130,7 @@ class CollectionsService {
return _cachedKeys[collectionID];
}
Future<List<Collection>> getOwnedCollections(int sinceTime) {
Future<List<Collection>> _getOwnedCollections(int sinceTime) {
return Dio()
.get(
Configuration.instance.getHttpEndpoint() + "/collections/owned",