@bobfrankston/rmfmail 1.2.252 → 1.2.254

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 (49) hide show
  1. package/client/android-bootstrap.bundle.js +29 -31
  2. package/client/android-bootstrap.bundle.js.map +2 -2
  3. package/client/app.bundle.js +23 -0
  4. package/client/app.bundle.js.map +3 -3
  5. package/client/app.js +26 -0
  6. package/client/app.js.map +1 -1
  7. package/client/app.ts +24 -0
  8. package/client/compose/compose.bundle.js +37 -3
  9. package/client/compose/compose.bundle.js.map +3 -3
  10. package/client/compose/compose.css +13 -0
  11. package/client/compose/compose.js +41 -1
  12. package/client/compose/compose.js.map +1 -1
  13. package/client/compose/compose.ts +38 -1
  14. package/client/lib/api-client.js +7 -0
  15. package/client/lib/api-client.js.map +1 -1
  16. package/client/lib/api-client.ts +8 -0
  17. package/client/lib/mailxapi.js +10 -2
  18. package/package.json +5 -5
  19. package/packages/mailx-imap/package-lock.json +2 -2
  20. package/packages/mailx-imap/package.json +1 -1
  21. package/packages/mailx-service/index.d.ts +19 -1
  22. package/packages/mailx-service/index.d.ts.map +1 -1
  23. package/packages/mailx-service/index.js +27 -2
  24. package/packages/mailx-service/index.js.map +1 -1
  25. package/packages/mailx-service/index.ts +28 -2
  26. package/packages/mailx-service/jsonrpc.js +3 -1
  27. package/packages/mailx-service/jsonrpc.js.map +1 -1
  28. package/packages/mailx-service/jsonrpc.ts +3 -1
  29. package/packages/mailx-service/package.json +1 -1
  30. package/packages/mailx-settings/package.json +1 -1
  31. package/packages/mailx-store/package.json +1 -1
  32. package/packages/mailx-store-web/android-bootstrap.js +1 -1
  33. package/packages/mailx-store-web/android-bootstrap.js.map +1 -1
  34. package/packages/mailx-store-web/android-bootstrap.ts +1 -1
  35. package/packages/mailx-store-web/package.json +1 -1
  36. package/packages/mailx-store-web/web-service.d.ts +5 -1
  37. package/packages/mailx-store-web/web-service.d.ts.map +1 -1
  38. package/packages/mailx-store-web/web-service.js +5 -1
  39. package/packages/mailx-store-web/web-service.js.map +1 -1
  40. package/packages/mailx-store-web/web-service.ts +5 -1
  41. package/packages/mailx-types/mailx-api.d.ts +17 -1
  42. package/packages/mailx-types/mailx-api.d.ts.map +1 -1
  43. package/packages/mailx-types/mailx-api.ts +10 -1
  44. package/packages/mailx-types/mime-build.d.ts.map +1 -1
  45. package/packages/mailx-types/mime-build.js +42 -30
  46. package/packages/mailx-types/mime-build.js.map +1 -1
  47. package/packages/mailx-types/mime-build.ts +51 -32
  48. package/packages/mailx-types/package.json +1 -1
  49. /package/packages/mailx-imap/{node_modules.npmglobalize-stash-85680 → node_modules.npmglobalize-stash-77932}/.package-lock.json +0 -0
package/client/app.js CHANGED
@@ -6510,6 +6510,32 @@ document.addEventListener("mailx-popout-message", (async (e) => {
6510
6510
  draftFolderId: msg.folderId,
6511
6511
  draftId: msg.mailxDraftId || "",
6512
6512
  };
6513
+ // Reopening a draft must bring its attachments back into compose,
6514
+ // exactly as forward / edit-as-new do. Drafts had none to bring until
6515
+ // saveDraft started including them (2026-08-11); without this, editing
6516
+ // a draft and re-saving would strip the files a second time.
6517
+ if (Array.isArray(msg.attachments) && msg.attachments.length) {
6518
+ const loaded = [];
6519
+ for (const att of msg.attachments) {
6520
+ try {
6521
+ const data = await getAttachment(accountId, msg.uid, att.id, msg.folderId);
6522
+ if (data?.content) {
6523
+ loaded.push({
6524
+ filename: data.filename || att.filename || "attachment",
6525
+ mimeType: data.contentType || att.contentType || "application/octet-stream",
6526
+ dataBase64: data.content,
6527
+ });
6528
+ }
6529
+ }
6530
+ catch (e) {
6531
+ // Loud: a dropped attachment here means the next autosave
6532
+ // writes a draft without it.
6533
+ console.error(`[compose] edit draft: failed to load attachment ${att.id} ("${att.filename}"): ${e?.message || e}`);
6534
+ }
6535
+ }
6536
+ if (loaded.length)
6537
+ init.attachments = loaded;
6538
+ }
6513
6539
  sessionStorage.setItem("composeInit", JSON.stringify(init));
6514
6540
  showComposeOverlay(msg.subject ? `Edit: ${msg.subject}` : "Edit draft");
6515
6541
  return;