@bobfrankston/rmfmail 1.2.113 → 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.
Files changed (33) hide show
  1. package/TODO.md +5 -5
  2. package/bin/mailx.js +72 -3
  3. package/bin/mailx.js.map +1 -1
  4. package/bin/mailx.ts +62 -3
  5. package/client/android-bootstrap.bundle.js +60 -3
  6. package/client/android-bootstrap.bundle.js.map +2 -2
  7. package/client/app.bundle.js +42 -0
  8. package/client/app.bundle.js.map +2 -2
  9. package/client/app.js +58 -0
  10. package/client/app.js.map +1 -1
  11. package/client/app.ts +60 -0
  12. package/client/compose/compose.ts +13 -5
  13. package/package.json +1 -1
  14. package/packages/mailx-imap/index.d.ts +4 -1
  15. package/packages/mailx-imap/index.d.ts.map +1 -1
  16. package/packages/mailx-imap/index.js +59 -5
  17. package/packages/mailx-imap/index.js.map +1 -1
  18. package/packages/mailx-imap/index.ts +55 -5
  19. package/packages/mailx-imap/package-lock.json +2 -2
  20. package/packages/mailx-imap/package.json +1 -1
  21. package/packages/mailx-store-web/android-bootstrap.js +48 -3
  22. package/packages/mailx-store-web/android-bootstrap.js.map +1 -1
  23. package/packages/mailx-store-web/android-bootstrap.ts +47 -4
  24. package/packages/mailx-store-web/package.json +1 -1
  25. package/packages/mailx-store-web/web-service.d.ts +21 -0
  26. package/packages/mailx-store-web/web-service.d.ts.map +1 -1
  27. package/packages/mailx-store-web/web-service.js +11 -0
  28. package/packages/mailx-store-web/web-service.js.map +1 -1
  29. package/packages/mailx-store-web/web-service.ts +11 -0
  30. package/packages/mailx-types/mailx-api.d.ts +22 -0
  31. package/packages/mailx-types/mailx-api.d.ts.map +1 -1
  32. package/packages/mailx-types/mailx-api.ts +7 -0
  33. package/packages/mailx-types/package.json +1 -1
@@ -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:")) {