chore(mobile): Improve reliability of asset loading and indexing (#1813)

* chore(mobile): Improve reliability of asset loading and indexing

* chore: add comments

* chore: remove log

* fix: put back box open sequence
This commit is contained in:
Alex 2023-02-21 09:25:31 -06:00 committed by GitHub
parent 4be55428d2
commit bf3f4e560d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 11 deletions

View File

@ -587,6 +587,7 @@ class BackupNotifier extends StateNotifier<BackUpState> {
log.warning("WARNING [resumeBackup] failed to acquireLock");
return;
}
await Future.wait([
Hive.openBox<HiveBackupAlbums>(hiveBackupInfoBox),
Hive.openBox<HiveDuplicatedAssets>(duplicatedAssetsBox),
@ -597,16 +598,21 @@ class BackupNotifier extends StateNotifier<BackUpState> {
Set<AvailableAlbum> selectedAlbums = state.selectedBackupAlbums;
Set<AvailableAlbum> excludedAlbums = state.excludedBackupAlbums;
if (albums != null) {
selectedAlbums = _updateAlbumsBackupTime(
selectedAlbums,
albums.selectedAlbumIds,
albums.lastSelectedBackupTime,
);
excludedAlbums = _updateAlbumsBackupTime(
excludedAlbums,
albums.excludedAlbumsIds,
albums.lastExcludedBackupTime,
);
if (selectedAlbums.isNotEmpty) {
selectedAlbums = _updateAlbumsBackupTime(
selectedAlbums,
albums.selectedAlbumIds,
albums.lastSelectedBackupTime,
);
}
if (excludedAlbums.isNotEmpty) {
excludedAlbums = _updateAlbumsBackupTime(
excludedAlbums,
albums.excludedAlbumsIds,
albums.lastExcludedBackupTime,
);
}
}
final Box backgroundBox = Hive.box(backgroundBackupInfoBox);
state = state.copyWith(

View File

@ -67,7 +67,7 @@ class HomePage extends HookConsumerWidget {
);
void reloadAllAsset() {
ref.read(assetProvider.notifier).getAllAsset();
ref.watch(assetProvider.notifier).getAllAsset();
}
Widget buildBody() {

View File

@ -11,6 +11,8 @@ class AuthGuard extends AutoRouteGuard {
@override
void onNavigation(NavigationResolver resolver, StackRouter router) async {
try {
// temporary fix for race condition that the _apiService
// get called before accessToken is set
var userInfoHiveBox = await Hive.openBox(userInfoBox);
var accessToken = userInfoHiveBox.get(accessTokenKey);
_apiService.setAccessToken(accessToken);

View File

@ -35,6 +35,12 @@ class AssetService {
/// Returns `null` if the server state did not change, else list of assets
Future<Pair<List<Asset>?, String?>> getRemoteAssets({String? etag}) async {
try {
// temporary fix for race condition that the _apiService
// get called before accessToken is set
var userInfoHiveBox = await Hive.openBox(userInfoBox);
var accessToken = userInfoHiveBox.get(accessTokenKey);
_apiService.setAccessToken(accessToken);
final Pair<List<AssetResponseDto>, String?>? remote =
await _apiService.assetApi.getAllAssetsWithETag(eTag: etag);
if (remote == null) {