From 02d25d0cc7760045d7b546b8a61cd3a7cd8b070b Mon Sep 17 00:00:00 2001 From: Sterlen Date: Fri, 2 Jan 2026 18:22:50 -0600 Subject: [PATCH] Refine: Enforce timer display constraints (seconds require minutes) --- lib/screens/log/pad_tracker_screen.dart | 14 ++++++++++---- .../settings/supplies_settings_screen.dart | 16 +++++++++++++--- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/lib/screens/log/pad_tracker_screen.dart b/lib/screens/log/pad_tracker_screen.dart index 6ca3a9f..f7ff23e 100644 --- a/lib/screens/log/pad_tracker_screen.dart +++ b/lib/screens/log/pad_tracker_screen.dart @@ -475,10 +475,13 @@ class _PadTrackerScreenState extends ConsumerState { final minutes = d.inMinutes % 60; final seconds = d.inSeconds % 60; + final bool showMins = user.showPadTimerMinutes; + final bool showSecs = user.showPadTimerSeconds && showMins; // Enforce minutes must be shown to show seconds + List parts = []; if (hours > 0) parts.add('${hours}h'); - if (user.showPadTimerMinutes) parts.add('${minutes}m'); - if (user.showPadTimerSeconds) parts.add('${seconds}s'); + if (showMins) parts.add('${minutes}m'); + if (showSecs) parts.add('${seconds}s'); if (parts.isEmpty) { if (hours == 0 && minutes == 0 && seconds == 0) return 'Just now'; @@ -495,12 +498,15 @@ class _PadTrackerScreenState extends ConsumerState { final minutes = absRemaining.inMinutes % 60; final seconds = absRemaining.inSeconds % 60; + final bool showMins = user.showPadTimerMinutes; + final bool showSecs = user.showPadTimerSeconds && showMins; // Enforce minutes must be shown to show seconds + List parts = []; if (hours > 0) parts.add('${hours}h'); - if (user.showPadTimerMinutes) { + if (showMins) { parts.add('${minutes}m'); } - if (user.showPadTimerSeconds) { + if (showSecs) { parts.add('${seconds}s'); } diff --git a/lib/screens/settings/supplies_settings_screen.dart b/lib/screens/settings/supplies_settings_screen.dart index 6c4d0c2..2bb726a 100644 --- a/lib/screens/settings/supplies_settings_screen.dart +++ b/lib/screens/settings/supplies_settings_screen.dart @@ -199,7 +199,14 @@ class _SuppliesSettingsScreenState extends ConsumerState style: GoogleFonts.outfit(fontWeight: FontWeight.w500, color: AppColors.charcoal), ), value: _showPadTimerMinutes, - onChanged: (val) => setState(() => _showPadTimerMinutes = val), + onChanged: (val) { + setState(() { + _showPadTimerMinutes = val; + if (!val) { + _showPadTimerSeconds = false; + } + }); + }, activeColor: AppColors.menstrualPhase, ), @@ -207,10 +214,13 @@ class _SuppliesSettingsScreenState extends ConsumerState contentPadding: EdgeInsets.zero, title: Text( 'Show Seconds', - style: GoogleFonts.outfit(fontWeight: FontWeight.w500, color: AppColors.charcoal), + style: GoogleFonts.outfit( + fontWeight: FontWeight.w500, + color: _showPadTimerMinutes ? AppColors.charcoal : AppColors.warmGray + ), ), value: _showPadTimerSeconds, - onChanged: (val) => setState(() => _showPadTimerSeconds = val), + onChanged: _showPadTimerMinutes ? (val) => setState(() => _showPadTimerSeconds = val) : null, activeColor: AppColors.menstrualPhase, ), ],