diff --git a/lib/src/services/mosque_manager.dart b/lib/src/services/mosque_manager.dart index b225815c..f43ca983 100644 --- a/lib/src/services/mosque_manager.dart +++ b/lib/src/services/mosque_manager.dart @@ -92,19 +92,6 @@ class MosqueManager extends ChangeNotifier with WeatherMixin, AudioMixin, Mosque return 'https://mawaqit.net/$languageCode/id/${mosque?.id}?view=desktop'; } - static const String _minuteBeforeKey = 'selectedMinuteBefore'; - static const String _minuteAfterKey = 'selectedMinuteAfter'; - - static Future getMinuteBefore() async { - final prefs = await SharedPreferences.getInstance(); - return prefs.getInt(_minuteBeforeKey) ?? 10; - } - - static Future getMinuteAfter() async { - final prefs = await SharedPreferences.getInstance(); - return prefs.getInt(_minuteAfterKey) ?? 10; - } - static Future getisIshaFajr() async { final prefs = await SharedPreferences.getInstance(); return prefs.getBool(TurnOnOffTvConstant.kisFajrIshaOnly) ?? false; @@ -139,8 +126,7 @@ class MosqueManager extends ChangeNotifier with WeatherMixin, AudioMixin, Mosque isDeviceRooted = await checkRoot(); isToggleScreenActivated = await ToggleScreenFeature.getToggleFeatureState(); isEventsSet = await ToggleScreenFeature.checkEventsScheduled(); - minuteBefore = await getMinuteBefore(); - minuteAfter = await getMinuteAfter(); + isIshaFajrOnly = await getisIshaFajr(); notifyListeners(); } @@ -225,17 +211,19 @@ class MosqueManager extends ChangeNotifier with WeatherMixin, AudioMixin, Mosque ); _timesSubscription = timesStream.listen( - (e) { + (e) async { times = e; final today = useTomorrowTimes ? AppDateTime.tomorrow() : AppDateTime.now(); - final timeShiftManager = TimeShiftManager(); if (isDeviceRooted && isToggleScreenActivated) { + final newMinuteBefore = await ToggleScreenFeature.getBeforeDelayMinutes(); + final newMinuteAfter = await ToggleScreenFeature.getAfterDelayMinutes(); + ToggleScreenFeature.handleDailyRescheduling( isIshaFajrOnly: isIshaFajrOnly, timeStrings: e.dayTimesStrings(today, salahOnly: false), - minuteBefore: minuteBefore, - minuteAfter: minuteAfter, + minuteBefore: newMinuteBefore, + minuteAfter: newMinuteAfter, ); } diff --git a/lib/src/services/toggle_screen_feature_manager.dart b/lib/src/services/toggle_screen_feature_manager.dart index 12c3daaa..04dad8fb 100644 --- a/lib/src/services/toggle_screen_feature_manager.dart +++ b/lib/src/services/toggle_screen_feature_manager.dart @@ -91,13 +91,39 @@ class ToggleScreenFeature { } } - await Future.wait([saveScheduledEventsToLocale(), toggleFeatureState(true), setLastEventDate(now)]); + await Future.wait([ + saveScheduledEventsToLocale(), + toggleFeatureState(true), + setLastEventDate(now), + saveBeforeDelayMinutes(beforeDelayMinutes), + saveAfterDelayMinutes(afterDelayMinutes), + ]); } catch (e) { logger.e('Failed to schedule toggle screen: $e'); throw ScheduleToggleScreenException(e.toString()); } } + static Future getBeforeDelayMinutes() async { + final SharedPreferences prefs = await SharedPreferences.getInstance(); + return prefs.getInt(TurnOnOffTvConstant.kMinuteBeforeKey) ?? 0; + } + + static Future getAfterDelayMinutes() async { + final SharedPreferences prefs = await SharedPreferences.getInstance(); + return prefs.getInt(TurnOnOffTvConstant.kMinuteAfterKey) ?? 0; + } + + static Future saveBeforeDelayMinutes(int minutes) async { + final SharedPreferences prefs = await SharedPreferences.getInstance(); + await prefs.setInt(TurnOnOffTvConstant.kMinuteBeforeKey, minutes); + } + + static Future saveAfterDelayMinutes(int minutes) async { + final SharedPreferences prefs = await SharedPreferences.getInstance(); + await prefs.setInt(TurnOnOffTvConstant.kMinuteAfterKey, minutes); + } + static Future shouldReschedule() async { final lastEventDate = await getLastEventDate(); final today = AppDateTime.now(); @@ -116,7 +142,6 @@ class ToggleScreenFeature { }) async { try { final shouldSchedule = await shouldReschedule(); - if (shouldSchedule) { await cancelAllScheduledTimers(); await toggleFeatureState(false); diff --git a/lib/src/state_management/screen_lock/screen_lock_notifier.dart b/lib/src/state_management/screen_lock/screen_lock_notifier.dart index e5925b8c..6229285a 100644 --- a/lib/src/state_management/screen_lock/screen_lock_notifier.dart +++ b/lib/src/state_management/screen_lock/screen_lock_notifier.dart @@ -75,8 +75,6 @@ class ScreenLockNotifier extends AsyncNotifier { ToggleScreenFeature.toggleFeatureState(true); final prefs = await SharedPreferences.getInstance(); - prefs.setInt(TurnOnOffTvConstant.kMinuteBeforeKey, state.value!.selectedMinuteBefore); - prefs.setInt(TurnOnOffTvConstant.kMinuteAfterKey, state.value!.selectedMinuteAfter); prefs.setBool(TurnOnOffTvConstant.kisFajrIshaOnly, isIshaFajrOnly); } }