@bobfrankston/rmfmail 1.2.123 → 1.2.125
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/README.md +6 -0
- package/TODO.md +2 -0
- package/bin/mailx.js +51 -0
- package/bin/mailx.js.map +1 -1
- package/bin/mailx.ts +45 -1
- package/bin/popout-server.js +40 -2
- package/bin/popout-server.js.map +1 -1
- package/bin/popout-server.ts +36 -2
- package/client/android-bootstrap.bundle.js +29 -21
- package/client/android-bootstrap.bundle.js.map +3 -3
- package/client/app.bundle.js +41 -3
- package/client/app.bundle.js.map +3 -3
- package/client/app.js +16 -0
- package/client/app.js.map +1 -1
- package/client/app.ts +15 -0
- package/client/components/folder-tree.js +31 -3
- package/client/components/folder-tree.js.map +1 -1
- package/client/components/folder-tree.ts +24 -3
- package/client/components/message-viewer.js +1 -1
- package/client/components/message-viewer.js.map +1 -1
- package/client/components/message-viewer.ts +1 -1
- package/client/compose/compose.bundle.js +7 -0
- package/client/compose/compose.bundle.js.map +2 -2
- package/client/index.html +2 -0
- package/client/lib/api-client.js +8 -0
- package/client/lib/api-client.js.map +1 -1
- package/client/lib/api-client.ts +8 -0
- package/client/lib/mailxapi.js +4 -0
- package/client/lib/popout-bridge.js +14 -0
- package/client/lib/popout-bridge.js.map +1 -1
- package/client/lib/popout-bridge.ts +12 -0
- package/package.json +9 -9
- package/packages/mailx-imap/index.d.ts.map +1 -1
- package/packages/mailx-imap/index.js +23 -2
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +21 -2
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-service/index.d.ts +21 -0
- package/packages/mailx-service/index.d.ts.map +1 -1
- package/packages/mailx-service/index.js +28 -2
- package/packages/mailx-service/index.js.map +1 -1
- package/packages/mailx-service/index.ts +28 -2
- package/packages/mailx-service/jsonrpc.js +2 -0
- package/packages/mailx-service/jsonrpc.js.map +1 -1
- package/packages/mailx-service/jsonrpc.ts +2 -0
- package/packages/mailx-service/sync-queue.d.ts +8 -0
- package/packages/mailx-service/sync-queue.d.ts.map +1 -1
- package/packages/mailx-service/sync-queue.js +10 -0
- package/packages/mailx-service/sync-queue.js.map +1 -1
- package/packages/mailx-service/sync-queue.ts +11 -0
- package/packages/mailx-settings/package.json +1 -1
- package/packages/mailx-store-web/package.json +1 -1
- package/packages/mailx-store-web/web-service.d.ts.map +1 -1
- package/packages/mailx-store-web/web-service.js +9 -2
- package/packages/mailx-store-web/web-service.js.map +1 -1
- package/packages/mailx-store-web/web-service.ts +9 -2
- package/packages/mailx-types/package.json +1 -1
package/client/app.bundle.js
CHANGED
|
@@ -88,6 +88,7 @@ __export(api_client_exports, {
|
|
|
88
88
|
openInWord: () => openInWord,
|
|
89
89
|
openLocalPath: () => openLocalPath,
|
|
90
90
|
popoutCompose: () => popoutCompose,
|
|
91
|
+
popoutMainWindow: () => popoutMainWindow,
|
|
91
92
|
popoutWindow: () => popoutWindow,
|
|
92
93
|
readConfigHelp: () => readConfigHelp,
|
|
93
94
|
readJsoncFile: () => readJsoncFile,
|
|
@@ -647,6 +648,12 @@ function closeComposePopout(id) {
|
|
|
647
648
|
const fn = ipc().closeComposePopout;
|
|
648
649
|
return fn ? fn(id) : Promise.resolve({ ok: false });
|
|
649
650
|
}
|
|
651
|
+
async function popoutMainWindow(accountId, folderId, name) {
|
|
652
|
+
const fn = ipc().popoutMainWindow;
|
|
653
|
+
if (!fn)
|
|
654
|
+
return { ok: false, reason: "no popoutMainWindow bridge" };
|
|
655
|
+
return fn(accountId, folderId, name);
|
|
656
|
+
}
|
|
650
657
|
async function getDeviceAccounts() {
|
|
651
658
|
return ipc().getDeviceAccounts?.() ?? [];
|
|
652
659
|
}
|
|
@@ -1633,7 +1640,7 @@ async function showMessage(accountId, uid, folderId, specialUse, isRetry = false
|
|
|
1633
1640
|
bodyEl.innerHTML = `<div class="mv-system-message mv-system-error">
|
|
1634
1641
|
<div class="mv-system-tag">mailx</div>
|
|
1635
1642
|
<div class="mv-system-title">Body fetch failed</div>
|
|
1636
|
-
<div class="mv-system-body">${escapeHtml2(msg.bodyError)}<br><span style="color:var(--color-text-muted);font-size:0.9em">${transient ? "Reopen this message to retry." : "
|
|
1643
|
+
<div class="mv-system-body">${escapeHtml2(msg.bodyError)}<br><span style="color:var(--color-text-muted);font-size:0.9em">${transient ? "Reopen this message to retry." : "The server reports this message no longer exists (deleted or moved by another client)."}</span></div>
|
|
1637
1644
|
</div>`;
|
|
1638
1645
|
currentMessage = msg;
|
|
1639
1646
|
currentAccountId = accountId;
|
|
@@ -6816,6 +6823,15 @@ function renderNode(node, container, depth) {
|
|
|
6816
6823
|
{ label: "Open in new tab", action: () => {
|
|
6817
6824
|
openTab({ kind: "folder", accountId: node.accountId, folderId: node.id, specialUse: node.specialUse || "" }, node.name, true);
|
|
6818
6825
|
} },
|
|
6826
|
+
{ label: "Open in new window", action: async () => {
|
|
6827
|
+
try {
|
|
6828
|
+
const r = await popoutMainWindow(node.accountId, node.id, node.name);
|
|
6829
|
+
if (!r?.ok)
|
|
6830
|
+
alert(`New window failed: ${r?.reason || "unknown"}`);
|
|
6831
|
+
} catch (err) {
|
|
6832
|
+
alert(`New window failed: ${err.message}`);
|
|
6833
|
+
}
|
|
6834
|
+
} },
|
|
6819
6835
|
{ label: "", action: () => {
|
|
6820
6836
|
}, separator: true },
|
|
6821
6837
|
{ label: "Mark all read", action: async () => {
|
|
@@ -7522,10 +7538,22 @@ async function loadFolderTree(container) {
|
|
|
7522
7538
|
}
|
|
7523
7539
|
}
|
|
7524
7540
|
if (!target && (isFirstLoad || !hasAutoSelected)) {
|
|
7541
|
+
const bootGo = new URLSearchParams(location.search);
|
|
7542
|
+
const goAcct = bootGo.get("goAccount");
|
|
7543
|
+
const goFolder = bootGo.get("goFolder");
|
|
7544
|
+
if (goAcct && goFolder) {
|
|
7545
|
+
for (const f of allFolderEls) {
|
|
7546
|
+
const el = f;
|
|
7547
|
+
if (el.dataset.accountId === goAcct && el.dataset.folderId === goFolder) {
|
|
7548
|
+
target = el;
|
|
7549
|
+
break;
|
|
7550
|
+
}
|
|
7551
|
+
}
|
|
7552
|
+
}
|
|
7525
7553
|
const unified = container.querySelector(".ft-unified");
|
|
7526
|
-
if (unified) {
|
|
7554
|
+
if (!target && unified) {
|
|
7527
7555
|
target = unified;
|
|
7528
|
-
} else {
|
|
7556
|
+
} else if (!target) {
|
|
7529
7557
|
let bestInbox = null;
|
|
7530
7558
|
let bestCount = -1;
|
|
7531
7559
|
for (const f of allFolderEls) {
|
|
@@ -10589,6 +10617,16 @@ function openShortcutsDialog() {
|
|
|
10589
10617
|
}
|
|
10590
10618
|
var viewBtn = document.getElementById("btn-view");
|
|
10591
10619
|
var viewDropdown = document.getElementById("view-dropdown");
|
|
10620
|
+
document.getElementById("opt-new-window")?.addEventListener("click", async () => {
|
|
10621
|
+
if (viewDropdown) viewDropdown.hidden = true;
|
|
10622
|
+
try {
|
|
10623
|
+
const { popoutMainWindow: popoutMainWindow2 } = await Promise.resolve().then(() => (init_api_client(), api_client_exports));
|
|
10624
|
+
const r = await popoutMainWindow2();
|
|
10625
|
+
if (!r?.ok) showAlert(`New window failed: ${r?.reason || "unknown"}`);
|
|
10626
|
+
} catch (e) {
|
|
10627
|
+
showAlert(`New window failed: ${e?.message || e}`);
|
|
10628
|
+
}
|
|
10629
|
+
});
|
|
10592
10630
|
var optTwoLine = document.getElementById("opt-two-line");
|
|
10593
10631
|
var optEleanor = document.getElementById("opt-eleanor");
|
|
10594
10632
|
var optPreview = document.getElementById("opt-preview");
|