Backport: Open straight to alarm window when recovery alarm is set
This commit is contained in:
1 parent
018eda0235
commit
7c4f0804f4
1 file changed
+11
-11
+11
-11
@@ -236,16 +236,18 @@ static bool schedule_alarm(WakeupReason schedule_reason) {
|
|||||||
case WAKE_RECOVERY_MAIN_ALARM:
|
case WAKE_RECOVERY_MAIN_ALARM:
|
||||||
case WAKE_RECOVERY_AWARENESS_ALARM:
|
case WAKE_RECOVERY_AWARENESS_ALARM:
|
||||||
target = time(NULL) + 15;
|
target = time(NULL) + 15;
|
||||||
// no need to cancel alarms, as recovery alarms short-lived and is expired by the time another is being scheduled
|
// no need to cancel alarms, as recovery alarms are short-lived and are expired by the time another is being scheduled
|
||||||
status = wakeup_schedule_simple_robust(target, 15, schedule_reason);
|
status = wakeup_schedule_simple_robust(target, 15, schedule_reason);
|
||||||
}
|
}
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
push_status_window(STATUS_SET_FAILURE);
|
push_status_window(STATUS_SET_FAILURE);
|
||||||
persist_write_int(STORAGE_KEY_ALARM_REASON, WAKE_MAIN_ALARM);
|
persist_write_int(STORAGE_KEY_ALARM_REASON, WAKE_MAIN_ALARM);
|
||||||
|
s_alarm_reason = WAKE_MAIN_ALARM;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (persist_read_int(STORAGE_KEY_ALARM_REASON) != schedule_reason) {
|
if (persist_read_int(STORAGE_KEY_ALARM_REASON) != schedule_reason) {
|
||||||
persist_write_int(STORAGE_KEY_ALARM_REASON, schedule_reason);
|
persist_write_int(STORAGE_KEY_ALARM_REASON, schedule_reason);
|
||||||
|
s_alarm_reason = schedule_reason;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -830,8 +832,6 @@ static void alarm_window_unload() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void push_alarm_window() {
|
static void push_alarm_window() {
|
||||||
s_alarm_reason = persist_read_int(STORAGE_KEY_ALARM_REASON);
|
|
||||||
|
|
||||||
switch (s_alarm_reason) {
|
switch (s_alarm_reason) {
|
||||||
case WAKE_RECOVERY_MAIN_ALARM:
|
case WAKE_RECOVERY_MAIN_ALARM:
|
||||||
send_zap(settings.PavlokMax);
|
send_zap(settings.PavlokMax);
|
||||||
@@ -945,11 +945,6 @@ static void setter_down_click_handler(void *recognizer, void *ctx) {
|
|||||||
|
|
||||||
static void setter_select_click_handler(void *recognizer, void *ctx) {
|
static void setter_select_click_handler(void *recognizer, void *ctx) {
|
||||||
if (s_highlight_pos == 2) {
|
if (s_highlight_pos == 2) {
|
||||||
if (s_alarm_reason != WAKE_MAIN_ALARM) {
|
|
||||||
send_zap(settings.PavlokMax);
|
|
||||||
vibes_double_pulse();
|
|
||||||
return; // early return to avoid overwriting recovery/awareness alarm
|
|
||||||
}
|
|
||||||
bool success = schedule_alarm(WAKE_MAIN_ALARM);
|
bool success = schedule_alarm(WAKE_MAIN_ALARM);
|
||||||
if (!success) {
|
if (!success) {
|
||||||
return; // early return to avoid indicating alarm was set when it was not
|
return; // early return to avoid indicating alarm was set when it was not
|
||||||
@@ -1067,8 +1062,6 @@ static void setter_window_unload() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void push_setter_window() {
|
static void push_setter_window() {
|
||||||
s_alarm_reason = persist_read_int(STORAGE_KEY_ALARM_REASON);
|
|
||||||
|
|
||||||
window_set_window_handlers(
|
window_set_window_handlers(
|
||||||
s_window,
|
s_window,
|
||||||
(WindowHandlers){.load = setter_window_load, .unload = setter_window_unload});
|
(WindowHandlers){.load = setter_window_load, .unload = setter_window_unload});
|
||||||
@@ -1086,7 +1079,7 @@ static void init() {
|
|||||||
|
|
||||||
// initialize pkjs
|
// initialize pkjs
|
||||||
app_message_register_inbox_received(inbox_received_handler);
|
app_message_register_inbox_received(inbox_received_handler);
|
||||||
app_message_open(128, 128); // TODO tighten sizes
|
app_message_open(128, 128);
|
||||||
|
|
||||||
// load settings from persist (or set defaults if not present)
|
// load settings from persist (or set defaults if not present)
|
||||||
if (persist_exists(STORAGE_KEY_SETTINGS)) {
|
if (persist_exists(STORAGE_KEY_SETTINGS)) {
|
||||||
@@ -1103,12 +1096,19 @@ static void init() {
|
|||||||
settings.AwarenessTimeLimitSeconds = 30;
|
settings.AwarenessTimeLimitSeconds = 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// read even when opening setter to ensure a recovery alarm is not able to be overwritten
|
||||||
|
s_alarm_reason = persist_read_int(STORAGE_KEY_ALARM_REASON);
|
||||||
|
|
||||||
switch (launch_reason()) {
|
switch (launch_reason()) {
|
||||||
case APP_LAUNCH_WAKEUP:
|
case APP_LAUNCH_WAKEUP:
|
||||||
push_alarm_window();
|
push_alarm_window();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
if (s_alarm_reason == WAKE_RECOVERY_MAIN_ALARM || s_alarm_reason == WAKE_RECOVERY_AWARENESS_ALARM) {
|
||||||
|
push_alarm_window();
|
||||||
|
} else {
|
||||||
push_setter_window();
|
push_setter_window();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user