@antelopejs/dms-mailing 0.4.0 → 0.5.0

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 (62) hide show
  1. package/README.md +1 -1
  2. package/dist/pages/sends.js +2 -2
  3. package/dist/pages/sends.js.map +1 -1
  4. package/dist/pages/suppressions.js +2 -2
  5. package/dist/pages/suppressions.js.map +1 -1
  6. package/dist/pages/templates.js +3 -3
  7. package/dist/pages/templates.js.map +1 -1
  8. package/frontend-vue/app/components/CategoriesInput.vue +7 -14
  9. package/frontend-vue/app/components/DuplicateModal.vue +9 -3
  10. package/frontend-vue/app/components/Editor.vue +3 -3
  11. package/frontend-vue/app/components/NewTemplateModal.vue +9 -3
  12. package/frontend-vue/app/components/OverviewGate.vue +20 -29
  13. package/frontend-vue/app/components/PageHeader.vue +8 -12
  14. package/frontend-vue/app/components/RealSendModal.vue +3 -1
  15. package/frontend-vue/app/components/RenderingModal.vue +5 -7
  16. package/frontend-vue/app/components/RetentionInput.vue +13 -23
  17. package/frontend-vue/app/components/SendDrawer.vue +5 -2
  18. package/frontend-vue/app/components/StarterGallery.vue +11 -9
  19. package/frontend-vue/app/components/TemplateCard.vue +19 -4
  20. package/frontend-vue/app/components/TemplateDrawer.vue +8 -2
  21. package/frontend-vue/app/components/TemplateGallery.vue +25 -20
  22. package/frontend-vue/app/components/TemplatePreviewFrame.vue +8 -6
  23. package/frontend-vue/app/components/TestSendModal.vue +3 -1
  24. package/frontend-vue/app/components/VersionHistory.vue +3 -3
  25. package/frontend-vue/app/components/WebhookStatus.vue +20 -17
  26. package/frontend-vue/app/components/editor/EditorWorkspace.vue +5 -0
  27. package/frontend-vue/app/composables/useEditorActions.ts +3 -1
  28. package/frontend-vue/app/composables/useEditorSession.ts +6 -4
  29. package/frontend-vue/app/composables/useMailingApi.ts +5 -58
  30. package/frontend-vue/app/composables/useMailingReads.ts +229 -0
  31. package/frontend-vue/app/composables/useOverviewSetup.ts +15 -7
  32. package/frontend-vue/app/composables/useTemplateCategories.ts +8 -27
  33. package/frontend-vue/app/utils/gallery.ts +19 -7
  34. package/frontend-vue/app/utils/period.ts +0 -5
  35. package/frontend-vue/package.json +1 -1
  36. package/frontend-vue/tests/block-components.test.ts +0 -3
  37. package/frontend-vue/tests/categories-input.test.ts +44 -13
  38. package/frontend-vue/tests/conditions.test.ts +0 -2
  39. package/frontend-vue/tests/editor-block-list.test.ts +1 -0
  40. package/frontend-vue/tests/editor-session.test.ts +5 -0
  41. package/frontend-vue/tests/footer-block.test.ts +1 -0
  42. package/frontend-vue/tests/funnel-card.test.ts +1 -0
  43. package/frontend-vue/tests/gallery.test.ts +16 -0
  44. package/frontend-vue/tests/helpers/api-data.ts +173 -0
  45. package/frontend-vue/tests/i18n-editor.test.ts +0 -9
  46. package/frontend-vue/tests/new-template-modal.test.ts +18 -5
  47. package/frontend-vue/tests/on-demand-reads.test.ts +81 -0
  48. package/frontend-vue/tests/overview-gate.test.ts +60 -21
  49. package/frontend-vue/tests/page-reads.test.ts +157 -0
  50. package/frontend-vue/tests/period.test.ts +0 -9
  51. package/frontend-vue/tests/retention-input.test.ts +31 -9
  52. package/frontend-vue/tests/send-modals.test.ts +9 -1
  53. package/frontend-vue/tests/shortcuts.test.ts +1 -0
  54. package/frontend-vue/tests/template-drawer.test.ts +31 -14
  55. package/frontend-vue/tests/template-gallery.test.ts +46 -24
  56. package/frontend-vue/tests/variable-path.test.ts +1 -0
  57. package/frontend-vue/vitest.config.ts +4 -1
  58. package/package.json +5 -5
  59. package/src/pages/sends.ts +2 -2
  60. package/src/pages/suppressions.ts +2 -2
  61. package/src/pages/templates.ts +3 -3
  62. package/frontend-vue/tests/smoke.test.ts +0 -8
package/README.md CHANGED
@@ -12,7 +12,7 @@ dashboard and settings. It owns the data (tenant-scoped Mongo tables), renders
12
12
  e-mails through the DMS html-render chain and sends them through
