refactor(mobile): render list (#16303)

* refactor(mobile): render list 2

* wip

* wip: asset selection page

* remove render_list provider

* remove dead code

* yaml format

* remove unused file

* woop woop more clean up

* woop woop more clean up 2

* fix: album selection doesn't load instantly
This commit is contained in:
Alex 2025-02-25 11:33:48 -06:00 committed by GitHub
parent 7c851893b4
commit d0381fddec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 134 additions and 140 deletions

View file

@ -1,13 +1,7 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/entities/asset.entity.dart';
import 'package:immich_mobile/providers/db.provider.dart';
import 'package:isar/isar.dart';
import 'package:immich_mobile/services/asset.service.dart';
final allMotionPhotosProvider = FutureProvider<List<Asset>>((ref) async {
return ref
.watch(dbProvider)
.assets
.filter()
.livePhotoVideoIdIsNotNull()
.findAll();
return ref.watch(assetServiceProvider).getMotionAssets();
});

View file

@ -1,6 +1,6 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/models/search/search_result.model.dart';
import 'package:immich_mobile/providers/asset_viewer/render_list.provider.dart';
import 'package:immich_mobile/services/timeline.service.dart';
import 'package:immich_mobile/widgets/asset_grid/asset_grid_data_structure.dart';
import 'package:immich_mobile/models/search/search_filter.model.dart';
import 'package:immich_mobile/services/search.service.dart';
@ -44,14 +44,13 @@ class PaginatedSearchNotifier extends StateNotifier<SearchResult> {
}
@riverpod
AsyncValue<RenderList> paginatedSearchRenderList(
Future<RenderList> paginatedSearchRenderList(
PaginatedSearchRenderListRef ref,
) {
final result = ref.watch(paginatedSearchProvider);
return ref.watch(
renderListProviderWithGrouping(
(result.assets, GroupAssetsBy.none),
),
final timelineService = ref.watch(timelineServiceProvider);
return timelineService.getTimelineFromAssets(
result.assets,
GroupAssetsBy.none,
);
}

View file

@ -7,12 +7,12 @@ part of 'paginated_search.provider.dart';
// **************************************************************************
String _$paginatedSearchRenderListHash() =>
r'4585c832106b16b6d294055f47bbbe83e0802846';
r'9efb98fd73d4e57e1ccd97a902cd459e3f18f749';
/// See also [paginatedSearchRenderList].
@ProviderFor(paginatedSearchRenderList)
final paginatedSearchRenderListProvider =
AutoDisposeProvider<AsyncValue<RenderList>>.internal(
AutoDisposeFutureProvider<RenderList>.internal(
paginatedSearchRenderList,
name: r'paginatedSearchRenderListProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
@ -22,7 +22,6 @@ final paginatedSearchRenderListProvider =
allTransitiveDependencies: null,
);
typedef PaginatedSearchRenderListRef
= AutoDisposeProviderRef<AsyncValue<RenderList>>;
typedef PaginatedSearchRenderListRef = AutoDisposeFutureProviderRef<RenderList>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member

View file

@ -1,18 +1,9 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/entities/asset.entity.dart';
import 'package:immich_mobile/providers/db.provider.dart';
import 'package:immich_mobile/providers/user.provider.dart';
import 'package:isar/isar.dart';
import 'package:immich_mobile/services/asset.service.dart';
final recentlyAddedAssetProvider = FutureProvider<List<Asset>>((ref) async {
final user = ref.read(currentUserProvider);
if (user == null) return [];
final assetService = ref.read(assetServiceProvider);
return ref
.watch(dbProvider)
.assets
.where()
.ownerIdEqualToAnyChecksum(user.isarId)
.sortByFileCreatedAtDesc()
.findAll();
return assetService.getRecentlyAddedAssets();
});