diff --git a/mobile/lib/pages/collections/albums/albums_collection.page.dart b/mobile/lib/pages/collections/albums/albums_collection.page.dart index f71bfbafc0a52..07912b681def1 100644 --- a/mobile/lib/pages/collections/albums/albums_collection.page.dart +++ b/mobile/lib/pages/collections/albums/albums_collection.page.dart @@ -8,7 +8,6 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/extensions/theme_extensions.dart'; -import 'package:immich_mobile/main.dart'; import 'package:immich_mobile/pages/common/large_leading_tile.dart'; import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart'; import 'package:immich_mobile/providers/album/albumv2.provider.dart'; @@ -78,7 +77,11 @@ class AlbumsCollectionPage extends HookConsumerWidget { return Scaffold( appBar: AppBar( - title: showImmichAppbar ? null : Text('albums'.tr()), + title: showImmichAppbar + ? null + : Text( + "${'albums'.tr()} ${albums.length}", + ), bottom: showImmichAppbar ? const PreferredSize( preferredSize: Size.fromHeight(0), diff --git a/mobile/lib/providers/album/albumv2.provider.dart b/mobile/lib/providers/album/albumv2.provider.dart index 9d6cc63075dfb..23d6329c36ab1 100644 --- a/mobile/lib/providers/album/albumv2.provider.dart +++ b/mobile/lib/providers/album/albumv2.provider.dart @@ -27,10 +27,13 @@ class AlbumNotifierV2 extends StateNotifier> { late final StreamSubscription> _streamSub; Future refreshAlbums() async { - Future.wait([ - _albumService.refreshDeviceAlbums(), - _albumService.refreshAllRemoteAlbums(), - ]); + // Future.wait([ + // _albumService.refreshDeviceAlbums(), + // _albumService.refreshAllRemoteAlbums(), + // ]); + await _albumService.refreshDeviceAlbums(); + await _albumService.refreshRemoteAlbums(isShared: false); + await _albumService.refreshRemoteAlbums(isShared: true); } Future getDeviceAlbums() { diff --git a/mobile/lib/services/album.service.dart b/mobile/lib/services/album.service.dart index d6127cd1a6046..315e6e16b7f53 100644 --- a/mobile/lib/services/album.service.dart +++ b/mobile/lib/services/album.service.dart @@ -175,26 +175,45 @@ class AlbumService { /// V2 Future refreshAllRemoteAlbums() async { + if (!_remoteCompleter.isCompleted) { + // guard against concurrent calls + return _remoteCompleter.future; + } + _remoteCompleter = Completer(); final Stopwatch sw = Stopwatch()..start(); + bool changes = false; try { - final [sharedAlbums, ownedAlbums] = await Future.wait([ + final albumList = await Future.wait([ _apiService.albumsApi.getAllAlbums(shared: true), _apiService.albumsApi.getAllAlbums(shared: false), ]); - final List allAlbums = [ - ...sharedAlbums ?? [], - ...ownedAlbums ?? [], - ]; + // for (int i = 0; i < albumList.length; i++) { + // final albums = albumList[i]; + // final isShared = i == 1; + // if (albums != null) { + // final hasChange = await _syncService.syncRemoteAlbumsToDb( + // albums, + // isShared: isShared, + // loadDetails: (dto) async => dto.assetCount == dto.assets.length + // ? dto + // : (await _apiService.albumsApi.getAlbumInfo(dto.id)) ?? dto, + // ); - print("All albums: ${allAlbums.length}"); - - debugPrint("refreshAllAlbums took ${sw.elapsedMilliseconds}ms"); - return true; + // if (hasChange) { + // changes = true; + // } + // } + // } } catch (e) { debugPrint("Error refreshing all albums: $e"); return false; + } finally { + _remoteCompleter.complete(changes); } + + debugPrint("refreshAllRemoteAlbums took ${sw.elapsedMilliseconds}ms"); + return changes; } Future createAlbum(