feat: pedir nombre al primer login + avatar con iniciales

- Detectar usuario nuevo (nombre == telefono) y redirigir
  a pantalla setup-name antes del dashboard
- SetupNameView: bienvenida con campo de nombre obligatorio
- AuthProvider.updateName() para guardar via PATCH /users/me
- NavbarAvatar: iniciales con color por inicial del nombre
  en lugar de no-image.jpg cuando no hay foto
- Perfil: mismo avatar de iniciales en la pantalla de perfil

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-06-27 09:29:58 -05:00
co-authored by Claude Sonnet 4.6
parent 7349d4e3fd
commit bfa494b7fe
6 changed files with 272 additions and 20 deletions
+12
View File
@@ -21,6 +21,7 @@ import 'package:prosapp_web_app/ui/views/service_view.dart';
import 'package:prosapp_web_app/ui/views/services_history_view.dart';
import 'package:prosapp_web_app/ui/views/services_requests_view.dart';
import 'package:prosapp_web_app/ui/views/services_view.dart';
import 'package:prosapp_web_app/ui/views/setup_name_view.dart';
import 'package:prosapp_web_app/ui/views/support_view.dart';
import 'package:provider/provider.dart';
@@ -40,6 +41,17 @@ class DashboardHandlers {
},
);
static Handler setupName = Handler(
handlerFunc: (context, params) {
final authProvider = Provider.of<AuthProvider>(context!);
if (authProvider.authStatus == AuthStatus.authenticated) {
return const SetupNameView();
} else {
return const LoginView();
}
},
);
static Handler support = Handler(
handlerFunc: (context, params) {
final authProvider = Provider.of<AuthProvider>(context!);
+10
View File
@@ -17,6 +17,9 @@ class Flurorouter {
static String dashboardRoute = "/dashboard";
static String supportRoute = "/dashboard/support";
// Onboarding
static String setupNameRoute = "/dashboard/setup-name";
// Users
static String profileRoute = "/dashboard/profile";
static String phoneRoute = "/dashboard/phone";
@@ -68,6 +71,13 @@ class Flurorouter {
transitionType: TransitionType.none,
);
// Onboarding
router.define(
setupNameRoute,
handler: DashboardHandlers.setupName,
transitionType: TransitionType.none,
);
// Dashboard Routes
router.define(
dashboardRoute,