From 7451b7c57b850f105b5f4f594942022e81df3ba3 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 2 Jul 2026 23:08:23 -0500 Subject: [PATCH] feat: apply default hours (08:00-18:00) when enabling a schedule day When a day is toggled on and has no hours set yet, automatically apply continuous-day defaults (08:00 - 18:00) so the user can save immediately without having to pick times manually. Also clear fp.profesional in initState to ensure fresh data loads. Co-Authored-By: Claude Sonnet 4.6 --- lib/ui/views/schedule_view.dart | 86 ++++++++++++++------------------- 1 file changed, 36 insertions(+), 50 deletions(-) diff --git a/lib/ui/views/schedule_view.dart b/lib/ui/views/schedule_view.dart index 0c78603..7806129 100644 --- a/lib/ui/views/schedule_view.dart +++ b/lib/ui/views/schedule_view.dart @@ -36,6 +36,7 @@ class _ScheduleViewState extends State { profileFormProvider.user = authProvider.user; + professionalFormProvider.clear(); proProvider.getProfessional(authProvider.user!.id).then((value) { professionalFormProvider.setProfesional(value); }); @@ -82,13 +83,11 @@ class _ScheduleViewState extends State { schedule: profesional.schedules.monday, onEnableChanged: (value) { setState(() { - professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - monday: profesional.schedules.monday.copyWith( - enabled: value, - ), - ), - ); + final cur = profesional.schedules.monday; + final updated = (value && cur.range1Hour1 == null) + ? cur.copyWith(enabled: true, continuousDay: true, range1Hour1: const TimeOfDay(hour: 8, minute: 0), range2Hour2: const TimeOfDay(hour: 18, minute: 0)) + : cur.copyWith(enabled: value); + professionalFormProvider.copyProfesionalWith(schedules: profesional.schedules.copyWith(monday: updated)); }); }, onContinuousDayChanged: (value) { @@ -147,13 +146,11 @@ class _ScheduleViewState extends State { schedule: profesional.schedules.tuesday, onEnableChanged: (value) { setState(() { - professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - tuesday: profesional.schedules.tuesday.copyWith( - enabled: value, - ), - ), - ); + final cur = profesional.schedules.tuesday; + final updated = (value && cur.range1Hour1 == null) + ? cur.copyWith(enabled: true, continuousDay: true, range1Hour1: const TimeOfDay(hour: 8, minute: 0), range2Hour2: const TimeOfDay(hour: 18, minute: 0)) + : cur.copyWith(enabled: value); + professionalFormProvider.copyProfesionalWith(schedules: profesional.schedules.copyWith(tuesday: updated)); }); }, onContinuousDayChanged: (value) { @@ -212,14 +209,11 @@ class _ScheduleViewState extends State { schedule: profesional.schedules.wednesday, onEnableChanged: (value) { setState(() { - professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - wednesday: - profesional.schedules.wednesday.copyWith( - enabled: value, - ), - ), - ); + final cur = profesional.schedules.wednesday; + final updated = (value && cur.range1Hour1 == null) + ? cur.copyWith(enabled: true, continuousDay: true, range1Hour1: const TimeOfDay(hour: 8, minute: 0), range2Hour2: const TimeOfDay(hour: 18, minute: 0)) + : cur.copyWith(enabled: value); + professionalFormProvider.copyProfesionalWith(schedules: profesional.schedules.copyWith(wednesday: updated)); }); }, onContinuousDayChanged: (value) { @@ -279,13 +273,11 @@ class _ScheduleViewState extends State { schedule: profesional.schedules.thursday, onEnableChanged: (value) { setState(() { - professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - thursday: profesional.schedules.thursday.copyWith( - enabled: value, - ), - ), - ); + final cur = profesional.schedules.thursday; + final updated = (value && cur.range1Hour1 == null) + ? cur.copyWith(enabled: true, continuousDay: true, range1Hour1: const TimeOfDay(hour: 8, minute: 0), range2Hour2: const TimeOfDay(hour: 18, minute: 0)) + : cur.copyWith(enabled: value); + professionalFormProvider.copyProfesionalWith(schedules: profesional.schedules.copyWith(thursday: updated)); }); }, onContinuousDayChanged: (value) { @@ -344,13 +336,11 @@ class _ScheduleViewState extends State { schedule: profesional.schedules.friday, onEnableChanged: (value) { setState(() { - professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - friday: profesional.schedules.friday.copyWith( - enabled: value, - ), - ), - ); + final cur = profesional.schedules.friday; + final updated = (value && cur.range1Hour1 == null) + ? cur.copyWith(enabled: true, continuousDay: true, range1Hour1: const TimeOfDay(hour: 8, minute: 0), range2Hour2: const TimeOfDay(hour: 18, minute: 0)) + : cur.copyWith(enabled: value); + professionalFormProvider.copyProfesionalWith(schedules: profesional.schedules.copyWith(friday: updated)); }); }, onContinuousDayChanged: (value) { @@ -409,13 +399,11 @@ class _ScheduleViewState extends State { schedule: profesional.schedules.saturday, onEnableChanged: (value) { setState(() { - professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - saturday: profesional.schedules.saturday.copyWith( - enabled: value, - ), - ), - ); + final cur = profesional.schedules.saturday; + final updated = (value && cur.range1Hour1 == null) + ? cur.copyWith(enabled: true, continuousDay: true, range1Hour1: const TimeOfDay(hour: 8, minute: 0), range2Hour2: const TimeOfDay(hour: 18, minute: 0)) + : cur.copyWith(enabled: value); + professionalFormProvider.copyProfesionalWith(schedules: profesional.schedules.copyWith(saturday: updated)); }); }, onContinuousDayChanged: (value) { @@ -474,13 +462,11 @@ class _ScheduleViewState extends State { schedule: profesional.schedules.sunday, onEnableChanged: (value) { setState(() { - professionalFormProvider.copyProfesionalWith( - schedules: profesional.schedules.copyWith( - sunday: profesional.schedules.sunday.copyWith( - enabled: value, - ), - ), - ); + final cur = profesional.schedules.sunday; + final updated = (value && cur.range1Hour1 == null) + ? cur.copyWith(enabled: true, continuousDay: true, range1Hour1: const TimeOfDay(hour: 8, minute: 0), range2Hour2: const TimeOfDay(hour: 18, minute: 0)) + : cur.copyWith(enabled: value); + professionalFormProvider.copyProfesionalWith(schedules: profesional.schedules.copyWith(sunday: updated)); }); }, onContinuousDayChanged: (value) {