import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../core/locale/language_provider.dart'; import '../../shared/models/user.dart'; import 'profile_service.dart'; class ProfileNotifier extends StateNotifier> { final ProfileService _service; final void Function(String) _setLanguage; ProfileNotifier(this._service, this._setLanguage) : super(const AsyncValue.loading()) { load(); } Future load() async { state = const AsyncValue.loading(); state = await AsyncValue.guard(() => _service.getProfile()); _syncLanguage(); } Future update(UpdateProfileRequest req) async { try { final updated = await _service.updateProfile(req); state = AsyncValue.data(updated); _syncLanguage(); return true; } catch (_) { return false; } } // Propagates the user's preferred language to the global languageProvider. void _syncLanguage() { final lang = state.valueOrNull?.preferences['language'] as String?; if (lang != null && supportedLanguages.containsKey(lang)) { _setLanguage(lang); } } } final profileProvider = StateNotifierProvider>( (ref) => ProfileNotifier( ref.read(profileServiceProvider), (lang) => ref.read(languageProvider.notifier).state = lang, ), );