diff --git a/lib/providers/auth_provider.dart b/lib/providers/auth_provider.dart index f7c2c6c..da3902f 100644 --- a/lib/providers/auth_provider.dart +++ b/lib/providers/auth_provider.dart @@ -1,11 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; +import 'package:prosapp_web_app/models/pro_state.dart'; import 'package:prosapp_web_app/models/usuario.dart'; import 'package:prosapp_web_app/providers/professional_form_provider.dart'; import 'package:prosapp_web_app/providers/professional_provider.dart'; import 'package:prosapp_web_app/providers/services_provider.dart'; import 'package:prosapp_web_app/router/router.dart'; import 'package:prosapp_web_app/services/api_service.dart'; +import 'package:prosapp_web_app/services/local_storage.dart'; import 'package:prosapp_web_app/services/navigation_service.dart'; import 'package:prosapp_web_app/services/notifications_service.dart'; import 'package:provider/provider.dart'; @@ -179,6 +181,11 @@ class AuthProvider extends ChangeNotifier { final data = await _api.get('/auth/me'); user = Usuario.fromDocument(data as Map); userAverageScore = await _loadAverageScore(user!.id); + // If the user is not an active professional, clear the persisted pro mode + // flag so a stale value doesn't leave them stuck in professional mode. + if (user!.proState != ProState.active) { + LocalStorage.prefs.setBool('isProModeActive', false); + } authStatus = AuthStatus.authenticated; notifyListeners(); return true; diff --git a/lib/providers/professional_provider.dart b/lib/providers/professional_provider.dart index f2d16bc..acda988 100644 --- a/lib/providers/professional_provider.dart +++ b/lib/providers/professional_provider.dart @@ -4,12 +4,19 @@ import 'package:prosapp_web_app/models/payment_method_entity.dart'; import 'package:prosapp_web_app/models/profesional.dart'; import 'package:prosapp_web_app/models/schedules.dart'; import 'package:prosapp_web_app/services/api_service.dart'; +import 'package:prosapp_web_app/services/local_storage.dart'; class ProfessionalProvider extends ChangeNotifier { Profesional? profesional; bool _isProModeActive = false; final _api = ApiService.instance; + static const _kProModeKey = 'isProModeActive'; + + ProfessionalProvider() { + _isProModeActive = LocalStorage.prefs.getBool(_kProModeKey) ?? false; + } + bool get isProModeActive => _isProModeActive; Future getProfessional(String uid) async { @@ -59,16 +66,19 @@ class ProfessionalProvider extends ChangeNotifier { void logout() { _isProModeActive = false; + LocalStorage.prefs.setBool(_kProModeKey, false); notifyListeners(); } void toggleProMode() { _isProModeActive = !_isProModeActive; + LocalStorage.prefs.setBool(_kProModeKey, _isProModeActive); notifyListeners(); } void setIsProModeActive(bool value) { _isProModeActive = value; + LocalStorage.prefs.setBool(_kProModeKey, value); notifyListeners(); }