From fa44f1ea56b96af04c829b068896c33c233c3664 Mon Sep 17 00:00:00 2001 From: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Date: Sat, 22 Aug 2026 09:36:08 +0530 Subject: [PATCH] refactor the user provider to be a notifier --- mobile/lib/providers/user.provider.dart | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) 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);