immich/mobile/lib/providers/infrastructure/album.provider.dart
Adam Gastineau 225ca9ab8d
chore(mobile): use Drift @DriftAccessor() and collapse some providers (#30693)
* chore(mobile): use Drift @DriftAccessor() and collapse some providers

* Fix import order

* Required formatting
2026-08-17 14:43:32 -07:00

38 lines
1.8 KiB
Dart

import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/album/album.model.dart';
import 'package:immich_mobile/domain/models/album/local_album.model.dart';
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
import 'package:immich_mobile/domain/services/local_album.service.dart';
import 'package:immich_mobile/domain/services/remote_album.service.dart';
import 'package:immich_mobile/infrastructure/repositories/local_album.repository.dart';
import 'package:immich_mobile/providers/infrastructure/db.provider.dart';
import 'package:immich_mobile/providers/infrastructure/remote_album.provider.dart';
import 'package:immich_mobile/repositories/drift_album_api_repository.dart';
import 'package:immich_mobile/services/foreground_upload.service.dart';
final localAlbumProvider = FutureProvider<List<LocalAlbum>>(
(ref) => LocalAlbumService(ref.watch(driftProvider).localAlbumRepository)
.getAll(sortBy: {SortLocalAlbumsBy.newestAsset})
.then((albums) => albums.where((album) => album.assetCount > 0).toList()),
);
final localAlbumThumbnailProvider = FutureProvider.family<LocalAsset?, String>(
(ref, albumId) => LocalAlbumService(ref.watch(driftProvider).localAlbumRepository).getThumbnail(albumId),
);
final remoteAlbumServiceProvider = Provider<RemoteAlbumService>(
(ref) => RemoteAlbumService(
ref.watch(driftProvider).remoteAlbumRepository,
ref.watch(driftAlbumApiRepositoryProvider),
ref.watch(foregroundUploadServiceProvider),
),
);
final remoteAlbumProvider = NotifierProvider<RemoteAlbumNotifier, RemoteAlbumState>(
RemoteAlbumNotifier.new,
dependencies: [remoteAlbumServiceProvider],
);
final albumsContainingAssetProvider = FutureProvider.family<List<RemoteAlbum>, String>(
(ref, assetId) => ref.watch(remoteAlbumServiceProvider).getAlbumsContainingAsset(assetId),
);