@bobfrankston/rmfmail 1.0.695 → 1.0.697
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/app.bundle.js +53 -48
- package/client/app.bundle.js.map +2 -2
- package/client/app.js +16 -14
- package/client/app.js.map +1 -1
- package/client/app.ts +16 -13
- package/client/components/alarms.js +12 -10
- package/client/components/alarms.js.map +1 -1
- package/client/components/alarms.ts +11 -10
- package/client/components/folder-tree.js +36 -37
- package/client/components/folder-tree.js.map +1 -1
- package/client/components/folder-tree.ts +33 -33
- package/client/components/message-list.js +11 -1
- package/client/components/message-list.js.map +1 -1
- package/client/components/message-list.ts +11 -1
- package/client/components/message-viewer.js +21 -11
- package/client/components/message-viewer.js.map +1 -1
- package/client/components/message-viewer.ts +21 -11
- package/client/index.html +14 -0
- package/package.json +3 -3
- package/packages/mailx-core/index.d.ts.map +1 -1
- package/packages/mailx-core/index.js +2 -3
- package/packages/mailx-core/index.js.map +1 -1
- package/packages/mailx-core/index.ts +2 -3
- package/packages/mailx-imap/index.d.ts.map +1 -1
- package/packages/mailx-imap/index.js +3 -5
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +3 -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.map +1 -1
- package/packages/mailx-service/index.js +2 -2
- package/packages/mailx-service/index.js.map +1 -1
- package/packages/mailx-service/index.ts +2 -3
- package/packages/mailx-service/local-store.d.ts.map +1 -1
- package/packages/mailx-service/local-store.js +1 -17
- package/packages/mailx-service/local-store.js.map +1 -1
- package/packages/mailx-service/local-store.ts +1 -18
- package/packages/mailx-store/index.d.ts +1 -0
- package/packages/mailx-store/index.d.ts.map +1 -1
- package/packages/mailx-store/index.js +1 -0
- package/packages/mailx-store/index.js.map +1 -1
- package/packages/mailx-store/index.ts +1 -0
- package/packages/mailx-store/package.json +3 -2
- package/packages/mailx-store/parse-serial.d.ts +33 -0
- package/packages/mailx-store/parse-serial.d.ts.map +1 -0
- package/packages/mailx-store/parse-serial.js +38 -0
- package/packages/mailx-store/parse-serial.js.map +1 -0
- package/packages/mailx-store/parse-serial.ts +40 -0
- /package/packages/mailx-imap/{node_modules.npmglobalize-stash-36352 → node_modules.npmglobalize-stash-43676}/.package-lock.json +0 -0
package/client/app.bundle.js
CHANGED
|
@@ -998,10 +998,11 @@ async function showMessage(accountId, uid, folderId, specialUse, isRetry = false
|
|
|
998
998
|
} catch {
|
|
999
999
|
}
|
|
1000
1000
|
if (!cachedMsg) {
|
|
1001
|
-
|
|
1001
|
+
const previewText = (cached.preview || "").trim();
|
|
1002
|
+
bodyEl.innerHTML = previewText ? `<div class="mv-preview-placeholder">${escapeHtml(previewText)}</div>` : `<div class="mv-empty">Loading body\u2026</div>`;
|
|
1002
1003
|
}
|
|
1003
1004
|
} else if (!cachedMsg) {
|
|
1004
|
-
bodyEl.innerHTML = ""
|
|
1005
|
+
bodyEl.innerHTML = `<div class="mv-empty">Loading body\u2026</div>`;
|
|
1005
1006
|
headerEl.hidden = true;
|
|
1006
1007
|
}
|
|
1007
1008
|
attEl.hidden = true;
|
|
@@ -1024,7 +1025,8 @@ async function showMessage(accountId, uid, folderId, specialUse, isRetry = false
|
|
|
1024
1025
|
headerEl.hidden = false;
|
|
1025
1026
|
} catch {
|
|
1026
1027
|
}
|
|
1027
|
-
|
|
1028
|
+
const previewText = (msg.preview || cached?.preview || "").trim();
|
|
1029
|
+
bodyEl.innerHTML = previewText ? `<div class="mv-preview-placeholder">${escapeHtml(previewText)}</div>` : `<div class="mv-empty">Fetching body from server\u2026</div>`;
|
|
1028
1030
|
const captureGen = gen;
|
|
1029
1031
|
const off = onEvent((ev) => {
|
|
1030
1032
|
if (!ev || ev.type !== "bodyAvailable")
|
|
@@ -3157,8 +3159,13 @@ var init_message_list = __esm({
|
|
|
3157
3159
|
}
|
|
3158
3160
|
const body = this.el.parentElement;
|
|
3159
3161
|
if (body?.classList.contains("multi-select-on")) {
|
|
3160
|
-
|
|
3162
|
+
const willBeSelected = !this.isSelected;
|
|
3163
|
+
this.setSelected(willBeSelected);
|
|
3161
3164
|
lastClickedRow = this.el;
|
|
3165
|
+
if (willBeSelected) {
|
|
3166
|
+
focusRow(this);
|
|
3167
|
+
this.setUnreadClass(false);
|
|
3168
|
+
}
|
|
3162
3169
|
updateBulkBar();
|
|
3163
3170
|
return;
|
|
3164
3171
|
}
|
|
@@ -4423,7 +4430,9 @@ async function collectDueAlarms(now) {
|
|
|
4423
4430
|
const startMs = ev.startMs || 0;
|
|
4424
4431
|
if (!startMs)
|
|
4425
4432
|
continue;
|
|
4426
|
-
|
|
4433
|
+
if (!Array.isArray(ev.reminderMinutes) || ev.reminderMinutes.length === 0)
|
|
4434
|
+
continue;
|
|
4435
|
+
const offsets = ev.reminderMinutes.map((m) => m * 6e4);
|
|
4427
4436
|
for (const offsetMs of offsets) {
|
|
4428
4437
|
const occBaseKey = occKey(ev.uuid, startMs);
|
|
4429
4438
|
const key = `${occBaseKey}@${offsetMs}`;
|
|
@@ -4738,14 +4747,13 @@ function startAlarmPoller() {
|
|
|
4738
4747
|
});
|
|
4739
4748
|
});
|
|
4740
4749
|
}
|
|
4741
|
-
var DISMISSED_KEY, SNOOZED_KEY,
|
|
4750
|
+
var DISMISSED_KEY, SNOOZED_KEY, LOOKBACK_MS, LOOKAHEAD_MS, POLL_INTERVAL_MS, firedThisSession, openPopups;
|
|
4742
4751
|
var init_alarms = __esm({
|
|
4743
4752
|
"client/components/alarms.js"() {
|
|
4744
4753
|
"use strict";
|
|
4745
4754
|
init_api_client();
|
|
4746
4755
|
DISMISSED_KEY = "mailx-alarm-dismissed";
|
|
4747
4756
|
SNOOZED_KEY = "mailx-alarm-snoozed";
|
|
4748
|
-
CAL_LEAD_MS = 10 * 60 * 1e3;
|
|
4749
4757
|
LOOKBACK_MS = 60 * 60 * 1e3;
|
|
4750
4758
|
LOOKAHEAD_MS = 2 * 60 * 60 * 1e3;
|
|
4751
4759
|
POLL_INTERVAL_MS = 3e4;
|
|
@@ -5130,36 +5138,35 @@ function renderNode(node, container, depth) {
|
|
|
5130
5138
|
return;
|
|
5131
5139
|
const statusEl = document.getElementById("status-sync");
|
|
5132
5140
|
const crossAccount = toMove.some((m) => m.accountId !== node.accountId);
|
|
5133
|
-
|
|
5134
|
-
|
|
5135
|
-
|
|
5136
|
-
|
|
5137
|
-
|
|
5138
|
-
|
|
5139
|
-
|
|
5140
|
-
|
|
5141
|
-
|
|
5142
|
-
|
|
5141
|
+
const moved = toMove.length;
|
|
5142
|
+
if (statusEl)
|
|
5143
|
+
statusEl.textContent = `Moved ${moved} message${moved > 1 ? "s" : ""} to ${node.name} \u2014 Ctrl+Z to undo`;
|
|
5144
|
+
const { removeMessagesAndReconcile: removeMessagesAndReconcile2 } = await Promise.resolve().then(() => (init_message_list(), message_list_exports));
|
|
5145
|
+
removeMessagesAndReconcile2(toMove);
|
|
5146
|
+
const treeContainer = document.getElementById("folder-tree");
|
|
5147
|
+
if (treeContainer)
|
|
5148
|
+
loadFolderTree(treeContainer);
|
|
5149
|
+
document.dispatchEvent(new CustomEvent("mailx-moved", {
|
|
5150
|
+
detail: {
|
|
5151
|
+
messages: toMove.map((m) => ({ accountId: m.accountId, uid: m.uid, sourceFolderId: m.folderId })),
|
|
5152
|
+
targetAccountId: node.accountId,
|
|
5153
|
+
targetFolderId: node.id
|
|
5143
5154
|
}
|
|
5144
|
-
|
|
5145
|
-
|
|
5146
|
-
|
|
5147
|
-
const { removeMessagesAndReconcile: removeMessagesAndReconcile2 } = await Promise.resolve().then(() => (init_message_list(), message_list_exports));
|
|
5148
|
-
removeMessagesAndReconcile2(toMove);
|
|
5149
|
-
const treeContainer = document.getElementById("folder-tree");
|
|
5150
|
-
if (treeContainer)
|
|
5151
|
-
loadFolderTree(treeContainer);
|
|
5152
|
-
document.dispatchEvent(new CustomEvent("mailx-moved", {
|
|
5153
|
-
detail: {
|
|
5154
|
-
messages: toMove.map((m) => ({ accountId: m.accountId, uid: m.uid, sourceFolderId: m.folderId })),
|
|
5155
|
-
targetAccountId: node.accountId,
|
|
5156
|
-
targetFolderId: node.id
|
|
5157
|
-
}
|
|
5158
|
-
}));
|
|
5159
|
-
} catch (err) {
|
|
5160
|
-
console.error(`Move failed: ${err.message}`);
|
|
5155
|
+
}));
|
|
5156
|
+
const onErr = (err) => {
|
|
5157
|
+
console.error(`Move failed: ${err?.message || err}`);
|
|
5161
5158
|
if (statusEl)
|
|
5162
|
-
statusEl.textContent = `Move
|
|
5159
|
+
statusEl.textContent = `Move sync issue: ${err?.message || err}`;
|
|
5160
|
+
};
|
|
5161
|
+
if (crossAccount) {
|
|
5162
|
+
for (const msg of toMove) {
|
|
5163
|
+
const targetAccountId = msg.accountId !== node.accountId ? node.accountId : void 0;
|
|
5164
|
+
moveMessage(msg.accountId, msg.uid, node.id, targetAccountId).catch(onErr);
|
|
5165
|
+
}
|
|
5166
|
+
} else {
|
|
5167
|
+
const accountId = toMove[0].accountId;
|
|
5168
|
+
const uids = toMove.map((m) => m.uid);
|
|
5169
|
+
moveMessages(accountId, uids, node.id).catch(onErr);
|
|
5163
5170
|
}
|
|
5164
5171
|
});
|
|
5165
5172
|
}
|
|
@@ -6620,19 +6627,17 @@ async function deleteSelectedMessages() {
|
|
|
6620
6627
|
lastDeleted = null;
|
|
6621
6628
|
if (statusSync?.textContent?.includes("undo")) statusSync.textContent = "";
|
|
6622
6629
|
}, 3e4);
|
|
6623
|
-
|
|
6624
|
-
|
|
6625
|
-
|
|
6626
|
-
|
|
6627
|
-
|
|
6628
|
-
|
|
6629
|
-
|
|
6630
|
-
|
|
6631
|
-
|
|
6632
|
-
|
|
6633
|
-
|
|
6634
|
-
console.error(`Delete failed: ${e.message}`);
|
|
6635
|
-
if (statusSync) statusSync.textContent = `Delete failed: ${e?.message || e}`;
|
|
6630
|
+
const byAccount = /* @__PURE__ */ new Map();
|
|
6631
|
+
for (const msg of snapshot) {
|
|
6632
|
+
const uids = byAccount.get(msg.accountId) || [];
|
|
6633
|
+
uids.push(msg.uid);
|
|
6634
|
+
byAccount.set(msg.accountId, uids);
|
|
6635
|
+
}
|
|
6636
|
+
for (const [accountId, uids] of byAccount) {
|
|
6637
|
+
deleteMessages(accountId, uids).catch((e) => {
|
|
6638
|
+
console.error(`Delete failed for ${accountId}: ${e?.message || e}`);
|
|
6639
|
+
if (statusSync) statusSync.textContent = `Delete sync issue (${accountId}): ${e?.message || e}`;
|
|
6640
|
+
});
|
|
6636
6641
|
}
|
|
6637
6642
|
}
|
|
6638
6643
|
async function undoDelete() {
|