13
13
  `@antelopejs/interface-email`.
14
14
 
15
- The module targets `@antelopejs/dms` 0.7 (0.7.21 or later) and `@antelopejs/dms-frontend` 0.5 (0.5.5 or later).
15
+ The module targets `@antelopejs/dms` 0.9, `@antelopejs/interface-dms` 0.7 and `@antelopejs/dms-frontend` 0.6. Every read goes through the DMS's `useApiData`: what a page renders is read by the server render and handed to the browser; what a drawer, a dialog, a preview frame or the editor shows is read when it opens or asks (`immediate: false`, `useMailingReads`).
16
16
  Like every DMS module, its pages live in the module's own sidebar (Mailing:
17
17
  Overview, Templates, Sends; Configure: Settings, Suppression list) and are
18
18
  reserved to the platform owner. The design decisions behind the v2 screens are recorded in
@@ -86,7 +86,7 @@ const sendAgainAction = (isTest) => ({
86
86
  },
87
87
  target: {
88
88
  type: "api",
89
- url: `${constants_1.API_BASE_PATH}/sends/{_id}/replay`,
89
+ url: `${constants_1.API_BASE_PATH}/sends/{{row._id}}/replay`,
90
90
  method: "POST",
91
91
  successMessage: "$dms_mailing.sends.actions.sent_again",
92
92
  },
@@ -111,7 +111,7 @@ const suppressedAddressAction = {
111
111
  },
112
112
  target: {
113
113
  type: "page",
114
- url: `${SUPPRESSIONS_PAGE}?email={suppressionAddress}`,
114
+ url: `${SUPPRESSIONS_PAGE}?email={{row.suppressionAddress}}`,
115
115
  },
116
116
  };
117
117
  const permissionMeta = (id, icon) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"sends.js","sourceRoot":"","sources":["../../src/pages/sends.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sends.js","sourceRoot":"","sources":["../../src/pages/sends.ts"],"names":[],"mappings":"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"}
@@ -122,7 +122,7 @@ let SuppressionsPageController = class SuppressionsPageController extends (0, pa
122
122
  showLabel: true,
123
123
  target: {
124
124
  type: "api",
125
- url: `${SUPPRESSIONS_URL}/{_id}`,
125
+ url: `${SUPPRESSIONS_URL}/{{row._id}}`,
126
126
  method: "DELETE",
127
127
  successMessage: key("actions.reactivated"),
128
128
  },
@@ -138,7 +138,7 @@ let SuppressionsPageController = class SuppressionsPageController extends (0, pa
138
138
  label: key("actions.see_send"),
139
139
  icon: "i-ph-paper-plane-tilt",
140
140
  rule: { field: "sendId", notEquals: "" },
141
- target: { type: "page", url: `${constants_1.SENDS_PATH}?record={sendId}` },
141
+ target: { type: "page", url: `${constants_1.SENDS_PATH}?record={{row.sendId}}` },
142
142
  },
143
143
  ],
144
144
  },
