diff --git a/lib/features/sleep_timer/providers/sleep_timer_provider.dart b/lib/features/sleep_timer/providers/sleep_timer_provider.dart index efcae37..5c9ac2d 100644 --- a/lib/features/sleep_timer/providers/sleep_timer_provider.dart +++ b/lib/features/sleep_timer/providers/sleep_timer_provider.dart @@ -67,6 +67,8 @@ class SleepTimer extends _$SleepTimer { bool shouldBuildRightNow(Duration autoTurnOnTime, Duration autoTurnOffTime) { final now = TimeOfDay.now(); - return autoTurnOnTime.toTimeOfDay().isBefore(now) && - autoTurnOffTime.toTimeOfDay().isAfter(now); + return now.isBetween( + autoTurnOnTime.toTimeOfDay(), + autoTurnOffTime.toTimeOfDay(), + ); } diff --git a/lib/shared/extensions/time_of_day.dart b/lib/shared/extensions/time_of_day.dart index e378c3f..9088b46 100644 --- a/lib/shared/extensions/time_of_day.dart +++ b/lib/shared/extensions/time_of_day.dart @@ -31,4 +31,16 @@ extension TimeOfDayExtension on TimeOfDay { bool isBefore(TimeOfDay other) => this < other; bool isAfter(TimeOfDay other) => this > other; + + bool isBetween(TimeOfDay start, TimeOfDay end) { + // needs more logic to handle the case where start is after end + //but on the other day + if (start == end) { + return this == start; + } + if (start < end) { + return this >= start && this <= end; + } + return this >= start || this <= end; + } }