Files
immich/mobile/lib/providers/infrastructure/current_album.provider.dart

31 lines
937 B
Dart
Raw Normal View History

2025-07-15 20:37:44 -05:00
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/album/album.model.dart';
import 'package:immich_mobile/providers/infrastructure/album.provider.dart';
final currentRemoteAlbumScopedProvider = Provider<RemoteAlbum?>((ref) => null);
final currentRemoteAlbumProvider = NotifierProvider<CurrentAlbumNotifier, RemoteAlbum?>(
2025-07-15 20:37:44 -05:00
CurrentAlbumNotifier.new,
dependencies: [currentRemoteAlbumScopedProvider, remoteAlbumServiceProvider],
2025-07-15 20:37:44 -05:00
);
class CurrentAlbumNotifier extends Notifier<RemoteAlbum?> {
2025-07-15 20:37:44 -05:00
@override
RemoteAlbum? build() {
final album = ref.watch(currentRemoteAlbumScopedProvider);
2025-07-15 20:37:44 -05:00
if (album == null) {
return null;
}
2025-07-15 20:37:44 -05:00
final watcher = ref.watch(remoteAlbumServiceProvider).watchAlbum(album.id).listen((updatedAlbum) {
2025-07-15 20:37:44 -05:00
if (updatedAlbum != null) {
state = updatedAlbum;
}
});
ref.onDispose(watcher.cancel);
return album;
2025-07-15 20:37:44 -05:00
}
}