@bobfrankston/rmfmail 1.2.112 → 1.2.114
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/TODO.md +5 -5
- package/bin/mailx.js +72 -3
- package/bin/mailx.js.map +1 -1
- package/bin/mailx.ts +62 -3
- package/client/android-bootstrap.bundle.js +60 -3
- package/client/android-bootstrap.bundle.js.map +2 -2
- package/client/app.bundle.js +42 -0
- package/client/app.bundle.js.map +2 -2
- package/client/app.js +58 -0
- package/client/app.js.map +1 -1
- package/client/app.ts +60 -0
- package/client/compose/compose.bundle.js +50 -5
- package/client/compose/compose.bundle.js.map +2 -2
- package/client/compose/compose.ts +13 -5
- package/client/compose/spellcheck-core.js +59 -3
- package/client/compose/spellcheck-core.js.map +1 -1
- package/client/compose/spellcheck-core.ts +58 -3
- package/client/compose/spellcheck.js +15 -6
- package/client/compose/spellcheck.js.map +1 -1
- package/client/compose/spellcheck.ts +15 -6
- package/package.json +1 -1
- package/packages/mailx-imap/index.d.ts +4 -1
- package/packages/mailx-imap/index.d.ts.map +1 -1
- package/packages/mailx-imap/index.js +59 -5
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +55 -5
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-store-web/android-bootstrap.js +48 -3
- package/packages/mailx-store-web/android-bootstrap.js.map +1 -1
- package/packages/mailx-store-web/android-bootstrap.ts +47 -4
- package/packages/mailx-store-web/package.json +1 -1
- package/packages/mailx-store-web/web-service.d.ts +21 -0
- package/packages/mailx-store-web/web-service.d.ts.map +1 -1
- package/packages/mailx-store-web/web-service.js +11 -0
- package/packages/mailx-store-web/web-service.js.map +1 -1
- package/packages/mailx-store-web/web-service.ts +11 -0
- package/packages/mailx-types/mailx-api.d.ts +22 -0
- package/packages/mailx-types/mailx-api.d.ts.map +1 -1
- package/packages/mailx-types/mailx-api.ts +7 -0
- package/packages/mailx-types/package.json +1 -1
package/client/app.bundle.js
CHANGED
|
@@ -8096,6 +8096,45 @@ function scheduleSyncedStamp() {
|
|
|
8096
8096
|
}
|
|
8097
8097
|
}, SYNC_SETTLE_MS);
|
|
8098
8098
|
}
|
|
8099
|
+
var activeConnects = /* @__PURE__ */ new Map();
|
|
8100
|
+
var CONNECT_SHOW_AFTER_MS = 1500;
|
|
8101
|
+
var connectTickTimer = null;
|
|
8102
|
+
function handleConnectProgress(event) {
|
|
8103
|
+
const key = `${event.accountId}|${event.purpose}`;
|
|
8104
|
+
if (event.phase === "done" || event.phase === "failed") {
|
|
8105
|
+
activeConnects.delete(key);
|
|
8106
|
+
if (activeConnects.size === 0 && connectTickTimer) {
|
|
8107
|
+
clearInterval(connectTickTimer);
|
|
8108
|
+
connectTickTimer = null;
|
|
8109
|
+
scheduleSyncedStamp();
|
|
8110
|
+
}
|
|
8111
|
+
return;
|
|
8112
|
+
}
|
|
8113
|
+
const existing = activeConnects.get(key);
|
|
8114
|
+
if (existing) {
|
|
8115
|
+
existing.phase = event.phase;
|
|
8116
|
+
} else {
|
|
8117
|
+
activeConnects.set(key, {
|
|
8118
|
+
host: event.host || event.accountId,
|
|
8119
|
+
purpose: event.purpose || "",
|
|
8120
|
+
phase: event.phase,
|
|
8121
|
+
startedAt: Date.now() - (event.elapsedMs || 0)
|
|
8122
|
+
});
|
|
8123
|
+
}
|
|
8124
|
+
if (!connectTickTimer) connectTickTimer = setInterval(renderConnectTick, 100);
|
|
8125
|
+
}
|
|
8126
|
+
function renderConnectTick() {
|
|
8127
|
+
const el = document.getElementById("status-sync");
|
|
8128
|
+
if (!el || activeConnects.size === 0) return;
|
|
8129
|
+
let worst = null;
|
|
8130
|
+
for (const c of activeConnects.values()) {
|
|
8131
|
+
if (!worst || c.startedAt < worst.startedAt) worst = c;
|
|
8132
|
+
}
|
|
8133
|
+
if (!worst) return;
|
|
8134
|
+
const elapsed = Date.now() - worst.startedAt;
|
|
8135
|
+
if (elapsed < CONNECT_SHOW_AFTER_MS) return;
|
|
8136
|
+
el.textContent = `Connecting to ${worst.host} (${worst.phase}${worst.purpose ? " " + worst.purpose : ""}, ${(elapsed / 1e3).toFixed(1)}s)`;
|
|
8137
|
+
}
|
|
8099
8138
|
var messageList = document.getElementById("message-list");
|
|
8100
8139
|
if (messageList) {
|
|
8101
8140
|
const twoLineThreshold = 600;
|
|
@@ -9824,6 +9863,9 @@ onWsEvent((event) => {
|
|
|
9824
9863
|
if (statusSync) statusSync.textContent = "Connected";
|
|
9825
9864
|
if (startupStatus) startupStatus.textContent = "Loading accounts...";
|
|
9826
9865
|
break;
|
|
9866
|
+
case "connectProgress":
|
|
9867
|
+
handleConnectProgress(event);
|
|
9868
|
+
break;
|
|
9827
9869
|
case "syncProgress": {
|
|
9828
9870
|
let label = `${event.phase} ${event.progress || 0}%`;
|
|
9829
9871
|
if (typeof event.phase === "string" && event.phase.startsWith("folders:")) {
|