diff --git a/mobile/lib/providers/user.provider.dart b/mobile/lib/providers/user.provider.dart index 8b09ffb00f..1099b4b166 100644 --- a/mobile/lib/providers/user.provider.dart +++ b/mobile/lib/providers/user.provider.dart @@ -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 { - CurrentUserProvider(this._userService) : super(null) { - unawaited(_userService.tryGetMyUser().then((user) => state = user ?? state)); - streamSub = _userService.watchMyUser().listen((user) => state = user ?? state); - } +final _userStreamProvider = StreamProvider((ref) => ref.watch(userServiceProvider).watchMyUser()); - final UserService _userService; - late final StreamSubscription streamSub; +class CurrentUserProvider extends Notifier { + @override + UserDto? build() => ref.watch(_userStreamProvider).valueOrNull; Future refresh() async { try { - await _userService.refreshMyUser(); + await ref.read(userServiceProvider).refreshMyUser(); } catch (_) {} } - - @override - void dispose() { - unawaited(streamSub.cancel()); - super.dispose(); - } } -final currentUserProvider = StateNotifierProvider((ref) { - return CurrentUserProvider(ref.watch(userServiceProvider)); -}); +final currentUserProvider = NotifierProvider(CurrentUserProvider.new); final authUserProvider = Provider((ref) { final user = ref.watch(currentUserProvider);