@bobfrankston/rmfmail 1.2.177 → 1.2.178
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/android-bootstrap.bundle.js +112 -0
- package/client/android-bootstrap.bundle.js.map +3 -3
- package/client/app.bundle.js +71 -7
- package/client/app.bundle.js.map +3 -3
- package/client/components/alarms.js +88 -11
- package/client/components/alarms.js.map +1 -1
- package/client/components/alarms.ts +83 -13
- package/client/compose/compose.bundle.js +4 -0
- package/client/compose/compose.bundle.js.map +2 -2
- package/client/lib/api-client.js +6 -0
- package/client/lib/api-client.js.map +1 -1
- package/client/lib/api-client.ts +9 -0
- package/client/lib/mailxapi.js +27 -5
- package/package.json +5 -5
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-service/index.d.ts +5 -0
- package/packages/mailx-service/index.d.ts.map +1 -1
- package/packages/mailx-service/index.js +22 -1
- package/packages/mailx-service/index.js.map +1 -1
- package/packages/mailx-service/index.ts +25 -1
- package/packages/mailx-service/jsonrpc.js +4 -0
- package/packages/mailx-service/jsonrpc.js.map +1 -1
- package/packages/mailx-service/jsonrpc.ts +4 -0
- package/packages/mailx-service/package.json +1 -1
- package/packages/mailx-settings/index.d.ts +8 -1
- package/packages/mailx-settings/index.d.ts.map +1 -1
- package/packages/mailx-settings/index.js +71 -0
- package/packages/mailx-settings/index.js.map +1 -1
- package/packages/mailx-settings/index.ts +61 -1
- package/packages/mailx-settings/package.json +1 -1
- package/packages/mailx-store/package.json +1 -1
- package/packages/mailx-store-web/android-bootstrap.js +4 -0
- package/packages/mailx-store-web/android-bootstrap.js.map +1 -1
- package/packages/mailx-store-web/android-bootstrap.ts +4 -0
- package/packages/mailx-store-web/package.json +1 -1
- package/packages/mailx-store-web/web-service.d.ts +4 -0
- package/packages/mailx-store-web/web-service.d.ts.map +1 -1
- package/packages/mailx-store-web/web-service.js +48 -2
- package/packages/mailx-store-web/web-service.js.map +1 -1
- package/packages/mailx-store-web/web-service.ts +41 -2
- package/packages/mailx-types/index.d.ts +2 -0
- package/packages/mailx-types/index.d.ts.map +1 -1
- package/packages/mailx-types/index.js +3 -0
- package/packages/mailx-types/index.js.map +1 -1
- package/packages/mailx-types/index.ts +7 -0
- package/packages/mailx-types/mailx-api.d.ts +14 -0
- package/packages/mailx-types/mailx-api.d.ts.map +1 -1
- package/packages/mailx-types/mailx-api.ts +5 -0
- package/packages/mailx-types/package.json +1 -1
- package/packages/mailx-types/reminder-state.d.ts +42 -0
- package/packages/mailx-types/reminder-state.d.ts.map +1 -0
- package/packages/mailx-types/reminder-state.js +85 -0
- package/packages/mailx-types/reminder-state.js.map +1 -0
- package/packages/mailx-types/reminder-state.ts +88 -0
- /package/packages/mailx-imap/{node_modules.npmglobalize-stash-69680 → node_modules.npmglobalize-stash-7544}/.package-lock.json +0 -0
|
@@ -6,7 +6,10 @@
|
|
|
6
6
|
* - Popup shows item title, scheduled time, Snooze (5 / 15 / 30 min / 1 hr /
|
|
7
7
|
* custom), Dismiss. Snooze delays the alarm by the chosen interval; Dismiss
|
|
8
8
|
* suppresses it permanently.
|
|
9
|
-
* - Dismissed / snoozed state lives in localStorage
|
|
9
|
+
* - Dismissed / snoozed state lives in localStorage for instant local
|
|
10
|
+
* decisions, and syncs across devices via reminders.jsonc on the shared
|
|
11
|
+
* Drive folder (mergeReminderState — push + pull in one round-trip, so
|
|
12
|
+
* dismissing on one machine suppresses the popup on the others). Google
|
|
10
13
|
* Calendar's own reminders aren't mutated by this — mailx's popup is a
|
|
11
14
|
* local convenience, not a reminder-authority replacement.
|
|
12
15
|
* - Default lead time: 10 min before calendar event start; at task due time
|
|
@@ -17,7 +20,7 @@
|
|
|
17
20
|
* hidden — alarm won't fire until user returns, which matches Thunderbird's
|
|
18
21
|
* behavior (focus-gated). OS-level notifications are a separate follow-up.
|
|
19
22
|
*/
|
|
20
|
-
import { getCalendarEvents, getTasks, showReminderPopup, deleteCalendarEvent, logClientEvent, getReminderSound } from "../lib/api-client.js";
|
|
23
|
+
import { getCalendarEvents, getTasks, showReminderPopup, deleteCalendarEvent, logClientEvent, getReminderSound, mergeReminderState } from "../lib/api-client.js";
|
|
21
24
|
/** Alarm diagnostics. A plain console.log from the WebView never reaches
|
|
22
25
|
* the daemon log file, so snooze/dismiss/fire decisions were invisible
|
|
23
26
|
* after the fact — "is snooze working?" couldn't be answered from the
|
|
@@ -29,8 +32,8 @@ function alog(tag, data) {
|
|
|
29
32
|
}
|
|
30
33
|
catch { /* never break the alarm path */ }
|
|
31
34
|
}
|
|
32
|
-
const DISMISSED_KEY = "mailx-alarm-dismissed"; // {
|
|
33
|
-
const SNOOZED_KEY = "mailx-alarm-snoozed"; // {
|
|
35
|
+
const DISMISSED_KEY = "mailx-alarm-dismissed"; // { occKey: dismissedAt-epoch-ms } (legacy entries: true)
|
|
36
|
+
const SNOOZED_KEY = "mailx-alarm-snoozed"; // { occKey: epoch-ms-end }
|
|
34
37
|
const LOOKBACK_MS = 60 * 60 * 1000; // fire past-due alarms from the last 60 min
|
|
35
38
|
const LOOKAHEAD_MS = 2 * 60 * 60 * 1000; // poll window: upcoming 2 hr
|
|
36
39
|
const POLL_INTERVAL_MS = 30_000;
|
|
@@ -105,6 +108,10 @@ function playChime() {
|
|
|
105
108
|
}
|
|
106
109
|
catch { /* */ } }, 1300);
|
|
107
110
|
}
|
|
111
|
+
// Dismissed values are the dismissal's epoch-ms (drives 30-day pruning and
|
|
112
|
+
// cross-device max-merge). Pre-sync entries are boolean `true` — truthy, so
|
|
113
|
+
// every `if (dismissed[key])` guard works on both; the sync round-trip
|
|
114
|
+
// upgrades them to timestamps.
|
|
108
115
|
function loadDismissed() {
|
|
109
116
|
try {
|
|
110
117
|
return JSON.parse(localStorage.getItem(DISMISSED_KEY) || "{}");
|
|
@@ -147,7 +154,63 @@ function pruneState(now) {
|
|
|
147
154
|
}
|
|
148
155
|
if (changed)
|
|
149
156
|
saveSnoozed(snoozed);
|
|
150
|
-
// Dismissed
|
|
157
|
+
// Dismissed entries carry their dismissal timestamp — drop 30-day-old
|
|
158
|
+
// ones (the occurrence is far outside every device's lookback window).
|
|
159
|
+
// Legacy boolean entries are kept; the sync round-trip stamps them.
|
|
160
|
+
const dismissed = loadDismissed();
|
|
161
|
+
let dChanged = false;
|
|
162
|
+
for (const [uuid, at] of Object.entries(dismissed)) {
|
|
163
|
+
if (typeof at === "number" && at < now - 30 * 86400_000) {
|
|
164
|
+
delete dismissed[uuid];
|
|
165
|
+
dChanged = true;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (dChanged)
|
|
169
|
+
saveDismissed(dismissed);
|
|
170
|
+
}
|
|
171
|
+
// ── Cross-device state sync ─────────────────────────────────────────────────
|
|
172
|
+
// One round-trip: send the local maps, the service merges them with the
|
|
173
|
+
// shared reminders.jsonc (per-key max, union) and returns the result, which
|
|
174
|
+
// we merge back into localStorage. Local decisions never wait on this —
|
|
175
|
+
// pollAlarms syncs only when it actually has due alarms (so another device's
|
|
176
|
+
// dismissal can suppress the popup), and after every user action (so this
|
|
177
|
+
// device's decision propagates). Throttled to keep Drive traffic sane.
|
|
178
|
+
let _lastStateSync = 0;
|
|
179
|
+
const STATE_SYNC_MIN_MS = 60_000;
|
|
180
|
+
async function syncReminderState(force = false) {
|
|
181
|
+
const now = Date.now();
|
|
182
|
+
if (!force && now - _lastStateSync < STATE_SYNC_MIN_MS)
|
|
183
|
+
return false;
|
|
184
|
+
_lastStateSync = now;
|
|
185
|
+
try {
|
|
186
|
+
const merged = await mergeReminderState({
|
|
187
|
+
dismissed: loadDismissed(), // `true` legacy values are normalized service-side
|
|
188
|
+
snoozed: loadSnoozed(),
|
|
189
|
+
});
|
|
190
|
+
if (!merged)
|
|
191
|
+
return false; // service predates the API (Android/web) — stay per-device
|
|
192
|
+
// Merge INTO the current maps rather than overwriting — the user may
|
|
193
|
+
// have dismissed/snoozed something while the round-trip was in
|
|
194
|
+
// flight, and that newer local entry must survive.
|
|
195
|
+
const dm = loadDismissed();
|
|
196
|
+
for (const [k, v] of Object.entries(merged.dismissed)) {
|
|
197
|
+
const cur = dm[k];
|
|
198
|
+
if (cur === undefined || cur === true || v > cur)
|
|
199
|
+
dm[k] = v;
|
|
200
|
+
}
|
|
201
|
+
saveDismissed(dm);
|
|
202
|
+
const sn = loadSnoozed();
|
|
203
|
+
for (const [k, v] of Object.entries(merged.snoozed)) {
|
|
204
|
+
if (!sn[k] || v > sn[k])
|
|
205
|
+
sn[k] = v;
|
|
206
|
+
}
|
|
207
|
+
saveSnoozed(sn);
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
catch (e) {
|
|
211
|
+
alog("state sync failed", { err: e?.message || String(e) });
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
151
214
|
}
|
|
152
215
|
/** Per-occurrence key for dismissed/snoozed/fired tracking. Recurring
|
|
153
216
|
* events all share `ev.uuid`, so dismissing one occurrence used to
|
|
@@ -237,7 +300,7 @@ async function collectDueAlarms(now) {
|
|
|
237
300
|
continue;
|
|
238
301
|
const k = `${occBaseKey}@${offsetMs}`;
|
|
239
302
|
if (!dismissed[k]) {
|
|
240
|
-
dismissed[k] =
|
|
303
|
+
dismissed[k] = Date.now();
|
|
241
304
|
touched = true;
|
|
242
305
|
}
|
|
243
306
|
}
|
|
@@ -585,7 +648,7 @@ async function firePopupForItem(item) {
|
|
|
585
648
|
// didn't want this. Same treatment.
|
|
586
649
|
{
|
|
587
650
|
const m = loadDismissed();
|
|
588
|
-
m[item.uuid] =
|
|
651
|
+
m[item.uuid] = Date.now();
|
|
589
652
|
saveDismissed(m);
|
|
590
653
|
alog("dismiss saved", { key: item.uuid, via: r.button });
|
|
591
654
|
}
|
|
@@ -597,7 +660,7 @@ async function firePopupForItem(item) {
|
|
|
597
660
|
// delete propagates.
|
|
598
661
|
{
|
|
599
662
|
const m = loadDismissed();
|
|
600
|
-
m[item.uuid] =
|
|
663
|
+
m[item.uuid] = Date.now();
|
|
601
664
|
saveDismissed(m);
|
|
602
665
|
}
|
|
603
666
|
firedThisSession.delete(item.uuid);
|
|
@@ -612,7 +675,7 @@ async function firePopupForItem(item) {
|
|
|
612
675
|
alog("unknown popup result", { button: r.button, form: r.form });
|
|
613
676
|
{
|
|
614
677
|
const m = loadDismissed();
|
|
615
|
-
m[item.uuid] =
|
|
678
|
+
m[item.uuid] = Date.now();
|
|
616
679
|
saveDismissed(m);
|
|
617
680
|
}
|
|
618
681
|
break;
|
|
@@ -622,11 +685,15 @@ async function firePopupForItem(item) {
|
|
|
622
685
|
alog("action handler threw — forcing Dismiss", { key: item.uuid, err: e?.message || String(e) });
|
|
623
686
|
try {
|
|
624
687
|
const m = loadDismissed();
|
|
625
|
-
m[item.uuid] =
|
|
688
|
+
m[item.uuid] = Date.now();
|
|
626
689
|
saveDismissed(m);
|
|
627
690
|
}
|
|
628
691
|
catch { /* */ }
|
|
629
692
|
}
|
|
693
|
+
// Push this device's decision to the shared state so the other machines'
|
|
694
|
+
// pollers see it before they fire their own popup. Fire-and-forget —
|
|
695
|
+
// the local maps above are already committed.
|
|
696
|
+
void syncReminderState(true);
|
|
630
697
|
}
|
|
631
698
|
function snoozeItem(item, minutes) {
|
|
632
699
|
const now = Date.now();
|
|
@@ -644,7 +711,14 @@ async function pollAlarms() {
|
|
|
644
711
|
return; // don't tick while tab hidden
|
|
645
712
|
const now = Date.now();
|
|
646
713
|
pruneState(now);
|
|
647
|
-
|
|
714
|
+
let due = await collectDueAlarms(now);
|
|
715
|
+
// Something is due — before popping, pull the shared state (throttled)
|
|
716
|
+
// in case another device already dismissed or snoozed it. A couple of
|
|
717
|
+
// seconds' delay on a reminder popup is invisible; a popup for a
|
|
718
|
+
// reminder the user already dismissed on their other machine is not.
|
|
719
|
+
if (due.length > 0 && await syncReminderState()) {
|
|
720
|
+
due = await collectDueAlarms(now);
|
|
721
|
+
}
|
|
648
722
|
// Two filters: skip uuids already fired this session (Snooze + an
|
|
649
723
|
// expired snooze re-allows them; Dismiss permanently suppresses via
|
|
650
724
|
// localStorage), and skip uuids whose popup is currently visible
|
|
@@ -667,6 +741,9 @@ export function startAlarmPoller() {
|
|
|
667
741
|
if (window.__mailxAlarmPollerRunning)
|
|
668
742
|
return;
|
|
669
743
|
window.__mailxAlarmPollerRunning = true;
|
|
744
|
+
// Boot-time state pull — adopts dismissals/snoozes made on other
|
|
745
|
+
// devices (and stamps legacy boolean entries) before the first poll.
|
|
746
|
+
void syncReminderState(true);
|
|
670
747
|
// First check after 5 s so startup isn't jittered by a modal.
|
|
671
748
|
setTimeout(() => { pollAlarms().catch(() => { }); }, 5000);
|
|
672
749
|
setInterval(() => { pollAlarms().catch(() => { }); }, POLL_INTERVAL_MS);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alarms.js","sourceRoot":"","sources":["alarms.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alarms.js","sourceRoot":"","sources":["alarms.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,10 @@
|
|
|
6
6
|
* - Popup shows item title, scheduled time, Snooze (5 / 15 / 30 min / 1 hr /
|
|
7
7
|
* custom), Dismiss. Snooze delays the alarm by the chosen interval; Dismiss
|
|
8
8
|
* suppresses it permanently.
|
|
9
|
-
* - Dismissed / snoozed state lives in localStorage
|
|
9
|
+
* - Dismissed / snoozed state lives in localStorage for instant local
|
|
10
|
+
* decisions, and syncs across devices via reminders.jsonc on the shared
|
|
11
|
+
* Drive folder (mergeReminderState — push + pull in one round-trip, so
|
|
12
|
+
* dismissing on one machine suppresses the popup on the others). Google
|
|
10
13
|
* Calendar's own reminders aren't mutated by this — mailx's popup is a
|
|
11
14
|
* local convenience, not a reminder-authority replacement.
|
|
12
15
|
* - Default lead time: 10 min before calendar event start; at task due time
|
|
@@ -18,7 +21,7 @@
|
|
|
18
21
|
* behavior (focus-gated). OS-level notifications are a separate follow-up.
|
|
19
22
|
*/
|
|
20
23
|
|
|
21
|
-
import { getCalendarEvents, getTasks, showReminderPopup, deleteCalendarEvent, logClientEvent, getReminderSound } from "../lib/api-client.js";
|
|
24
|
+
import { getCalendarEvents, getTasks, showReminderPopup, deleteCalendarEvent, logClientEvent, getReminderSound, mergeReminderState } from "../lib/api-client.js";
|
|
22
25
|
|
|
23
26
|
/** Alarm diagnostics. A plain console.log from the WebView never reaches
|
|
24
27
|
* the daemon log file, so snooze/dismiss/fire decisions were invisible
|
|
@@ -29,8 +32,8 @@ function alog(tag: string, data?: any): void {
|
|
|
29
32
|
try { logClientEvent(`[alarm] ${tag}`, data); } catch { /* never break the alarm path */ }
|
|
30
33
|
}
|
|
31
34
|
|
|
32
|
-
const DISMISSED_KEY = "mailx-alarm-dismissed"; // {
|
|
33
|
-
const SNOOZED_KEY = "mailx-alarm-snoozed"; // {
|
|
35
|
+
const DISMISSED_KEY = "mailx-alarm-dismissed"; // { occKey: dismissedAt-epoch-ms } (legacy entries: true)
|
|
36
|
+
const SNOOZED_KEY = "mailx-alarm-snoozed"; // { occKey: epoch-ms-end }
|
|
34
37
|
const LOOKBACK_MS = 60 * 60 * 1000; // fire past-due alarms from the last 60 min
|
|
35
38
|
const LOOKAHEAD_MS = 2 * 60 * 60 * 1000; // poll window: upcoming 2 hr
|
|
36
39
|
const POLL_INTERVAL_MS = 30_000;
|
|
@@ -105,10 +108,14 @@ interface AlarmItem {
|
|
|
105
108
|
htmlLink?: string;
|
|
106
109
|
}
|
|
107
110
|
|
|
108
|
-
|
|
111
|
+
// Dismissed values are the dismissal's epoch-ms (drives 30-day pruning and
|
|
112
|
+
// cross-device max-merge). Pre-sync entries are boolean `true` — truthy, so
|
|
113
|
+
// every `if (dismissed[key])` guard works on both; the sync round-trip
|
|
114
|
+
// upgrades them to timestamps.
|
|
115
|
+
function loadDismissed(): Record<string, number | true> {
|
|
109
116
|
try { return JSON.parse(localStorage.getItem(DISMISSED_KEY) || "{}"); } catch { return {}; }
|
|
110
117
|
}
|
|
111
|
-
function saveDismissed(map: Record<string,
|
|
118
|
+
function saveDismissed(map: Record<string, number | true>): void {
|
|
112
119
|
try { localStorage.setItem(DISMISSED_KEY, JSON.stringify(map)); } catch { /* private mode */ }
|
|
113
120
|
}
|
|
114
121
|
function loadSnoozed(): Record<string, number> {
|
|
@@ -128,7 +135,56 @@ function pruneState(now: number): void {
|
|
|
128
135
|
if (until < now - 7 * 86400_000) { delete snoozed[uuid]; changed = true; }
|
|
129
136
|
}
|
|
130
137
|
if (changed) saveSnoozed(snoozed);
|
|
131
|
-
// Dismissed
|
|
138
|
+
// Dismissed entries carry their dismissal timestamp — drop 30-day-old
|
|
139
|
+
// ones (the occurrence is far outside every device's lookback window).
|
|
140
|
+
// Legacy boolean entries are kept; the sync round-trip stamps them.
|
|
141
|
+
const dismissed = loadDismissed();
|
|
142
|
+
let dChanged = false;
|
|
143
|
+
for (const [uuid, at] of Object.entries(dismissed)) {
|
|
144
|
+
if (typeof at === "number" && at < now - 30 * 86400_000) { delete dismissed[uuid]; dChanged = true; }
|
|
145
|
+
}
|
|
146
|
+
if (dChanged) saveDismissed(dismissed);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// ── Cross-device state sync ─────────────────────────────────────────────────
|
|
150
|
+
// One round-trip: send the local maps, the service merges them with the
|
|
151
|
+
// shared reminders.jsonc (per-key max, union) and returns the result, which
|
|
152
|
+
// we merge back into localStorage. Local decisions never wait on this —
|
|
153
|
+
// pollAlarms syncs only when it actually has due alarms (so another device's
|
|
154
|
+
// dismissal can suppress the popup), and after every user action (so this
|
|
155
|
+
// device's decision propagates). Throttled to keep Drive traffic sane.
|
|
156
|
+
let _lastStateSync = 0;
|
|
157
|
+
const STATE_SYNC_MIN_MS = 60_000;
|
|
158
|
+
|
|
159
|
+
async function syncReminderState(force = false): Promise<boolean> {
|
|
160
|
+
const now = Date.now();
|
|
161
|
+
if (!force && now - _lastStateSync < STATE_SYNC_MIN_MS) return false;
|
|
162
|
+
_lastStateSync = now;
|
|
163
|
+
try {
|
|
164
|
+
const merged = await mergeReminderState({
|
|
165
|
+
dismissed: loadDismissed() as Record<string, number>, // `true` legacy values are normalized service-side
|
|
166
|
+
snoozed: loadSnoozed(),
|
|
167
|
+
});
|
|
168
|
+
if (!merged) return false; // service predates the API (Android/web) — stay per-device
|
|
169
|
+
// Merge INTO the current maps rather than overwriting — the user may
|
|
170
|
+
// have dismissed/snoozed something while the round-trip was in
|
|
171
|
+
// flight, and that newer local entry must survive.
|
|
172
|
+
const dm = loadDismissed();
|
|
173
|
+
for (const [k, v] of Object.entries(merged.dismissed)) {
|
|
174
|
+
const cur = dm[k];
|
|
175
|
+
if (cur === undefined || cur === true || v > cur) dm[k] = v;
|
|
176
|
+
}
|
|
177
|
+
saveDismissed(dm);
|
|
178
|
+
const sn = loadSnoozed();
|
|
179
|
+
for (const [k, v] of Object.entries(merged.snoozed)) {
|
|
180
|
+
if (!sn[k] || v > sn[k]) sn[k] = v;
|
|
181
|
+
}
|
|
182
|
+
saveSnoozed(sn);
|
|
183
|
+
return true;
|
|
184
|
+
} catch (e: any) {
|
|
185
|
+
alog("state sync failed", { err: e?.message || String(e) });
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
132
188
|
}
|
|
133
189
|
|
|
134
190
|
/** Per-occurrence key for dismissed/snoozed/fired tracking. Recurring
|
|
@@ -215,7 +271,7 @@ async function collectDueAlarms(now: number): Promise<AlarmItem[]> {
|
|
|
215
271
|
for (const offsetMs of eligibleOffsets) {
|
|
216
272
|
if (offsetMs === pick.offsetMs) continue;
|
|
217
273
|
const k = `${occBaseKey}@${offsetMs}`;
|
|
218
|
-
if (!dismissed[k]) { dismissed[k] =
|
|
274
|
+
if (!dismissed[k]) { dismissed[k] = Date.now(); touched = true; }
|
|
219
275
|
}
|
|
220
276
|
if (touched) saveDismissed(dismissed);
|
|
221
277
|
}
|
|
@@ -549,7 +605,7 @@ async function firePopupForItem(item: AlarmItem): Promise<void> {
|
|
|
549
605
|
case "closed": // user closed via X / Esc with no labeled button —
|
|
550
606
|
// popup HAS Dismiss right there; the user clearly
|
|
551
607
|
// didn't want this. Same treatment.
|
|
552
|
-
{ const m = loadDismissed(); m[item.uuid] =
|
|
608
|
+
{ const m = loadDismissed(); m[item.uuid] = Date.now(); saveDismissed(m);
|
|
553
609
|
alog("dismiss saved", { key: item.uuid, via: r.button }); }
|
|
554
610
|
break;
|
|
555
611
|
case "Delete":
|
|
@@ -557,7 +613,7 @@ async function firePopupForItem(item: AlarmItem): Promise<void> {
|
|
|
557
613
|
// mark inside the service; reconcile picks it up. Also dismiss
|
|
558
614
|
// the alarm so it can't re-fire on a stale local row before the
|
|
559
615
|
// delete propagates.
|
|
560
|
-
{ const m = loadDismissed(); m[item.uuid] =
|
|
616
|
+
{ const m = loadDismissed(); m[item.uuid] = Date.now(); saveDismissed(m); }
|
|
561
617
|
firedThisSession.delete(item.uuid);
|
|
562
618
|
deleteCalendarEvent(item.uuid).catch((e: any) =>
|
|
563
619
|
console.error(` [alarm] delete failed for ${item.uuid}: ${e?.message || e}`));
|
|
@@ -569,13 +625,17 @@ async function firePopupForItem(item: AlarmItem): Promise<void> {
|
|
|
569
625
|
// the user picked something we can't decode, don't keep
|
|
570
626
|
// pestering them every 30 s).
|
|
571
627
|
alog("unknown popup result", { button: r.button, form: (r as any).form });
|
|
572
|
-
{ const m = loadDismissed(); m[item.uuid] =
|
|
628
|
+
{ const m = loadDismissed(); m[item.uuid] = Date.now(); saveDismissed(m); }
|
|
573
629
|
break;
|
|
574
630
|
}
|
|
575
631
|
} catch (e: any) {
|
|
576
632
|
alog("action handler threw — forcing Dismiss", { key: item.uuid, err: e?.message || String(e) });
|
|
577
|
-
try { const m = loadDismissed(); m[item.uuid] =
|
|
633
|
+
try { const m = loadDismissed(); m[item.uuid] = Date.now(); saveDismissed(m); } catch { /* */ }
|
|
578
634
|
}
|
|
635
|
+
// Push this device's decision to the shared state so the other machines'
|
|
636
|
+
// pollers see it before they fire their own popup. Fire-and-forget —
|
|
637
|
+
// the local maps above are already committed.
|
|
638
|
+
void syncReminderState(true);
|
|
579
639
|
}
|
|
580
640
|
|
|
581
641
|
function snoozeItem(item: AlarmItem, minutes: number): void {
|
|
@@ -594,7 +654,14 @@ async function pollAlarms(): Promise<void> {
|
|
|
594
654
|
if (document.hidden) return; // don't tick while tab hidden
|
|
595
655
|
const now = Date.now();
|
|
596
656
|
pruneState(now);
|
|
597
|
-
|
|
657
|
+
let due = await collectDueAlarms(now);
|
|
658
|
+
// Something is due — before popping, pull the shared state (throttled)
|
|
659
|
+
// in case another device already dismissed or snoozed it. A couple of
|
|
660
|
+
// seconds' delay on a reminder popup is invisible; a popup for a
|
|
661
|
+
// reminder the user already dismissed on their other machine is not.
|
|
662
|
+
if (due.length > 0 && await syncReminderState()) {
|
|
663
|
+
due = await collectDueAlarms(now);
|
|
664
|
+
}
|
|
598
665
|
// Two filters: skip uuids already fired this session (Snooze + an
|
|
599
666
|
// expired snooze re-allows them; Dismiss permanently suppresses via
|
|
600
667
|
// localStorage), and skip uuids whose popup is currently visible
|
|
@@ -616,6 +683,9 @@ async function pollAlarms(): Promise<void> {
|
|
|
616
683
|
export function startAlarmPoller(): void {
|
|
617
684
|
if ((window as any).__mailxAlarmPollerRunning) return;
|
|
618
685
|
(window as any).__mailxAlarmPollerRunning = true;
|
|
686
|
+
// Boot-time state pull — adopts dismissals/snoozes made on other
|
|
687
|
+
// devices (and stamps legacy boolean entries) before the first poll.
|
|
688
|
+
void syncReminderState(true);
|
|
619
689
|
// First check after 5 s so startup isn't jittered by a modal.
|
|
620
690
|
setTimeout(() => { pollAlarms().catch(() => { /* */ }); }, 5000);
|
|
621
691
|
setInterval(() => { pollAlarms().catch(() => { /* */ }); }, POLL_INTERVAL_MS);
|
|
@@ -1080,6 +1080,7 @@ __export(api_client_exports, {
|
|
|
1080
1080
|
logClientEvent: () => logClientEvent,
|
|
1081
1081
|
markAsSpamMessages: () => markAsSpamMessages,
|
|
1082
1082
|
markFolderRead: () => markFolderRead,
|
|
1083
|
+
mergeReminderState: () => mergeReminderState,
|
|
1083
1084
|
moveFolderToTrash: () => moveFolderToTrash,
|
|
1084
1085
|
moveMessage: () => moveMessage,
|
|
1085
1086
|
moveMessages: () => moveMessages,
|
|
@@ -1613,6 +1614,9 @@ function closeWordEdit(editId) {
|
|
|
1613
1614
|
function showReminderPopup(opts) {
|
|
1614
1615
|
return ipc().showReminderPopup?.(opts) ?? Promise.resolve({ button: "", reason: "no host" });
|
|
1615
1616
|
}
|
|
1617
|
+
function mergeReminderState(patch) {
|
|
1618
|
+
return ipc().mergeReminderState?.(patch) ?? Promise.resolve(null);
|
|
1619
|
+
}
|
|
1616
1620
|
function consumePendingMailto() {
|
|
1617
1621
|
return ipc().consumePendingMailto?.() ?? Promise.resolve(null);
|
|
1618
1622
|
}
|