@@ -1 +1 @@
1
- {"version":3,"file":"suppressions.js","sourceRoot":"","sources":["../../src/pages/suppressions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"suppressions.js","sourceRoot":"","sources":["../../src/pages/suppressions.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yDAA8E;AAE9E,2FAA2F;AAC3F,oEAAuE;AACvE,0EAAsE;AACtE,gEAAqE;AACrE,4CAAoE;AACpE,mEAAkE;AAClE,oCAAuE;AACvE,qCAAoD;AAEpD,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,gBAAgB,GAAG,GAAG,yBAAa,eAAe,CAAC;AAEzD,MAAM,GAAG,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,6BAA6B,IAAI,EAAE,CAAC;AAE1E,MAAM,YAAY,GAAsC;IACtD,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,eAAe;IAC1B,WAAW,EAAE,iBAAiB;IAC9B,MAAM,EAAE,WAAW;CACpB,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,MAAyB,EAAiB,EAAE,CAAC,CAAC;IAChE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;IAC5B,KAAK,EAAE,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC;IAC1B,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;CAChE,CAAC,CAAC;AAQI,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,IAAA,qBAAc,EAC5D,cAAc,EACd;IACE,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,WAAW,EAAE,GAAG,CAAC,aAAa,CAAC;IAC/B,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,qBAAS;IACjB,QAAQ,EAAE,iCAAwB;IAClC,KAAK,EAAE,kBAAkB;CAC1B,EACD,IAAA,uBAAa,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CACnC;IACC,MAAM,CAAC,KAAK,GAAG,IAAA,sBAAS,EAAC,yCAAoB,EAAE;QAC7C,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC;QACvB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;QAK/C,iBAAiB,EAAE;YACjB,KAAK,EAAE;gBACL,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC;aACzB;SACF;QACD,iBAAiB,EAAE,GAAG,CAAC,QAAQ,CAAC;QAChC,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE;YACL,MAAM,EAAE,MAAM;YACd,KAAK,EAAE;gBACL,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;gBACnD,GAAG,2BAAmB,CAAC,GAAG,CAAC,UAAU,CAAC;aACvC;YACD,WAAW,EAAE,KAAK;SACnB;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE;QAC3C,WAAW,EAAE;YACX,QAAQ,EAAE;gBACR,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC;gBACzB,WAAW,EAAE,GAAG,CAAC,mBAAmB,CAAC;gBACrC,IAAI,EAAE,eAAe;aACtB;SACF;QACD,aAAa,EAAE;YACb;gBACE,EAAE,EAAE,iBAAiB;gBACrB,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC;gBACzB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,qBAAa,CAAC,KAAK;gBAC5B,MAAM,EAAE;oBACN,IAAI,EAAE,KAAK;oBACX,GAAG,EAAE,gBAAgB;oBACrB,MAAM,EAAE,MAAM;oBACd,cAAc,EAAE,GAAG,CAAC,eAAe,CAAC;iBACrC;gBACD,OAAO,EAAE;oBACP,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC;oBACvB,WAAW,EAAE,GAAG,CAAC,iBAAiB,CAAC;oBACnC,IAAI,EAAE,eAAe;oBACrB,YAAY,EAAE,GAAG,CAAC,aAAa,CAAC;oBAChC,MAAM,EAAE;wBACN;4BACE,EAAE,EAAE,OAAO;4BACX,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC;4BACvB,IAAI,EAAE,IAAI,gCAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;4BACxC,QAAQ,EAAE,IAAI;yBACf;wBACD;4BACE,EAAE,EAAE,MAAM;4BACV,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC;4BACtB,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC;4BAC1B,IAAI,EAAE,IAAI,gCAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;yBAC1C;qBACF;iBACF;aACF;SACF;QACD,UAAU,EAAE;YACV,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE;gBACN;oBACE,KAAK,EAAE,GAAG,CAAC,oBAAoB,CAAC;oBAChC,IAAI,EAAE,8BAA8B;oBACpC,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,IAAI;oBACf,MAAM,EAAE;wBACN,IAAI,EAAE,KAAK;wBACX,GAAG,EAAE,GAAG,gBAAgB,cAAc;wBACtC,MAAM,EAAE,QAAQ;wBAChB,cAAc,EAAE,GAAG,CAAC,qBAAqB,CAAC;qBAC3C;oBACD,OAAO,EAAE;wBACP,KAAK,EAAE,GAAG,CAAC,kBAAkB,CAAC;wBAC9B,WAAW,EAAE,GAAG,CAAC,wBAAwB,CAAC;wBAC1C,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,8BAA8B;wBACpC,YAAY,EAAE,GAAG,CAAC,oBAAoB,CAAC;qBACxC;iBACF;gBACD;oBACE,KAAK,EAAE,GAAG,CAAC,kBAAkB,CAAC;oBAC9B,IAAI,EAAE,uBAAuB;oBAC7B,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;oBACxC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,sBAAU,wBAAwB,EAAE;iBACrE;aACF;SACF;KACF,CAAC,CAAC;;AArHQ,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,mBAAY,GAAE;GACF,0BAA0B,CAsHtC"}
@@ -120,7 +120,7 @@ let TemplatesPageController = class TemplatesPageController extends (0, page_1.P
120
120
  label: "$dms_mailing.templates.actions.open_editor",
121
121
  icon: "i-ph-pencil-simple",
122
122
  isDefault: true,
123
- target: { type: "page", url: `${constants_1.TEMPLATES_PATH}/{_id}` },
123
+ target: { type: "page", url: `${constants_1.TEMPLATES_PATH}/{{row._id}}` },
124
124
  },
125
125
  {
126
126
  label: "$dms_mailing.templates.actions.details",
@@ -160,7 +160,7 @@ let TemplatesPageController = class TemplatesPageController extends (0, page_1.P
160
160
  rule: { field: "status", notEquals: constants_1.ARCHIVED_STATUS },
161
161
  target: {
162
162
  type: "api",
163
- url: `${constants_1.API_BASE_PATH}/templates/{_id}/archive`,
163
+ url: `${constants_1.API_BASE_PATH}/templates/{{row._id}}/archive`,
164
164
  method: "POST",
165
165
  successMessage: "$dms_mailing.templates.actions.archived",
166
166
  },
@@ -176,7 +176,7 @@ let TemplatesPageController = class TemplatesPageController extends (0, page_1.P
176
176
  rule: { field: "status", equals: constants_1.ARCHIVED_STATUS },
177
177
  target: {
178
178
  type: "api",
179
- url: `${constants_1.API_BASE_PATH}/templates/{_id}/restore`,
179
+ url: `${constants_1.API_BASE_PATH}/templates/{{row._id}}/restore`,
180
180
  method: "POST",
181
181
  successMessage: "$dms_mailing.templates.actions.restored",
182
182
  },
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/pages/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/pages/templates.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  import draggable from 'vuedraggable'
3
3
  import { useLocalizedDefaults } from '../composables/useLocalizedDefaults'
4
- import { useMailingApi } from '../composables/useMailingApi'
4
+ import { useCategoryUsage } from '../composables/useMailingReads'
5
5
  import { isMarketingCategory } from '../utils/system-variables'
6
6
  import {
7
7
  CATEGORY_ICONS,
@@ -53,7 +53,6 @@ const MOVE_FIELD_COMPONENT = 'DmsSelect'
53
53
  const LABEL_PART = 'label'
54
54
  const ROW_FIELD_UI = { error: 'mt-1 ps-9 text-[12px]' }
55
55
 
56
- const api = useMailingApi()
57
56
  const { t } = useI18n()
58
57
  const localized = useLocalizedDefaults()
59
58
  const { confirm } = useConfirm()
@@ -65,7 +64,11 @@ const root = ref<HTMLElement | null>(null)
65
64
  const source = computed(() => props.modelValue ?? props.initialValue ?? [])
66
65
  const rows = ref<EditableCategory[]>(toRows(source.value))
67
66
  const removed = ref<CategoryEntry[]>(movesOf(source.value))
68
- const usage = ref<Record<string, number>>({})
67
+ const usageRead = useCategoryUsage()
68
+ /** Templates per category; none known while the read is missing or failed. */
69
+ const usage = computed<Record<string, number>>(() =>
70
+ usageRead.error.value ? {} : (usageRead.data.value?.counts ?? {}),
71
+ )
69
72
  const pickerOpen = ref<string | null>(null)
70
73
  let lastEmitted = serializeCategories(currentEntries())
71
74
 
@@ -216,14 +219,6 @@ async function moveBy(index: number, offset: number): Promise<void> {
216
219
  handles?.[moved.index]?.focus()
217
220
  }
218
221
 
219
- async function loadUsage(): Promise<void> {
220
- try {
221
- usage.value = (await api.categoryUsage()).counts
222
- } catch {
223
- usage.value = {}
224
- }
225
- }
226
-
227
222
  watch(source, (value) => {
228
223
  if (serializeCategories(value) === lastEmitted) return
229
224
  rows.value = toRows(value)
@@ -238,11 +233,9 @@ watch(
238
233
  rows.value
239
234
  .filter((row) => row.isNew && saved.has(row.id))
240
235
  .forEach((row) => (row.isNew = false))
241
- void loadUsage()
236
+ void usageRead.refresh()
242
237
  },
243
238
  )
244
-
245
- onMounted(loadUsage)
246
239
  </script>
247
240
 
248
241
  <template>
@@ -2,6 +2,10 @@
2
2
  import FormFieldRow from '../build/components/FormFieldRow.vue'
3
3
  import FormRows from '../build/components/FormRows.vue'
4
4
  import { useMailingApi } from '../composables/useMailingApi'
5
+ import {
6
+ useTemplateContentRead,
7
+ useTemplateListRead,
8
+ } from '../composables/useMailingReads'
5
9
  import {
6
10
  HTTP_CONFLICT,
7
11
  apiErrorMessage,
@@ -32,6 +36,8 @@ const { t } = useI18n()
32
36
  const { processApiMessage } = useTranslation()
33
37
 
34
38
  const templateId = computed(() => props.rowData?._id ?? props.templateId ?? '')
39
+ const readTemplates = useTemplateListRead()
40
+ const readContent = useTemplateContentRead(templateId)
35
41
  const source = ref<TemplateRow | null>(props.rowData ?? null)
36
42
  const takenSlugs = ref(new Set<string>())
37
43
  const name = ref('')
@@ -49,13 +55,13 @@ function prefill(template: TemplateRow): void {
49
55
  }
50
56
 
51
57
  onMounted(async () => {
52
- const list = await api.listTemplates().catch(() => ({ results: [] }))
58
+ const list = await readTemplates().catch(() => ({ results: [] }))
53
59
  takenSlugs.value = new Set(list.results.map((row: TemplateRow) => row.slug))
54
60
  source.value ??=
55
61
  list.results.find((row: TemplateRow) => row._id === templateId.value) ??
56
62
  null
57
63
  if (!source.value && templateId.value) {
58
- const detail = await api.templateContent(templateId.value).catch(() => null)
64
+ const detail = await readContent().catch(() => null)
59
65
  source.value = detail?.template ?? null
60
66
  }
61
67
  if (source.value) prefill(source.value)
@@ -174,7 +180,7 @@ async function submit(): Promise<void> {
174
180
  :ui="{ base: 'font-mono' }"
175
181
  :disabled="loading"
176
182
  :trailing-icon="slugIssue ? undefined : 'i-ph-check-circle'"
177
- @update:model-value="(value) => onSlugInput(String(value))"
183
+ @update:model-value="(value: unknown) => onSlugInput(String(value))"
178
184
  />
179
185
  </template>
180
186
  </FormFieldRow>
@@ -1,7 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, onMounted, ref } from 'vue'
3
3
  import type { TemplateContentResponse } from '../types/mailing'
4
- import { useMailingApi } from '../composables/useMailingApi'
4
+ import { useTemplateContentRead } from '../composables/useMailingReads'
5
5
  import { useRecordLabel } from '../composables/useEditorContext'
6
6
  import { templateIdFrom } from '../utils/editor-route'
7
7
  import { TEMPLATES_PATH } from '../utils/pages'
@@ -15,10 +15,10 @@ const props = defineProps<Props>()
15
15
 
16
16
  const { t } = useI18n()
17
17
  const route = useDmsRoute()
18
- const api = useMailingApi()
19
18
  const setRecordLabel = useRecordLabel()
20
19
 
21
20
  const templateId = computed(() => templateIdFrom(props.routeParams, route.path))
21
+ const readContent = useTemplateContentRead(templateId)
22
22
  const locale = ref<string | null>(
23
23
  route.query.locale ? String(route.query.locale) : null,
24
24
  )
@@ -31,7 +31,7 @@ const generation = ref(0)
31
31
  async function load(): Promise<void> {
32
32
  failed.value = false
33
33
  try {
34
- loaded.value = await api.templateContent(templateId.value)
34
+ loaded.value = await readContent()
35
35
  setRecordLabel(loaded.value.template.name)
36
36
  generation.value += 1
37
37
  } catch {
@@ -5,6 +5,10 @@ import FormRows from '../build/components/FormRows.vue'
5
5
  import NewTemplateSourceTile from './NewTemplateSourceTile.vue'
6
6
  import { useLocalizedDefaults } from '../composables/useLocalizedDefaults'
7
7
  import { useMailingApi } from '../composables/useMailingApi'
8
+ import {
9
+ useStartersRead,
10
+ useTemplateListRead,
11
+ } from '../composables/useMailingReads'
8
12
  import {
9
13
  HTTP_CONFLICT,
10
14
  apiErrorMessage,
@@ -85,6 +89,8 @@ const source = ref<SourceChoice>(
85
89
  const isSubmitted = ref(false)
86
90
  const saving = ref(false)
87
91
  const templates = ref<TemplateRow[]>([])
92
+ const readTemplates = useTemplateListRead()
93
+ const readStarters = useStartersRead()
88
94
  const localized = useLocalizedDefaults()
89
95
  const storedStarters = ref<StarterSummary[]>([])
90
96
  const starters = computed(() => localized.starters(storedStarters.value))
@@ -94,8 +100,8 @@ const templateSearch = ref('')
94
100
 
95
101
  onMounted(async () => {
96
102
  const [templateList, starterList] = await Promise.all([
97
- api.listTemplates().catch(() => ({ results: [] as TemplateRow[] })),
98
- api.starters().catch(() => ({ starters: [] as StarterSummary[] })),
103
+ readTemplates().catch(() => ({ results: [] as TemplateRow[] })),
104
+ readStarters().catch(() => ({ starters: [] as StarterSummary[] })),
99
105
  ])
100
106
  templates.value = templateList.results
101
107
  storedStarters.value = starterList.starters
@@ -324,7 +330,7 @@ async function submit(): Promise<void> {
324
330
  :ui="{ base: 'font-mono' }"
325
331
  :trailing-icon="slugIssue ? undefined : 'i-ph-check-circle'"
326
332
  :aria-invalid="Boolean(slugError)"
327
- @update:model-value="(value) => onSlugInput(String(value))"
333
+ @update:model-value="(value: unknown) => onSlugInput(String(value))"
328
334
  />
329
335
  <UBadge
330
336
  color="neutral"
@@ -1,11 +1,9 @@
1
1
  <script setup lang="ts">
2
- import { useMailingApi } from '../composables/useMailingApi'
3
- import { useSetupHidesPeriod } from '../composables/useOverviewSetup'
2
+ import { useSetupFacts } from '../composables/useMailingReads'
4
3
  import {
5
4
  isSetupComplete,
6
5
  needsSetup,
7
6
  setupSteps,
8
- type SetupFacts,
9
7
  type SetupStep,
10
8
  type SetupStepState,
11
9
  } from '../utils/overview-setup'
@@ -13,10 +11,10 @@ import type { Component } from 'vue'
13
11
  import type { MailingComponentProps } from '../types/component'
14
12
 
15
13
  defineProps<MailingComponentProps>()
14
+ defineOptions({ inheritAttrs: false })
16
15
 
17
16
  type GateState = 'loading' | 'error' | 'ready'
18
17
 
19
- const OVERVIEW_PERIOD_SCOPE = 'mailing-overview'
20
18
  const NEW_TEMPLATE_MODAL = 'MailingNewTemplateModal'
21
19
  const NEW_TEMPLATE_MODAL_SIZE = 'lg'
22
20
  const KEY_PREFIX = 'dms_mailing.setup.'
@@ -34,15 +32,25 @@ const STEP_BUTTON_VARIANTS: Record<SetupStepState, 'solid' | 'outline'> = {
34
32
  todo: 'outline',
35
33
  }
36
34
 
37
- const api = useMailingApi()
38
35
  const { t } = useI18n()
39
36
  const { open: openModal } = useModal()
40
- const hidesPeriod = useSetupHidesPeriod(OVERVIEW_PERIOD_SCOPE)
41
37
 
42
- const facts = ref<SetupFacts | null>(null)
43
- const state = ref<GateState>('loading')
38
+ const { data: facts, error, status, refresh } = useSetupFacts()
39
+ /**
40
+ * The header's period selector sets up once the dashboard has: a server
41
+ * render, which renders the dashboard once the facts are in, would otherwise
42
+ * set the selector up first and render the cards with a period the browser's
43
+ * cards do not have yet as they hydrate.
44
+ */
45
+ const DashboardRendered = holdPageHeaderActions()
44
46
  const isResumed = ref(false)
45
47
 
48
+ /** A failure shows once its retry is over; the facts read last stay meanwhile. */
49
+ const state = computed<GateState>(() => {
50
+ if (facts.value) return 'ready'
51
+ return error.value && status.value !== 'pending' ? 'error' : 'loading'
52
+ })
53
+
46
54
  const steps = computed<SetupStep[]>(() =>
47
55
  facts.value ? setupSteps(facts.value) : [],
48
56
  )
@@ -63,40 +71,22 @@ const errorActions = computed(() => [
63
71
  {
64
72
  label: key('retry'),
65
73
  icon: 'i-ph-arrows-clockwise',
66
- onClick: () => void load(),
74
+ onClick: () => void refresh(),
67
75
  },
68
76
  ])
69
77
 
70
78
  const stepDescription = (step: SetupStep): string =>
71
79
  key(`steps.${step.id}.${step.state === 'done' ? 'done' : 'description'}`)
72
80
 
73
- async function load(): Promise<void> {
74
- state.value = 'loading'
75
- try {
76
- facts.value = await api.setupFacts()
77
- state.value = 'ready'
78
- } catch {
79
- state.value = 'error'
80
- }
81
- }
82
-
83
81
  function createTemplate(): void {
84
82
  const modal = openModal({
85
83
  title: t('dms_mailing.setup.create_template'),
86
84
  component: resolveComponent(NEW_TEMPLATE_MODAL) as Component,
87
85
  size: NEW_TEMPLATE_MODAL_SIZE,
88
86
  })
89
- void modal.result.then(load, load)
87
+ const reread = () => refresh()
88
+ void modal.result.then(reread, reread)
90
89
  }
91
-
92
- watch(isBlocking, (blocking) => {
93
- hidesPeriod.value = blocking
94
- })
95
-
96
- onMounted(load)
97
- onBeforeUnmount(() => {
98
- hidesPeriod.value = false
99
- })
100
90
  </script>
101
91
 
102
92
  <template>
@@ -217,4 +207,5 @@ onBeforeUnmount(() => {
217
207
 
218
208
  <slot v-if="showsDashboard" />
219
209
  </div>
210
+ <DashboardRendered />
220
211
  </template>
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { useMailingApi } from '../composables/useMailingApi'
2
+ import { useProviderInfo } from '../composables/useMailingReads'
3
3
  import { useSetupHidesPeriod } from '../composables/useOverviewSetup'
4
4
  import { presetShortLabelKey } from '../utils/period'
5
5
  import type { Component } from 'vue'
@@ -26,13 +26,18 @@ const props = withDefaults(defineProps<PageHeaderProps>(), {
26
26
  showProvider: true,
27
27
  })
28
28
 
29
- const api = useMailingApi()
30
29
  const { t } = useI18n()
31
30
 
32
31
  const StatusPill = resolveComponent('DmsStatusPill') as Component
33
32
  const PeriodSelector = resolveComponent('DmsPeriodSelector') as Component
34
33
 
35
- const provider = ref<ProviderInfo | null>(null)
34
+ /** Shown as "no provider" when the read fails. */
35
+ const NO_PROVIDER: ProviderInfo = { name: '', connected: false, features: null }
36
+
37
+ const providerRead = useProviderInfo(() => props.showProvider)
38
+ const provider = computed<ProviderInfo | null>(() =>
39
+ providerRead.error.value ? NO_PROVIDER : providerRead.data.value,
40
+ )
36
41
  const hidesPeriod = useSetupHidesPeriod(props.periodScope)
37
42
 
38
43
  const presetLabels = computed(() =>
@@ -82,15 +87,6 @@ function renderPeriod() {
82
87
  }
83
88
 
84
89
  usePageHeaderActions(() => [renderProvider(), renderPeriod()])
85
-
86
- onMounted(async () => {
87
- if (!props.showProvider) return
88
- try {
89
- provider.value = await api.provider()
90
- } catch {
91
- provider.value = { name: '', connected: false, features: null }
92
- }
93
- })
94
90
  </script>
95
91
 
96
92
  <template>
@@ -4,6 +4,7 @@ import { onBeforeUnmount } from 'vue'
4
4
  import FormFieldRow from '../build/components/FormFieldRow.vue'
5
5
  import FormRows from '../build/components/FormRows.vue'
6
6
  import { useMailingApi } from '../composables/useMailingApi'
7
+ import { useTemplateContentRead } from '../composables/useMailingReads'
7
8
  import type { SendResult } from '../composables/useMailingApi'
8
9
  import { useTemplateDrawer } from '../composables/useTemplateDrawer'
9
10
  import { apiErrorMessage } from '../utils/api-error'
@@ -64,6 +65,7 @@ const { uniqueLocales } = useUniqueLocales()
64
65
  const overlays = useTemplateDrawer()
65
66
 
66
67
  const templateId = computed(() => props.rowData?._id ?? props.templateId ?? '')
68
+ const readContent = useTemplateContentRead(templateId)
67
69
  const detail = ref<TemplateContentResponse | null>(null)
68
70
  const loading = ref(true)
69
71
  const recipients = ref<string[]>([])
@@ -104,7 +106,7 @@ const missingRequired = computed(() =>
104
106
  onMounted(async () => {
105
107
  if (!templateId.value) return
106
108
  try {
107
- detail.value = await api.templateContent(templateId.value)
109
+ detail.value = await readContent()
108
110
  values.value = initialSendValues(fields.value, detail.value.testData)
109
111
  locale.value = detail.value.fallbackLocale
110
112
  } catch (error) {
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { useMailingApi } from '../composables/useMailingApi'
2
+ import { useSendHtmlRead, useSendRead } from '../composables/useMailingReads'
3
3
  import type { SendHtmlResponse, SendRow } from '../types/mailing'
4
4
 
5
5
  type RenderingView = 'desktop' | 'mobile' | 'html'
@@ -44,7 +44,6 @@ const FRAME_WIDTHS: Record<RenderingView, string> = {
44
44
  html: '100%',
45
45
  }
46
46
 
47
- const api = useMailingApi()
48
47
  const { t, locale } = useI18n()
49
48
 
50
49
  const view = ref<RenderingView>('desktop')
@@ -54,6 +53,8 @@ const loading = ref(false)
54
53
  const failed = ref(false)
55
54
 
56
55
  const sendIdValue = computed(() => props.rowData?._id ?? props.sendId ?? '')
56
+ const readSend = useSendRead(sendIdValue)
57
+ const readHtml = useSendHtmlRead(sendIdValue)
57
58
  const key = (path: string, params: Record<string, unknown> = {}): string =>
58
59
  t(`${KEY_PREFIX}${path}`, params)
59
60
 
@@ -85,7 +86,7 @@ const meta = computed(() => {
85
86
 
86
87
  async function loadSend(): Promise<void> {
87
88
  if (send.value) return
88
- const detail = await api.send(sendIdValue.value)
89
+ const detail = await readSend()
89
90
  send.value = detail.send
90
91
  }
91
92
 
@@ -94,10 +95,7 @@ async function load(): Promise<void> {
94
95
  loading.value = true
95
96
  failed.value = false
96
97
  try {
97
- const [html] = await Promise.all([
98
- api.sendHtml(sendIdValue.value),
99
- loadSend(),
100
- ])
98
+ const [html] = await Promise.all([readHtml(), loadSend()])
101
99
  rendering.value = html
102
100
  } catch (error) {
103
101
  failed.value = true
@@ -1,9 +1,9 @@
1
1
  <script setup lang="ts">
2
- import { useDebounceFn } from '@vueuse/core'
3
- import { useMailingApi } from '../composables/useMailingApi'
2
+ import { refDebounced } from '@vueuse/core'
3
+ import { useRetentionPreview } from '../composables/useMailingReads'
4
4
  import {
5
5
  clampRetention,
6
- formatClock,
6
+ CLOCK_FORMAT,
7
7
  isWithinADay,
8
8
  MAX_RETENTION_DAYS,
9
9
  MIN_RETENTION_DAYS,
@@ -35,8 +35,8 @@ const DATE_FORMAT: Intl.DateTimeFormatOptions = {
35
35
  day: 'numeric',
36
36
  }
37
37
 
38
- const api = useMailingApi()
39
38
  const { t, locale } = useI18n()
39
+ const { dateTimeFormat } = useRegionalFormat()
40
40
  const { confirm } = useConfirm()
41
41
  const form = useEnclosingForm()
42
42
 
@@ -56,7 +56,13 @@ const isCustom = computed(
56
56
  isCustomPicked.value ||
57
57
  (days.value !== null && retentionChoice(days.value) === RETENTION_CUSTOM),
58
58
  )
59
- const preview = ref<RetentionPreview | null>(null)
59
+ /** The days the preview reads, once the choice holds still. */
60
+ const previewDays = refDebounced(days, PREVIEW_DEBOUNCE_MS)
61
+ const previewRead = useRetentionPreview(previewDays)
62
+ /** A failed read shows no preview. */
63
+ const preview = computed<RetentionPreview | null>(() =>
64
+ previewRead.error.value ? null : previewRead.data.value,
65
+ )
60
66
 
61
67
  const key = (
62
68
  path: string,
@@ -99,8 +105,8 @@ function previewParams(value: RetentionPreview): Record<string, unknown> {
99
105
  return {
100
106
  when: isWithinADay(value.nextRunAt, new Date())
101
107
  ? key('tonight')
102
- : new Date(value.nextRunAt).toLocaleDateString(locale.value, DATE_FORMAT),
103
- time: formatClock(value.nextRunAt, locale.value),
108
+ : dateTimeFormat(DATE_FORMAT).format(new Date(value.nextRunAt)),
109
+ time: dateTimeFormat(CLOCK_FORMAT).format(new Date(value.nextRunAt)),
104
110
  count: new Intl.NumberFormat(locale.value).format(value.count),
105
111
  duration: key('days', { count: value.days }, value.days),
106
112
  }
@@ -148,22 +154,6 @@ function guardSubmit(): boolean {
148
154
  return false
149
155
  }
150
156
 
151
- const loadPreview = useDebounceFn(async (value: number) => {
152
- try {
153
- preview.value = await api.retentionPreview(value)
154
- } catch {
155
- preview.value = null
156
- }
157
- }, PREVIEW_DEBOUNCE_MS)
158
-
159
- watch(
160
- days,
161
- (value) => {
162
- if (value) void loadPreview(value)
163
- },
164
- { immediate: true },
165
- )
166
-
167
157
  watch(
168
158
  () => props.modelValue,
169
159
  (value) => {
@@ -2,6 +2,7 @@
2
2
  import { TEMPLATES_PATH } from '../utils/pages'
3
3
  import { useClipboard } from '@vueuse/core'
4
4
  import { useMailingApi } from '../composables/useMailingApi'
5
+ import { useProviderRead, useSendRead } from '../composables/useMailingReads'
5
6
  import { useReplayToast } from '../composables/useReplayToast'
6
7
  import {
7
8
  describeProblem,
@@ -90,6 +91,8 @@ const { copy } = useClipboard()
90
91
  const KeyValueList = resolveComponent('DmsKeyValueList') as Component
91
92
 
92
93
  const sendId = computed(() => props.rowData?._id ?? props.sendId ?? '')
94
+ const readSend = useSendRead(sendId)
95
+ const readProvider = useProviderRead()
93
96
  const detail = ref<SendDetailResponse | null>(null)
94
97
  const tracking = ref<TimelineTracking | null>(null)
95
98
  const loading = ref(false)
@@ -231,7 +234,7 @@ async function load(): Promise<void> {
231
234
  if (!sendId.value) return
232
235
  loading.value = true
233
236
  try {
234
- detail.value = await api.send(sendId.value)
237
+ detail.value = await readSend()
235
238
  } catch (error) {
236
239
  useApiError(error)
237
240
  } finally {
@@ -242,7 +245,7 @@ async function load(): Promise<void> {
242
245
  /** The provider's tracking, so the timeline waits only for what it reports. */
243
246
  async function loadTracking(): Promise<void> {
244
247
  try {
245
- const provider = await api.provider()
248
+ const provider = await readProvider()
246
249
  tracking.value = provider.features
247
250
  ? {
248
251
  openTracking: !!provider.features.openTracking,