mirror of
https://github.com/immich-app/immich
synced 2026-08-29 13:15:45 +00:00
refactor the user provider to be a notifier
This commit is contained in:
parent
17b4b1fda4
commit
fa44f1ea56
1 changed files with 6 additions and 18 deletions
|
|
@ -2,34 +2,22 @@ import 'dart:async';
|
|||
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:immich_mobile/domain/models/user.model.dart';
|
||||
import 'package:immich_mobile/domain/services/user.service.dart';
|
||||
import 'package:immich_mobile/providers/infrastructure/user.provider.dart';
|
||||
|
||||
class CurrentUserProvider extends StateNotifier<UserDto?> {
|
||||
CurrentUserProvider(this._userService) : super(null) {
|
||||
unawaited(_userService.tryGetMyUser().then((user) => state = user ?? state));
|
||||
streamSub = _userService.watchMyUser().listen((user) => state = user ?? state);
|
||||
}
|
||||
final _userStreamProvider = StreamProvider<UserDto?>((ref) => ref.watch(userServiceProvider).watchMyUser());
|
||||
|
||||
final UserService _userService;
|
||||
late final StreamSubscription<UserDto?> streamSub;
|
||||
class CurrentUserProvider extends Notifier<UserDto?> {
|
||||
@override
|
||||
UserDto? build() => ref.watch(_userStreamProvider).valueOrNull;
|
||||
|
||||
Future<void> refresh() async {
|
||||
try {
|
||||
await _userService.refreshMyUser();
|
||||
await ref.read(userServiceProvider).refreshMyUser();
|
||||
} catch (_) {}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
unawaited(streamSub.cancel());
|
||||
super.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
final currentUserProvider = StateNotifierProvider<CurrentUserProvider, UserDto?>((ref) {
|
||||
return CurrentUserProvider(ref.watch(userServiceProvider));
|
||||
});
|
||||
final currentUserProvider = NotifierProvider<CurrentUserProvider, UserDto?>(CurrentUserProvider.new);
|
||||
|
||||
final authUserProvider = Provider<UserDto>((ref) {
|
||||
final user = ref.watch(currentUserProvider);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue