@open-mercato/core 0.4.5-develop-5191db4ef3 → 0.4.5-develop-9f9549ebc8

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 (385) hide show
  1. package/dist/generated/entities/message/index.js +65 -0
  2. package/dist/generated/entities/message/index.js.map +7 -0
  3. package/dist/generated/entities/message_access_token/index.js +19 -0
  4. package/dist/generated/entities/message_access_token/index.js.map +7 -0
  5. package/dist/generated/entities/message_confirmation/index.js +21 -0
  6. package/dist/generated/entities/message_confirmation/index.js.map +7 -0
  7. package/dist/generated/entities/message_object/index.js +23 -0
  8. package/dist/generated/entities/message_object/index.js.map +7 -0
  9. package/dist/generated/entities/message_recipient/index.js +31 -0
  10. package/dist/generated/entities/message_recipient/index.js.map +7 -0
  11. package/dist/generated/entities.ids.generated.js +8 -0
  12. package/dist/generated/entities.ids.generated.js.map +2 -2
  13. package/dist/generated/entity-fields-registry.js +10 -0
  14. package/dist/generated/entity-fields-registry.js.map +2 -2
  15. package/dist/modules/customers/backend/customers/deals/[id]/page.js +27 -8
  16. package/dist/modules/customers/backend/customers/deals/[id]/page.js.map +2 -2
  17. package/dist/modules/customers/lib/messageObjectPreviews.js +131 -0
  18. package/dist/modules/customers/lib/messageObjectPreviews.js.map +7 -0
  19. package/dist/modules/customers/message-objects.js +71 -0
  20. package/dist/modules/customers/message-objects.js.map +7 -0
  21. package/dist/modules/customers/widgets/messages/CustomerMessageObjectDetail.js +51 -0
  22. package/dist/modules/customers/widgets/messages/CustomerMessageObjectDetail.js.map +7 -0
  23. package/dist/modules/customers/widgets/messages/CustomerMessageObjectPreview.js +35 -0
  24. package/dist/modules/customers/widgets/messages/CustomerMessageObjectPreview.js.map +7 -0
  25. package/dist/modules/customers/widgets/messages/index.js +7 -0
  26. package/dist/modules/customers/widgets/messages/index.js.map +7 -0
  27. package/dist/modules/messages/acl.js +15 -0
  28. package/dist/modules/messages/acl.js.map +7 -0
  29. package/dist/modules/messages/api/[id]/actions/[actionId]/route.js +92 -0
  30. package/dist/modules/messages/api/[id]/actions/[actionId]/route.js.map +7 -0
  31. package/dist/modules/messages/api/[id]/archive/route.js +120 -0
  32. package/dist/modules/messages/api/[id]/archive/route.js.map +7 -0
  33. package/dist/modules/messages/api/[id]/attachments/route.js +195 -0
  34. package/dist/modules/messages/api/[id]/attachments/route.js.map +7 -0
  35. package/dist/modules/messages/api/[id]/confirmation/route.js +67 -0
  36. package/dist/modules/messages/api/[id]/confirmation/route.js.map +7 -0
  37. package/dist/modules/messages/api/[id]/conversation/archive/route.js +68 -0
  38. package/dist/modules/messages/api/[id]/conversation/archive/route.js.map +7 -0
  39. package/dist/modules/messages/api/[id]/conversation/read/route.js +68 -0
  40. package/dist/modules/messages/api/[id]/conversation/read/route.js.map +7 -0
  41. package/dist/modules/messages/api/[id]/conversation/route.js +68 -0
  42. package/dist/modules/messages/api/[id]/conversation/route.js.map +7 -0
  43. package/dist/modules/messages/api/[id]/forward/route.js +85 -0
  44. package/dist/modules/messages/api/[id]/forward/route.js.map +7 -0
  45. package/dist/modules/messages/api/[id]/forward-preview/route.js +70 -0
  46. package/dist/modules/messages/api/[id]/forward-preview/route.js.map +7 -0
  47. package/dist/modules/messages/api/[id]/read/route.js +120 -0
  48. package/dist/modules/messages/api/[id]/read/route.js.map +7 -0
  49. package/dist/modules/messages/api/[id]/reply/route.js +87 -0
  50. package/dist/modules/messages/api/[id]/reply/route.js.map +7 -0
  51. package/dist/modules/messages/api/[id]/route.js +350 -0
  52. package/dist/modules/messages/api/[id]/route.js.map +7 -0
  53. package/dist/modules/messages/api/object-types/route.js +54 -0
  54. package/dist/modules/messages/api/object-types/route.js.map +7 -0
  55. package/dist/modules/messages/api/openapi.js +261 -0
  56. package/dist/modules/messages/api/openapi.js.map +7 -0
  57. package/dist/modules/messages/api/route.js +262 -0
  58. package/dist/modules/messages/api/route.js.map +7 -0
  59. package/dist/modules/messages/api/token/[token]/route.js +99 -0
  60. package/dist/modules/messages/api/token/[token]/route.js.map +7 -0
  61. package/dist/modules/messages/api/types/route.js +40 -0
  62. package/dist/modules/messages/api/types/route.js.map +7 -0
  63. package/dist/modules/messages/api/unread-count/route.js +43 -0
  64. package/dist/modules/messages/api/unread-count/route.js.map +7 -0
  65. package/dist/modules/messages/backend/messages/[id]/page.js +10 -0
  66. package/dist/modules/messages/backend/messages/[id]/page.js.map +7 -0
  67. package/dist/modules/messages/backend/messages/[id]/page.meta.js +16 -0
  68. package/dist/modules/messages/backend/messages/[id]/page.meta.js.map +7 -0
  69. package/dist/modules/messages/backend/messages/compose/page.js +10 -0
  70. package/dist/modules/messages/backend/messages/compose/page.js.map +7 -0
  71. package/dist/modules/messages/backend/messages/compose/page.meta.js +17 -0
  72. package/dist/modules/messages/backend/messages/compose/page.meta.js.map +7 -0
  73. package/dist/modules/messages/backend/page.js +10 -0
  74. package/dist/modules/messages/backend/page.js.map +7 -0
  75. package/dist/modules/messages/backend/page.meta.js +33 -0
  76. package/dist/modules/messages/backend/page.meta.js.map +7 -0
  77. package/dist/modules/messages/commands/actions.js +265 -0
  78. package/dist/modules/messages/commands/actions.js.map +7 -0
  79. package/dist/modules/messages/commands/attachments.js +217 -0
  80. package/dist/modules/messages/commands/attachments.js.map +7 -0
  81. package/dist/modules/messages/commands/confirmations.js +151 -0
  82. package/dist/modules/messages/commands/confirmations.js.map +7 -0
  83. package/dist/modules/messages/commands/conversation.js +240 -0
  84. package/dist/modules/messages/commands/conversation.js.map +7 -0
  85. package/dist/modules/messages/commands/messages.js +748 -0
  86. package/dist/modules/messages/commands/messages.js.map +7 -0
  87. package/dist/modules/messages/commands/recipients.js +259 -0
  88. package/dist/modules/messages/commands/recipients.js.map +7 -0
  89. package/dist/modules/messages/commands/shared.js +258 -0
  90. package/dist/modules/messages/commands/shared.js.map +7 -0
  91. package/dist/modules/messages/commands/tokens.js +69 -0
  92. package/dist/modules/messages/commands/tokens.js.map +7 -0
  93. package/dist/modules/messages/components/ComposeMessagePageClient.js +24 -0
  94. package/dist/modules/messages/components/ComposeMessagePageClient.js.map +7 -0
  95. package/dist/modules/messages/components/MessageDetailPageClient.js +261 -0
  96. package/dist/modules/messages/components/MessageDetailPageClient.js.map +7 -0
  97. package/dist/modules/messages/components/MessagesInboxPageClient.js +390 -0
  98. package/dist/modules/messages/components/MessagesInboxPageClient.js.map +7 -0
  99. package/dist/modules/messages/components/confirmation/MessageConfirmationActions.js +31 -0
  100. package/dist/modules/messages/components/confirmation/MessageConfirmationActions.js.map +7 -0
  101. package/dist/modules/messages/components/confirmation/MessageConfirmationContent.js +69 -0
  102. package/dist/modules/messages/components/confirmation/MessageConfirmationContent.js.map +7 -0
  103. package/dist/modules/messages/components/defaults/DefaultMessageActions.js +31 -0
  104. package/dist/modules/messages/components/defaults/DefaultMessageActions.js.map +7 -0
  105. package/dist/modules/messages/components/defaults/DefaultMessageContent.js +19 -0
  106. package/dist/modules/messages/components/defaults/DefaultMessageContent.js.map +7 -0
  107. package/dist/modules/messages/components/defaults/DefaultMessageListItem.js +90 -0
  108. package/dist/modules/messages/components/defaults/DefaultMessageListItem.js.map +7 -0
  109. package/dist/modules/messages/components/defaults/MessageRecordObjectDetail.js +86 -0
  110. package/dist/modules/messages/components/defaults/MessageRecordObjectDetail.js.map +7 -0
  111. package/dist/modules/messages/components/defaults/MessageRecordObjectPreview.js +61 -0
  112. package/dist/modules/messages/components/defaults/MessageRecordObjectPreview.js.map +7 -0
  113. package/dist/modules/messages/components/message-detail/detail-panels.js +27 -0
  114. package/dist/modules/messages/components/message-detail/detail-panels.js.map +7 -0
  115. package/dist/modules/messages/components/message-detail/hooks/useMessageDetails.js +52 -0
  116. package/dist/modules/messages/components/message-detail/hooks/useMessageDetails.js.map +7 -0
  117. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsActions.js +289 -0
  118. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsActions.js.map +7 -0
  119. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js +103 -0
  120. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js.map +7 -0
  121. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.js +78 -0
  122. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.js.map +7 -0
  123. package/dist/modules/messages/components/message-detail/panels/MainMessageHeader.js +94 -0
  124. package/dist/modules/messages/components/message-detail/panels/MainMessageHeader.js.map +7 -0
  125. package/dist/modules/messages/components/message-detail/panels/MessageHeader.js +110 -0
  126. package/dist/modules/messages/components/message-detail/panels/MessageHeader.js.map +7 -0
  127. package/dist/modules/messages/components/message-detail/panels/MessageListComponent.js +58 -0
  128. package/dist/modules/messages/components/message-detail/panels/MessageListComponent.js.map +7 -0
  129. package/dist/modules/messages/components/message-detail/panels/actions-panel.js +51 -0
  130. package/dist/modules/messages/components/message-detail/panels/actions-panel.js.map +7 -0
  131. package/dist/modules/messages/components/message-detail/panels/attachments-panel.js +66 -0
  132. package/dist/modules/messages/components/message-detail/panels/attachments-panel.js.map +7 -0
  133. package/dist/modules/messages/components/message-detail/panels/body-panel.js +20 -0
  134. package/dist/modules/messages/components/message-detail/panels/body-panel.js.map +7 -0
  135. package/dist/modules/messages/components/message-detail/panels/composer-dialogs.js +36 -0
  136. package/dist/modules/messages/components/message-detail/panels/composer-dialogs.js.map +7 -0
  137. package/dist/modules/messages/components/message-detail/panels/dialogs.js +96 -0
  138. package/dist/modules/messages/components/message-detail/panels/dialogs.js.map +7 -0
  139. package/dist/modules/messages/components/message-detail/panels/index.js +25 -0
  140. package/dist/modules/messages/components/message-detail/panels/index.js.map +7 -0
  141. package/dist/modules/messages/components/message-detail/panels/meta-panel.js +14 -0
  142. package/dist/modules/messages/components/message-detail/panels/meta-panel.js.map +7 -0
  143. package/dist/modules/messages/components/message-detail/panels/objects-panel.js +51 -0
  144. package/dist/modules/messages/components/message-detail/panels/objects-panel.js.map +7 -0
  145. package/dist/modules/messages/components/message-detail/panels/thread-panel.js +54 -0
  146. package/dist/modules/messages/components/message-detail/panels/thread-panel.js.map +7 -0
  147. package/dist/modules/messages/components/message-detail/types.js +1 -0
  148. package/dist/modules/messages/components/message-detail/types.js.map +7 -0
  149. package/dist/modules/messages/components/message-detail/utils.js +54 -0
  150. package/dist/modules/messages/components/message-detail/utils.js.map +7 -0
  151. package/dist/modules/messages/components/utils/PriorityBadge.js +52 -0
  152. package/dist/modules/messages/components/utils/PriorityBadge.js.map +7 -0
  153. package/dist/modules/messages/components/utils/typeUiRegistry.js +77 -0
  154. package/dist/modules/messages/components/utils/typeUiRegistry.js.map +7 -0
  155. package/dist/modules/messages/data/entities.js +309 -0
  156. package/dist/modules/messages/data/entities.js.map +7 -0
  157. package/dist/modules/messages/data/validators.js +272 -0
  158. package/dist/modules/messages/data/validators.js.map +7 -0
  159. package/dist/modules/messages/emails/MessageEmail.js +108 -0
  160. package/dist/modules/messages/emails/MessageEmail.js.map +7 -0
  161. package/dist/modules/messages/events.js +24 -0
  162. package/dist/modules/messages/events.js.map +7 -0
  163. package/dist/modules/messages/frontend/messages/view/[token]/page.js +247 -0
  164. package/dist/modules/messages/frontend/messages/view/[token]/page.js.map +7 -0
  165. package/dist/modules/messages/frontend/messages/view/[token]/page.meta.js +9 -0
  166. package/dist/modules/messages/frontend/messages/view/[token]/page.meta.js.map +7 -0
  167. package/dist/modules/messages/index.js +21 -0
  168. package/dist/modules/messages/index.js.map +7 -0
  169. package/dist/modules/messages/lib/actions.js +141 -0
  170. package/dist/modules/messages/lib/actions.js.map +7 -0
  171. package/dist/modules/messages/lib/attachments.js +131 -0
  172. package/dist/modules/messages/lib/attachments.js.map +7 -0
  173. package/dist/modules/messages/lib/constants.js +7 -0
  174. package/dist/modules/messages/lib/constants.js.map +7 -0
  175. package/dist/modules/messages/lib/email-sender.js +201 -0
  176. package/dist/modules/messages/lib/email-sender.js.map +7 -0
  177. package/dist/modules/messages/lib/forwarding.js +179 -0
  178. package/dist/modules/messages/lib/forwarding.js.map +7 -0
  179. package/dist/modules/messages/lib/message-objects-registry.js +49 -0
  180. package/dist/modules/messages/lib/message-objects-registry.js.map +7 -0
  181. package/dist/modules/messages/lib/message-types-registry.js +41 -0
  182. package/dist/modules/messages/lib/message-types-registry.js.map +7 -0
  183. package/dist/modules/messages/lib/object-validation.js +20 -0
  184. package/dist/modules/messages/lib/object-validation.js.map +7 -0
  185. package/dist/modules/messages/lib/operationMetadata.js +21 -0
  186. package/dist/modules/messages/lib/operationMetadata.js.map +7 -0
  187. package/dist/modules/messages/lib/priorityUtils.js +61 -0
  188. package/dist/modules/messages/lib/priorityUtils.js.map +7 -0
  189. package/dist/modules/messages/lib/routeHelpers.js +44 -0
  190. package/dist/modules/messages/lib/routeHelpers.js.map +7 -0
  191. package/dist/modules/messages/message-objects.js +7 -0
  192. package/dist/modules/messages/message-objects.js.map +7 -0
  193. package/dist/modules/messages/message-types.js +67 -0
  194. package/dist/modules/messages/message-types.js.map +7 -0
  195. package/dist/modules/messages/migrations/Migration20260213181243.js +31 -0
  196. package/dist/modules/messages/migrations/Migration20260213181243.js.map +7 -0
  197. package/dist/modules/messages/migrations/Migration20260215165126.js +16 -0
  198. package/dist/modules/messages/migrations/Migration20260215165126.js.map +7 -0
  199. package/dist/modules/messages/notifications.js +27 -0
  200. package/dist/modules/messages/notifications.js.map +7 -0
  201. package/dist/modules/messages/setup.js +21 -0
  202. package/dist/modules/messages/setup.js.map +7 -0
  203. package/dist/modules/messages/subscribers/message-notification.js +108 -0
  204. package/dist/modules/messages/subscribers/message-notification.js.map +7 -0
  205. package/dist/modules/messages/workers/send-email.worker.js +253 -0
  206. package/dist/modules/messages/workers/send-email.worker.js.map +7 -0
  207. package/dist/modules/sales/backend/sales/documents/[id]/page.js +30 -11
  208. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  209. package/dist/modules/sales/commands/payments.js +12 -6
  210. package/dist/modules/sales/commands/payments.js.map +2 -2
  211. package/dist/modules/sales/lib/messageObjectPreviews.js +114 -0
  212. package/dist/modules/sales/lib/messageObjectPreviews.js.map +7 -0
  213. package/dist/modules/sales/message-objects.js +57 -0
  214. package/dist/modules/sales/message-objects.js.map +7 -0
  215. package/dist/modules/sales/widgets/messages/SalesDocumentMessageDetail.js +51 -0
  216. package/dist/modules/sales/widgets/messages/SalesDocumentMessageDetail.js.map +7 -0
  217. package/dist/modules/sales/widgets/messages/SalesDocumentMessagePreview.js +36 -0
  218. package/dist/modules/sales/widgets/messages/SalesDocumentMessagePreview.js.map +7 -0
  219. package/dist/modules/sales/widgets/messages/index.js +7 -0
  220. package/dist/modules/sales/widgets/messages/index.js.map +7 -0
  221. package/dist/modules/staff/backend/staff/leave-requests/[id]/page.js +55 -1
  222. package/dist/modules/staff/backend/staff/leave-requests/[id]/page.js.map +2 -2
  223. package/dist/modules/staff/backend/staff/my-leave-requests/[id]/page.js +60 -1
  224. package/dist/modules/staff/backend/staff/my-leave-requests/[id]/page.js.map +2 -2
  225. package/dist/modules/staff/backend/staff/team-members/[id]/page.js +2 -19
  226. package/dist/modules/staff/backend/staff/team-members/[id]/page.js.map +2 -2
  227. package/dist/modules/staff/components/LeaveRequestDetail.js +112 -0
  228. package/dist/modules/staff/components/LeaveRequestDetail.js.map +7 -0
  229. package/dist/modules/staff/components/LeaveRequestForm.js +3 -1
  230. package/dist/modules/staff/components/LeaveRequestForm.js.map +2 -2
  231. package/dist/modules/staff/components/LeaveRequestPreview.js +43 -0
  232. package/dist/modules/staff/components/LeaveRequestPreview.js.map +7 -0
  233. package/dist/modules/staff/lib/messageObjectPreviews.js +148 -0
  234. package/dist/modules/staff/lib/messageObjectPreviews.js.map +7 -0
  235. package/dist/modules/staff/message-objects.js +104 -0
  236. package/dist/modules/staff/message-objects.js.map +7 -0
  237. package/dist/modules/staff/message-types.js +23 -0
  238. package/dist/modules/staff/message-types.js.map +7 -0
  239. package/dist/modules/staff/widgets/messages/StaffMessageObjectDetail.js +51 -0
  240. package/dist/modules/staff/widgets/messages/StaffMessageObjectDetail.js.map +7 -0
  241. package/dist/modules/staff/widgets/messages/StaffMessageObjectPreview.js +34 -0
  242. package/dist/modules/staff/widgets/messages/StaffMessageObjectPreview.js.map +7 -0
  243. package/dist/modules/staff/widgets/messages/index.js +7 -0
  244. package/dist/modules/staff/widgets/messages/index.js.map +7 -0
  245. package/generated/entities/message/index.ts +31 -0
  246. package/generated/entities/message_access_token/index.ts +8 -0
  247. package/generated/entities/message_confirmation/index.ts +9 -0
  248. package/generated/entities/message_object/index.ts +10 -0
  249. package/generated/entities/message_recipient/index.ts +14 -0
  250. package/generated/entities.ids.generated.ts +8 -0
  251. package/generated/entity-fields-registry.ts +10 -0
  252. package/jest.setup.ts +5 -0
  253. package/package.json +2 -2
  254. package/src/modules/customers/backend/customers/deals/[id]/page.tsx +20 -4
  255. package/src/modules/customers/i18n/de.json +4 -0
  256. package/src/modules/customers/i18n/en.json +4 -0
  257. package/src/modules/customers/i18n/es.json +4 -0
  258. package/src/modules/customers/i18n/pl.json +4 -0
  259. package/src/modules/customers/lib/messageObjectPreviews.ts +154 -0
  260. package/src/modules/customers/message-objects.ts +70 -0
  261. package/src/modules/customers/widgets/messages/CustomerMessageObjectDetail.tsx +57 -0
  262. package/src/modules/customers/widgets/messages/CustomerMessageObjectPreview.tsx +49 -0
  263. package/src/modules/customers/widgets/messages/index.ts +2 -0
  264. package/src/modules/messages/acl.ts +11 -0
  265. package/src/modules/messages/api/[id]/actions/[actionId]/route.ts +103 -0
  266. package/src/modules/messages/api/[id]/archive/route.ts +138 -0
  267. package/src/modules/messages/api/[id]/attachments/route.ts +217 -0
  268. package/src/modules/messages/api/[id]/confirmation/route.ts +73 -0
  269. package/src/modules/messages/api/[id]/conversation/archive/route.ts +69 -0
  270. package/src/modules/messages/api/[id]/conversation/read/route.ts +69 -0
  271. package/src/modules/messages/api/[id]/conversation/route.ts +69 -0
  272. package/src/modules/messages/api/[id]/forward/route.ts +87 -0
  273. package/src/modules/messages/api/[id]/forward-preview/route.ts +75 -0
  274. package/src/modules/messages/api/[id]/read/route.ts +138 -0
  275. package/src/modules/messages/api/[id]/reply/route.ts +89 -0
  276. package/src/modules/messages/api/[id]/route.ts +401 -0
  277. package/src/modules/messages/api/object-types/route.ts +54 -0
  278. package/src/modules/messages/api/openapi.ts +261 -0
  279. package/src/modules/messages/api/route.ts +374 -0
  280. package/src/modules/messages/api/token/[token]/route.ts +103 -0
  281. package/src/modules/messages/api/types/route.ts +39 -0
  282. package/src/modules/messages/api/unread-count/route.ts +55 -0
  283. package/src/modules/messages/backend/messages/[id]/page.meta.ts +12 -0
  284. package/src/modules/messages/backend/messages/[id]/page.tsx +12 -0
  285. package/src/modules/messages/backend/messages/compose/page.meta.ts +13 -0
  286. package/src/modules/messages/backend/messages/compose/page.tsx +12 -0
  287. package/src/modules/messages/backend/page.meta.ts +31 -0
  288. package/src/modules/messages/backend/page.tsx +12 -0
  289. package/src/modules/messages/commands/actions.ts +307 -0
  290. package/src/modules/messages/commands/attachments.ts +227 -0
  291. package/src/modules/messages/commands/confirmations.ts +183 -0
  292. package/src/modules/messages/commands/conversation.ts +292 -0
  293. package/src/modules/messages/commands/messages.ts +845 -0
  294. package/src/modules/messages/commands/recipients.ts +281 -0
  295. package/src/modules/messages/commands/shared.ts +350 -0
  296. package/src/modules/messages/commands/tokens.ts +80 -0
  297. package/src/modules/messages/components/ComposeMessagePageClient.tsx +23 -0
  298. package/src/modules/messages/components/MessageDetailPageClient.tsx +287 -0
  299. package/src/modules/messages/components/MessagesInboxPageClient.tsx +469 -0
  300. package/src/modules/messages/components/confirmation/MessageConfirmationActions.tsx +35 -0
  301. package/src/modules/messages/components/confirmation/MessageConfirmationContent.tsx +88 -0
  302. package/src/modules/messages/components/defaults/DefaultMessageActions.tsx +37 -0
  303. package/src/modules/messages/components/defaults/DefaultMessageContent.tsx +21 -0
  304. package/src/modules/messages/components/defaults/DefaultMessageListItem.tsx +102 -0
  305. package/src/modules/messages/components/defaults/MessageRecordObjectDetail.tsx +114 -0
  306. package/src/modules/messages/components/defaults/MessageRecordObjectPreview.tsx +74 -0
  307. package/src/modules/messages/components/message-detail/detail-panels.ts +13 -0
  308. package/src/modules/messages/components/message-detail/hooks/useMessageDetails.ts +56 -0
  309. package/src/modules/messages/components/message-detail/hooks/useMessageDetailsActions.ts +367 -0
  310. package/src/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.ts +134 -0
  311. package/src/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.ts +102 -0
  312. package/src/modules/messages/components/message-detail/panels/MainMessageHeader.tsx +108 -0
  313. package/src/modules/messages/components/message-detail/panels/MessageHeader.tsx +144 -0
  314. package/src/modules/messages/components/message-detail/panels/MessageListComponent.tsx +63 -0
  315. package/src/modules/messages/components/message-detail/panels/actions-panel.tsx +66 -0
  316. package/src/modules/messages/components/message-detail/panels/attachments-panel.tsx +86 -0
  317. package/src/modules/messages/components/message-detail/panels/body-panel.tsx +32 -0
  318. package/src/modules/messages/components/message-detail/panels/composer-dialogs.tsx +42 -0
  319. package/src/modules/messages/components/message-detail/panels/dialogs.tsx +107 -0
  320. package/src/modules/messages/components/message-detail/panels/index.ts +11 -0
  321. package/src/modules/messages/components/message-detail/panels/meta-panel.tsx +19 -0
  322. package/src/modules/messages/components/message-detail/panels/objects-panel.tsx +65 -0
  323. package/src/modules/messages/components/message-detail/panels/thread-panel.tsx +65 -0
  324. package/src/modules/messages/components/message-detail/types.ts +114 -0
  325. package/src/modules/messages/components/message-detail/utils.ts +62 -0
  326. package/src/modules/messages/components/utils/PriorityBadge.tsx +63 -0
  327. package/src/modules/messages/components/utils/typeUiRegistry.ts +106 -0
  328. package/src/modules/messages/data/entities.ts +284 -0
  329. package/src/modules/messages/data/validators.ts +297 -0
  330. package/src/modules/messages/emails/MessageEmail.tsx +143 -0
  331. package/src/modules/messages/events.ts +24 -0
  332. package/src/modules/messages/frontend/messages/view/[token]/page.meta.ts +5 -0
  333. package/src/modules/messages/frontend/messages/view/[token]/page.tsx +389 -0
  334. package/src/modules/messages/i18n/de.json +240 -0
  335. package/src/modules/messages/i18n/en.json +240 -0
  336. package/src/modules/messages/i18n/es.json +240 -0
  337. package/src/modules/messages/i18n/pl.json +240 -0
  338. package/src/modules/messages/index.ts +19 -0
  339. package/src/modules/messages/lib/actions.ts +204 -0
  340. package/src/modules/messages/lib/attachments.ts +197 -0
  341. package/src/modules/messages/lib/constants.ts +2 -0
  342. package/src/modules/messages/lib/email-sender.ts +255 -0
  343. package/src/modules/messages/lib/forwarding.ts +240 -0
  344. package/src/modules/messages/lib/message-objects-registry.ts +60 -0
  345. package/src/modules/messages/lib/message-types-registry.ts +48 -0
  346. package/src/modules/messages/lib/object-validation.ts +26 -0
  347. package/src/modules/messages/lib/operationMetadata.ts +43 -0
  348. package/src/modules/messages/lib/priorityUtils.ts +76 -0
  349. package/src/modules/messages/lib/routeHelpers.ts +65 -0
  350. package/src/modules/messages/message-objects.ts +5 -0
  351. package/src/modules/messages/message-types.ts +65 -0
  352. package/src/modules/messages/migrations/.snapshot-open-mercato.json +957 -0
  353. package/src/modules/messages/migrations/Migration20260213181243.ts +34 -0
  354. package/src/modules/messages/migrations/Migration20260215165126.ts +16 -0
  355. package/src/modules/messages/notifications.ts +25 -0
  356. package/src/modules/messages/setup.ts +19 -0
  357. package/src/modules/messages/subscribers/message-notification.ts +138 -0
  358. package/src/modules/messages/workers/send-email.worker.ts +321 -0
  359. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +23 -7
  360. package/src/modules/sales/commands/payments.ts +12 -6
  361. package/src/modules/sales/i18n/de.json +3 -0
  362. package/src/modules/sales/i18n/en.json +3 -0
  363. package/src/modules/sales/i18n/es.json +3 -0
  364. package/src/modules/sales/i18n/pl.json +3 -0
  365. package/src/modules/sales/lib/messageObjectPreviews.ts +150 -0
  366. package/src/modules/sales/message-objects.ts +56 -0
  367. package/src/modules/sales/widgets/messages/SalesDocumentMessageDetail.tsx +57 -0
  368. package/src/modules/sales/widgets/messages/SalesDocumentMessagePreview.tsx +46 -0
  369. package/src/modules/sales/widgets/messages/index.ts +2 -0
  370. package/src/modules/staff/backend/staff/leave-requests/[id]/page.tsx +54 -0
  371. package/src/modules/staff/backend/staff/my-leave-requests/[id]/page.tsx +58 -0
  372. package/src/modules/staff/backend/staff/team-members/[id]/page.tsx +2 -32
  373. package/src/modules/staff/components/LeaveRequestDetail.tsx +135 -0
  374. package/src/modules/staff/components/LeaveRequestForm.tsx +3 -0
  375. package/src/modules/staff/components/LeaveRequestPreview.tsx +74 -0
  376. package/src/modules/staff/i18n/de.json +8 -0
  377. package/src/modules/staff/i18n/en.json +8 -0
  378. package/src/modules/staff/i18n/es.json +8 -0
  379. package/src/modules/staff/i18n/pl.json +8 -0
  380. package/src/modules/staff/lib/messageObjectPreviews.ts +182 -0
  381. package/src/modules/staff/message-objects.ts +102 -0
  382. package/src/modules/staff/message-types.ts +21 -0
  383. package/src/modules/staff/widgets/messages/StaffMessageObjectDetail.tsx +57 -0
  384. package/src/modules/staff/widgets/messages/StaffMessageObjectPreview.tsx +44 -0
  385. package/src/modules/staff/widgets/messages/index.ts +2 -0
@@ -0,0 +1,240 @@
1
+ import { z } from "zod";
2
+ import { registerCommand } from "@open-mercato/shared/lib/commands";
3
+ import { Message, MessageRecipient } from "../data/entities.js";
4
+ import { emitMessagesEvent } from "../events.js";
5
+ import { assertOrganizationAccess } from "./shared.js";
6
+ const conversationCommandSchema = z.object({
7
+ anchorMessageId: z.string().uuid(),
8
+ tenantId: z.string().uuid(),
9
+ organizationId: z.string().uuid().nullable(),
10
+ userId: z.string().uuid()
11
+ });
12
+ async function resolveConversationScope(em, input) {
13
+ const anchorMessage = await em.findOne(Message, {
14
+ id: input.anchorMessageId,
15
+ tenantId: input.tenantId,
16
+ deletedAt: null
17
+ });
18
+ if (!anchorMessage) throw new Error("Message not found");
19
+ assertOrganizationAccess(input, anchorMessage);
20
+ const anchorRecipient = await em.findOne(MessageRecipient, {
21
+ messageId: input.anchorMessageId,
22
+ recipientUserId: input.userId,
23
+ deletedAt: null
24
+ });
25
+ const canAccessAnchor = anchorMessage.senderUserId === input.userId || Boolean(anchorRecipient);
26
+ if (!canAccessAnchor) throw new Error("Access denied");
27
+ const threadId = anchorMessage.threadId ?? anchorMessage.id;
28
+ const conversationMessages = await em.find(
29
+ Message,
30
+ {
31
+ threadId,
32
+ tenantId: input.tenantId,
33
+ organizationId: input.organizationId,
34
+ deletedAt: null,
35
+ isDraft: false
36
+ },
37
+ {
38
+ orderBy: {
39
+ sentAt: "ASC",
40
+ createdAt: "ASC",
41
+ id: "ASC"
42
+ }
43
+ }
44
+ );
45
+ const messagesById = new Map(conversationMessages.map((message) => [message.id, message]));
46
+ messagesById.set(anchorMessage.id, anchorMessage);
47
+ if (anchorMessage.threadId && !messagesById.has(anchorMessage.threadId)) {
48
+ const threadRoot = await em.findOne(Message, {
49
+ id: anchorMessage.threadId,
50
+ tenantId: input.tenantId,
51
+ organizationId: input.organizationId,
52
+ deletedAt: null,
53
+ isDraft: false
54
+ });
55
+ if (threadRoot) {
56
+ messagesById.set(threadRoot.id, threadRoot);
57
+ }
58
+ }
59
+ let parentMessageId = anchorMessage.parentMessageId ?? null;
60
+ while (parentMessageId) {
61
+ if (messagesById.has(parentMessageId)) break;
62
+ const parentMessage = await em.findOne(Message, {
63
+ id: parentMessageId,
64
+ tenantId: input.tenantId,
65
+ organizationId: input.organizationId,
66
+ deletedAt: null,
67
+ isDraft: false
68
+ });
69
+ if (!parentMessage) break;
70
+ messagesById.set(parentMessage.id, parentMessage);
71
+ parentMessageId = parentMessage.parentMessageId ?? null;
72
+ }
73
+ let frontier = Array.from(messagesById.keys());
74
+ while (frontier.length > 0) {
75
+ const children = await em.find(Message, {
76
+ parentMessageId: { $in: frontier },
77
+ tenantId: input.tenantId,
78
+ organizationId: input.organizationId,
79
+ deletedAt: null,
80
+ isDraft: false
81
+ });
82
+ const nextFrontier = [];
83
+ for (const child of children) {
84
+ if (messagesById.has(child.id)) continue;
85
+ messagesById.set(child.id, child);
86
+ nextFrontier.push(child.id);
87
+ }
88
+ frontier = nextFrontier;
89
+ }
90
+ const scopedMessages = Array.from(messagesById.values());
91
+ const messageIds = scopedMessages.map((message) => message.id);
92
+ const recipientRows = messageIds.length > 0 ? await em.find(MessageRecipient, {
93
+ messageId: { $in: messageIds },
94
+ recipientUserId: input.userId,
95
+ deletedAt: null
96
+ }) : [];
97
+ const recipientMessageIds = new Set(recipientRows.map((item) => item.messageId));
98
+ const senderMessageIds = new Set(
99
+ scopedMessages.filter((item) => item.senderUserId === input.userId).map((item) => item.id)
100
+ );
101
+ const visibleMessageIds = scopedMessages.map((item) => item.id).filter((messageId) => recipientMessageIds.has(messageId) || senderMessageIds.has(messageId));
102
+ if (visibleMessageIds.length === 0) throw new Error("Access denied");
103
+ return {
104
+ anchorMessageId: anchorMessage.id,
105
+ messageIds: visibleMessageIds,
106
+ recipientMessageIds,
107
+ senderMessageIds
108
+ };
109
+ }
110
+ const archiveConversationForActorCommand = {
111
+ id: "messages.conversation.archive_for_actor",
112
+ async execute(rawInput, ctx) {
113
+ const input = conversationCommandSchema.parse(rawInput);
114
+ const em = ctx.container.resolve("em").fork();
115
+ const scope = await resolveConversationScope(em, input);
116
+ const messageIdsToArchive = scope.messageIds.filter((messageId) => scope.recipientMessageIds.has(messageId));
117
+ if (messageIdsToArchive.length === 0) {
118
+ return { ok: true, affectedCount: 0 };
119
+ }
120
+ const archivedAt = /* @__PURE__ */ new Date();
121
+ const archivedIds = [];
122
+ await em.transactional(async (trx) => {
123
+ const recipients = await trx.find(MessageRecipient, {
124
+ messageId: { $in: messageIdsToArchive },
125
+ recipientUserId: input.userId,
126
+ deletedAt: null
127
+ });
128
+ for (const recipient of recipients) {
129
+ if (recipient.status !== "archived" || recipient.archivedAt === null) {
130
+ recipient.archivedAt = archivedAt;
131
+ recipient.status = "archived";
132
+ archivedIds.push(recipient.messageId);
133
+ }
134
+ }
135
+ });
136
+ for (const messageId of archivedIds) {
137
+ await emitMessagesEvent("messages.message.archived", {
138
+ messageId,
139
+ recipientUserId: input.userId,
140
+ userId: input.userId,
141
+ tenantId: input.tenantId,
142
+ organizationId: input.organizationId
143
+ }, { persistent: true });
144
+ }
145
+ return { ok: true, affectedCount: archivedIds.length };
146
+ }
147
+ };
148
+ const markConversationUnreadForActorCommand = {
149
+ id: "messages.conversation.mark_unread_for_actor",
150
+ async execute(rawInput, ctx) {
151
+ const input = conversationCommandSchema.parse(rawInput);
152
+ const em = ctx.container.resolve("em").fork();
153
+ const scope = await resolveConversationScope(em, input);
154
+ const messageIdsToMarkUnread = scope.messageIds.filter((messageId) => scope.recipientMessageIds.has(messageId));
155
+ if (messageIdsToMarkUnread.length === 0) {
156
+ return { ok: true, affectedCount: 0 };
157
+ }
158
+ const markedIds = [];
159
+ await em.transactional(async (trx) => {
160
+ const recipients = await trx.find(MessageRecipient, {
161
+ messageId: { $in: messageIdsToMarkUnread },
162
+ recipientUserId: input.userId,
163
+ deletedAt: null
164
+ });
165
+ for (const recipient of recipients) {
166
+ if (recipient.status !== "unread" || recipient.readAt !== null) {
167
+ recipient.status = "unread";
168
+ recipient.readAt = null;
169
+ markedIds.push(recipient.messageId);
170
+ }
171
+ }
172
+ });
173
+ for (const messageId of markedIds) {
174
+ await emitMessagesEvent("messages.message.marked_unread", {
175
+ messageId,
176
+ recipientUserId: input.userId,
177
+ userId: input.userId,
178
+ tenantId: input.tenantId,
179
+ organizationId: input.organizationId
180
+ }, { persistent: true });
181
+ }
182
+ return { ok: true, affectedCount: markedIds.length };
183
+ }
184
+ };
185
+ const deleteConversationForActorCommand = {
186
+ id: "messages.conversation.delete_for_actor",
187
+ async execute(rawInput, ctx) {
188
+ const input = conversationCommandSchema.parse(rawInput);
189
+ const em = ctx.container.resolve("em").fork();
190
+ const scope = await resolveConversationScope(em, input);
191
+ const messageIdsToDelete = scope.messageIds.filter(
192
+ (messageId) => scope.recipientMessageIds.has(messageId) || scope.senderMessageIds.has(messageId)
193
+ );
194
+ if (messageIdsToDelete.length === 0) {
195
+ return { ok: true, affectedCount: 0 };
196
+ }
197
+ const deletedNow = /* @__PURE__ */ new Date();
198
+ const deletedTargets = [];
199
+ await em.transactional(async (trx) => {
200
+ for (const messageId of messageIdsToDelete) {
201
+ const recipient = await trx.findOne(MessageRecipient, {
202
+ messageId,
203
+ recipientUserId: input.userId,
204
+ deletedAt: null
205
+ });
206
+ if (recipient) {
207
+ recipient.status = "deleted";
208
+ recipient.deletedAt = deletedNow;
209
+ deletedTargets.push({ messageId, target: "recipient" });
210
+ continue;
211
+ }
212
+ if (scope.senderMessageIds.has(messageId)) {
213
+ const message = await trx.findOne(Message, {
214
+ id: messageId,
215
+ tenantId: input.tenantId,
216
+ deletedAt: null
217
+ });
218
+ if (message && message.senderUserId === input.userId) {
219
+ message.deletedAt = deletedNow;
220
+ deletedTargets.push({ messageId, target: "sender" });
221
+ }
222
+ }
223
+ }
224
+ });
225
+ for (const { messageId, target } of deletedTargets) {
226
+ await emitMessagesEvent("messages.message.deleted", {
227
+ messageId,
228
+ actorUserId: input.userId,
229
+ target,
230
+ tenantId: input.tenantId,
231
+ organizationId: input.organizationId
232
+ }, { persistent: true });
233
+ }
234
+ return { ok: true, affectedCount: deletedTargets.length };
235
+ }
236
+ };
237
+ registerCommand(archiveConversationForActorCommand);
238
+ registerCommand(markConversationUnreadForActorCommand);
239
+ registerCommand(deleteConversationForActorCommand);
240
+ //# sourceMappingURL=conversation.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/messages/commands/conversation.ts"],
4
+ "sourcesContent": ["import type { EntityManager } from '@mikro-orm/postgresql'\nimport { z } from 'zod'\nimport { registerCommand, type CommandHandler } from '@open-mercato/shared/lib/commands'\nimport { Message, MessageRecipient } from '../data/entities'\nimport { emitMessagesEvent } from '../events'\nimport { assertOrganizationAccess, type MessageScopeInput } from './shared'\n\nconst conversationCommandSchema = z.object({\n anchorMessageId: z.string().uuid(),\n tenantId: z.string().uuid(),\n organizationId: z.string().uuid().nullable(),\n userId: z.string().uuid(),\n})\n\ntype ConversationCommandInput = z.infer<typeof conversationCommandSchema>\n\ntype ConversationScope = {\n anchorMessageId: string\n messageIds: string[]\n recipientMessageIds: Set<string>\n senderMessageIds: Set<string>\n}\n\nasync function resolveConversationScope(\n em: EntityManager,\n input: ConversationCommandInput,\n): Promise<ConversationScope> {\n const anchorMessage = await em.findOne(Message, {\n id: input.anchorMessageId,\n tenantId: input.tenantId,\n deletedAt: null,\n })\n\n if (!anchorMessage) throw new Error('Message not found')\n assertOrganizationAccess(input as MessageScopeInput, anchorMessage)\n\n const anchorRecipient = await em.findOne(MessageRecipient, {\n messageId: input.anchorMessageId,\n recipientUserId: input.userId,\n deletedAt: null,\n })\n\n const canAccessAnchor = anchorMessage.senderUserId === input.userId || Boolean(anchorRecipient)\n if (!canAccessAnchor) throw new Error('Access denied')\n\n const threadId = anchorMessage.threadId ?? anchorMessage.id\n const conversationMessages = await em.find(\n Message,\n {\n threadId,\n tenantId: input.tenantId,\n organizationId: input.organizationId,\n deletedAt: null,\n isDraft: false,\n },\n {\n orderBy: {\n sentAt: 'ASC',\n createdAt: 'ASC',\n id: 'ASC',\n },\n },\n )\n\n const messagesById = new Map<string, Message>(conversationMessages.map((message) => [message.id, message]))\n messagesById.set(anchorMessage.id, anchorMessage)\n\n if (anchorMessage.threadId && !messagesById.has(anchorMessage.threadId)) {\n const threadRoot = await em.findOne(Message, {\n id: anchorMessage.threadId,\n tenantId: input.tenantId,\n organizationId: input.organizationId,\n deletedAt: null,\n isDraft: false,\n })\n if (threadRoot) {\n messagesById.set(threadRoot.id, threadRoot)\n }\n }\n\n let parentMessageId = anchorMessage.parentMessageId ?? null\n while (parentMessageId) {\n if (messagesById.has(parentMessageId)) break\n const parentMessage = await em.findOne(Message, {\n id: parentMessageId,\n tenantId: input.tenantId,\n organizationId: input.organizationId,\n deletedAt: null,\n isDraft: false,\n })\n if (!parentMessage) break\n messagesById.set(parentMessage.id, parentMessage)\n parentMessageId = parentMessage.parentMessageId ?? null\n }\n\n let frontier = Array.from(messagesById.keys())\n while (frontier.length > 0) {\n const children = await em.find(Message, {\n parentMessageId: { $in: frontier },\n tenantId: input.tenantId,\n organizationId: input.organizationId,\n deletedAt: null,\n isDraft: false,\n })\n\n const nextFrontier: string[] = []\n for (const child of children) {\n if (messagesById.has(child.id)) continue\n messagesById.set(child.id, child)\n nextFrontier.push(child.id)\n }\n frontier = nextFrontier\n }\n\n const scopedMessages = Array.from(messagesById.values())\n const messageIds = scopedMessages.map((message) => message.id)\n const recipientRows = messageIds.length > 0\n ? await em.find(MessageRecipient, {\n messageId: { $in: messageIds },\n recipientUserId: input.userId,\n deletedAt: null,\n })\n : []\n\n const recipientMessageIds = new Set(recipientRows.map((item) => item.messageId))\n const senderMessageIds = new Set(\n scopedMessages\n .filter((item) => item.senderUserId === input.userId)\n .map((item) => item.id),\n )\n\n const visibleMessageIds = scopedMessages\n .map((item) => item.id)\n .filter((messageId) => recipientMessageIds.has(messageId) || senderMessageIds.has(messageId))\n\n if (visibleMessageIds.length === 0) throw new Error('Access denied')\n\n return {\n anchorMessageId: anchorMessage.id,\n messageIds: visibleMessageIds,\n recipientMessageIds,\n senderMessageIds,\n }\n}\n\nconst archiveConversationForActorCommand: CommandHandler<unknown, { ok: true; affectedCount: number }> = {\n id: 'messages.conversation.archive_for_actor',\n async execute(rawInput, ctx) {\n const input = conversationCommandSchema.parse(rawInput)\n const em = (ctx.container.resolve('em') as EntityManager).fork()\n const scope = await resolveConversationScope(em, input)\n const messageIdsToArchive = scope.messageIds.filter((messageId) => scope.recipientMessageIds.has(messageId))\n\n if (messageIdsToArchive.length === 0) {\n return { ok: true, affectedCount: 0 }\n }\n\n const archivedAt = new Date()\n const archivedIds: string[] = []\n await em.transactional(async (trx) => {\n const recipients = await trx.find(MessageRecipient, {\n messageId: { $in: messageIdsToArchive },\n recipientUserId: input.userId,\n deletedAt: null,\n })\n for (const recipient of recipients) {\n if (recipient.status !== 'archived' || recipient.archivedAt === null) {\n recipient.archivedAt = archivedAt\n recipient.status = 'archived'\n archivedIds.push(recipient.messageId)\n }\n }\n })\n\n for (const messageId of archivedIds) {\n await emitMessagesEvent('messages.message.archived', {\n messageId,\n recipientUserId: input.userId,\n userId: input.userId,\n tenantId: input.tenantId,\n organizationId: input.organizationId,\n }, { persistent: true })\n }\n\n return { ok: true, affectedCount: archivedIds.length }\n },\n}\n\nconst markConversationUnreadForActorCommand: CommandHandler<unknown, { ok: true; affectedCount: number }> = {\n id: 'messages.conversation.mark_unread_for_actor',\n async execute(rawInput, ctx) {\n const input = conversationCommandSchema.parse(rawInput)\n const em = (ctx.container.resolve('em') as EntityManager).fork()\n const scope = await resolveConversationScope(em, input)\n const messageIdsToMarkUnread = scope.messageIds.filter((messageId) => scope.recipientMessageIds.has(messageId))\n\n if (messageIdsToMarkUnread.length === 0) {\n return { ok: true, affectedCount: 0 }\n }\n\n const markedIds: string[] = []\n await em.transactional(async (trx) => {\n const recipients = await trx.find(MessageRecipient, {\n messageId: { $in: messageIdsToMarkUnread },\n recipientUserId: input.userId,\n deletedAt: null,\n })\n for (const recipient of recipients) {\n if (recipient.status !== 'unread' || recipient.readAt !== null) {\n recipient.status = 'unread'\n recipient.readAt = null\n markedIds.push(recipient.messageId)\n }\n }\n })\n\n for (const messageId of markedIds) {\n await emitMessagesEvent('messages.message.marked_unread', {\n messageId,\n recipientUserId: input.userId,\n userId: input.userId,\n tenantId: input.tenantId,\n organizationId: input.organizationId,\n }, { persistent: true })\n }\n\n return { ok: true, affectedCount: markedIds.length }\n },\n}\n\ntype DeletedTarget = { messageId: string; target: 'sender' | 'recipient' }\n\nconst deleteConversationForActorCommand: CommandHandler<unknown, { ok: true; affectedCount: number }> = {\n id: 'messages.conversation.delete_for_actor',\n async execute(rawInput, ctx) {\n const input = conversationCommandSchema.parse(rawInput)\n const em = (ctx.container.resolve('em') as EntityManager).fork()\n const scope = await resolveConversationScope(em, input)\n const messageIdsToDelete = scope.messageIds.filter(\n (messageId) => scope.recipientMessageIds.has(messageId) || scope.senderMessageIds.has(messageId),\n )\n\n if (messageIdsToDelete.length === 0) {\n return { ok: true, affectedCount: 0 }\n }\n\n const deletedNow = new Date()\n const deletedTargets: DeletedTarget[] = []\n await em.transactional(async (trx) => {\n for (const messageId of messageIdsToDelete) {\n const recipient = await trx.findOne(MessageRecipient, {\n messageId,\n recipientUserId: input.userId,\n deletedAt: null,\n })\n if (recipient) {\n recipient.status = 'deleted'\n recipient.deletedAt = deletedNow\n deletedTargets.push({ messageId, target: 'recipient' })\n continue\n }\n if (scope.senderMessageIds.has(messageId)) {\n const message = await trx.findOne(Message, {\n id: messageId,\n tenantId: input.tenantId,\n deletedAt: null,\n })\n if (message && message.senderUserId === input.userId) {\n message.deletedAt = deletedNow\n deletedTargets.push({ messageId, target: 'sender' })\n }\n }\n }\n })\n\n for (const { messageId, target } of deletedTargets) {\n await emitMessagesEvent('messages.message.deleted', {\n messageId,\n actorUserId: input.userId,\n target,\n tenantId: input.tenantId,\n organizationId: input.organizationId,\n }, { persistent: true })\n }\n\n return { ok: true, affectedCount: deletedTargets.length }\n },\n}\n\nregisterCommand(archiveConversationForActorCommand)\nregisterCommand(markConversationUnreadForActorCommand)\nregisterCommand(deleteConversationForActorCommand)\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }