@solidxai/core 0.1.12-beta.1 → 0.1.12-beta.3

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 (169) hide show
  1. package/dist/constants/media-file-types.d.ts +5 -0
  2. package/dist/constants/media-file-types.d.ts.map +1 -0
  3. package/dist/constants/media-file-types.js +27 -0
  4. package/dist/constants/media-file-types.js.map +1 -0
  5. package/dist/controllers/media.controller.d.ts +14 -11
  6. package/dist/controllers/media.controller.d.ts.map +1 -1
  7. package/dist/controllers/media.controller.js +72 -33
  8. package/dist/controllers/media.controller.js.map +1 -1
  9. package/dist/dtos/create-chatter-message.dto.d.ts +1 -0
  10. package/dist/dtos/create-chatter-message.dto.d.ts.map +1 -1
  11. package/dist/dtos/create-chatter-message.dto.js +7 -1
  12. package/dist/dtos/create-chatter-message.dto.js.map +1 -1
  13. package/dist/dtos/create-media.dto.d.ts +1 -0
  14. package/dist/dtos/create-media.dto.d.ts.map +1 -1
  15. package/dist/dtos/create-media.dto.js +7 -1
  16. package/dist/dtos/create-media.dto.js.map +1 -1
  17. package/dist/dtos/post-chatter-message.dto.d.ts +1 -0
  18. package/dist/dtos/post-chatter-message.dto.d.ts.map +1 -1
  19. package/dist/dtos/post-chatter-message.dto.js +6 -1
  20. package/dist/dtos/post-chatter-message.dto.js.map +1 -1
  21. package/dist/dtos/update-chatter-message.dto.d.ts +1 -0
  22. package/dist/dtos/update-chatter-message.dto.d.ts.map +1 -1
  23. package/dist/dtos/update-chatter-message.dto.js +8 -1
  24. package/dist/dtos/update-chatter-message.dto.js.map +1 -1
  25. package/dist/dtos/update-chatter-note-message.dto.d.ts +1 -0
  26. package/dist/dtos/update-chatter-note-message.dto.d.ts.map +1 -1
  27. package/dist/dtos/update-chatter-note-message.dto.js +7 -1
  28. package/dist/dtos/update-chatter-note-message.dto.js.map +1 -1
  29. package/dist/dtos/update-media.dto.d.ts +1 -0
  30. package/dist/dtos/update-media.dto.d.ts.map +1 -1
  31. package/dist/dtos/update-media.dto.js +7 -1
  32. package/dist/dtos/update-media.dto.js.map +1 -1
  33. package/dist/entities/chatter-message.entity.d.ts +1 -0
  34. package/dist/entities/chatter-message.entity.d.ts.map +1 -1
  35. package/dist/entities/chatter-message.entity.js +5 -1
  36. package/dist/entities/chatter-message.entity.js.map +1 -1
  37. package/dist/entities/media.entity.d.ts +1 -0
  38. package/dist/entities/media.entity.d.ts.map +1 -1
  39. package/dist/entities/media.entity.js +9 -1
  40. package/dist/entities/media.entity.js.map +1 -1
  41. package/dist/enums/auth-type.enum.d.ts +2 -1
  42. package/dist/enums/auth-type.enum.d.ts.map +1 -1
  43. package/dist/enums/auth-type.enum.js +1 -0
  44. package/dist/enums/auth-type.enum.js.map +1 -1
  45. package/dist/guards/authentication.guard.d.ts +3 -1
  46. package/dist/guards/authentication.guard.d.ts.map +1 -1
  47. package/dist/guards/authentication.guard.js +5 -1
  48. package/dist/guards/authentication.guard.js.map +1 -1
  49. package/dist/guards/media-signed-url.guard.d.ts +9 -0
  50. package/dist/guards/media-signed-url.guard.d.ts.map +1 -0
  51. package/dist/guards/media-signed-url.guard.js +49 -0
  52. package/dist/guards/media-signed-url.guard.js.map +1 -0
  53. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
  54. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +10 -13
  55. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
  56. package/dist/interfaces/chatter-mention-notification.interface.d.ts +27 -0
  57. package/dist/interfaces/chatter-mention-notification.interface.d.ts.map +1 -0
  58. package/dist/interfaces/chatter-mention-notification.interface.js +3 -0
  59. package/dist/interfaces/chatter-mention-notification.interface.js.map +1 -0
  60. package/dist/jobs/chatter-mention-notification-email-queue-handler.service.d.ts +17 -0
  61. package/dist/jobs/chatter-mention-notification-email-queue-handler.service.d.ts.map +1 -0
  62. package/dist/jobs/chatter-mention-notification-email-queue-handler.service.js +106 -0
  63. package/dist/jobs/chatter-mention-notification-email-queue-handler.service.js.map +1 -0
  64. package/dist/jobs/database/chatter-mention-notification-email-publisher-database.service.d.ts +12 -0
  65. package/dist/jobs/database/chatter-mention-notification-email-publisher-database.service.d.ts.map +1 -0
  66. package/dist/jobs/database/chatter-mention-notification-email-publisher-database.service.js +39 -0
  67. package/dist/jobs/database/chatter-mention-notification-email-publisher-database.service.js.map +1 -0
  68. package/dist/jobs/database/chatter-mention-notification-email-queue-options-database.d.ts +8 -0
  69. package/dist/jobs/database/chatter-mention-notification-email-queue-options-database.d.ts.map +1 -0
  70. package/dist/jobs/database/chatter-mention-notification-email-queue-options-database.js +10 -0
  71. package/dist/jobs/database/chatter-mention-notification-email-queue-options-database.js.map +1 -0
  72. package/dist/jobs/database/chatter-mention-notification-email-subscriber-database.service.d.ts +20 -0
  73. package/dist/jobs/database/chatter-mention-notification-email-subscriber-database.service.d.ts.map +1 -0
  74. package/dist/jobs/database/chatter-mention-notification-email-subscriber-database.service.js +48 -0
  75. package/dist/jobs/database/chatter-mention-notification-email-subscriber-database.service.js.map +1 -0
  76. package/dist/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.d.ts +12 -0
  77. package/dist/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.d.ts.map +1 -0
  78. package/dist/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.js +39 -0
  79. package/dist/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.js.map +1 -0
  80. package/dist/jobs/rabbitmq/chatter-mention-notification-email-queue-options.d.ts +8 -0
  81. package/dist/jobs/rabbitmq/chatter-mention-notification-email-queue-options.d.ts.map +1 -0
  82. package/dist/jobs/rabbitmq/chatter-mention-notification-email-queue-options.js +10 -0
  83. package/dist/jobs/rabbitmq/chatter-mention-notification-email-queue-options.js.map +1 -0
  84. package/dist/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.d.ts +18 -0
  85. package/dist/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.d.ts.map +1 -0
  86. package/dist/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.js +45 -0
  87. package/dist/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.js.map +1 -0
  88. package/dist/jobs/redis/chatter-mention-notification-email-publisher-redis.service.d.ts +12 -0
  89. package/dist/jobs/redis/chatter-mention-notification-email-publisher-redis.service.d.ts.map +1 -0
  90. package/dist/jobs/redis/chatter-mention-notification-email-publisher-redis.service.js +39 -0
  91. package/dist/jobs/redis/chatter-mention-notification-email-publisher-redis.service.js.map +1 -0
  92. package/dist/jobs/redis/chatter-mention-notification-email-queue-options-redis.d.ts +8 -0
  93. package/dist/jobs/redis/chatter-mention-notification-email-queue-options-redis.d.ts.map +1 -0
  94. package/dist/jobs/redis/chatter-mention-notification-email-queue-options-redis.js +10 -0
  95. package/dist/jobs/redis/chatter-mention-notification-email-queue-options-redis.js.map +1 -0
  96. package/dist/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.d.ts +18 -0
  97. package/dist/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.d.ts.map +1 -0
  98. package/dist/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.js +45 -0
  99. package/dist/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.js.map +1 -0
  100. package/dist/repository/media.repository.d.ts.map +1 -1
  101. package/dist/repository/media.repository.js +2 -0
  102. package/dist/repository/media.repository.js.map +1 -1
  103. package/dist/seeders/seed-data/solid-core-metadata.json +109 -3
  104. package/dist/services/chatter-message.service.d.ts +7 -1
  105. package/dist/services/chatter-message.service.d.ts.map +1 -1
  106. package/dist/services/chatter-message.service.js +85 -4
  107. package/dist/services/chatter-message.service.js.map +1 -1
  108. package/dist/services/media-download-url.service.d.ts +21 -0
  109. package/dist/services/media-download-url.service.d.ts.map +1 -0
  110. package/dist/services/media-download-url.service.js +67 -0
  111. package/dist/services/media-download-url.service.js.map +1 -0
  112. package/dist/services/media-storage.utils.d.ts +27 -0
  113. package/dist/services/media-storage.utils.d.ts.map +1 -0
  114. package/dist/services/media-storage.utils.js +82 -0
  115. package/dist/services/media-storage.utils.js.map +1 -0
  116. package/dist/services/media.service.d.ts +20 -4
  117. package/dist/services/media.service.d.ts.map +1 -1
  118. package/dist/services/media.service.js +157 -55
  119. package/dist/services/media.service.js.map +1 -1
  120. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +4 -4
  121. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  122. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +37 -63
  123. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  124. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +5 -5
  125. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  126. package/dist/services/mediaStorageProviders/file-storage-provider.js +37 -38
  127. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  128. package/dist/solid-core.module.d.ts.map +1 -1
  129. package/dist/solid-core.module.js +25 -1
  130. package/dist/solid-core.module.js.map +1 -1
  131. package/dist/subscribers/audit.subscriber.js +1 -1
  132. package/dist/subscribers/audit.subscriber.js.map +1 -1
  133. package/package.json +1 -1
  134. package/src/constants/media-file-types.ts +44 -0
  135. package/src/controllers/media.controller.ts +44 -24
  136. package/src/dtos/create-chatter-message.dto.ts +5 -0
  137. package/src/dtos/create-media.dto.ts +8 -3
  138. package/src/dtos/post-chatter-message.dto.ts +4 -0
  139. package/src/dtos/update-chatter-message.dto.ts +6 -0
  140. package/src/dtos/update-chatter-note-message.dto.ts +5 -0
  141. package/src/dtos/update-media.dto.ts +8 -3
  142. package/src/entities/chatter-message.entity.ts +3 -0
  143. package/src/entities/media.entity.ts +4 -1
  144. package/src/enums/auth-type.enum.ts +1 -0
  145. package/src/guards/authentication.guard.ts +3 -0
  146. package/src/guards/media-signed-url.guard.ts +41 -0
  147. package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +12 -24
  148. package/src/interfaces/chatter-mention-notification.interface.ts +29 -0
  149. package/src/jobs/chatter-mention-notification-email-queue-handler.service.ts +114 -0
  150. package/src/jobs/database/chatter-mention-notification-email-publisher-database.service.ts +23 -0
  151. package/src/jobs/database/chatter-mention-notification-email-queue-options-database.ts +9 -0
  152. package/src/jobs/database/chatter-mention-notification-email-subscriber-database.service.ts +32 -0
  153. package/src/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.ts +23 -0
  154. package/src/jobs/rabbitmq/chatter-mention-notification-email-queue-options.ts +9 -0
  155. package/src/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.ts +30 -0
  156. package/src/jobs/redis/chatter-mention-notification-email-publisher-redis.service.ts +23 -0
  157. package/src/jobs/redis/chatter-mention-notification-email-queue-options-redis.ts +9 -0
  158. package/src/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.ts +30 -0
  159. package/src/repository/media.repository.ts +2 -0
  160. package/src/seeders/seed-data/email-templates/chatter-mention-notification.handlebars.html +200 -0
  161. package/src/seeders/seed-data/solid-core-metadata.json +109 -3
  162. package/src/services/chatter-message.service.ts +97 -2
  163. package/src/services/media-download-url.service.ts +67 -0
  164. package/src/services/media-storage.utils.ts +79 -0
  165. package/src/services/media.service.ts +189 -59
  166. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +52 -76
  167. package/src/services/mediaStorageProviders/file-storage-provider.ts +44 -48
  168. package/src/solid-core.module.ts +35 -2
  169. package/src/subscribers/audit.subscriber.ts +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatter-mention-notification-email-subscriber-redis.service.d.ts","sourceRoot":"","sources":["../../../src/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2CAA2C,EAAE,MAAM,mEAAmE,CAAC;AAChI,OAAO,EAAE,iCAAiC,EAAE,MAAM,uDAAuD,CAAC;AAC1G,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAG/E,qBACa,mDAAoD,SAAQ,eAAe,CAAC,iCAAiC,CAAC;IAEnH,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFf,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB,EACpC,OAAO,EAAE,2CAA2C;IAKzE,OAAO,IAAI,mBAAmB;IAM9B,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,iCAAiC,CAAC;;;CAGrE"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ChatterMentionNotificationEmailQueueSubscriberRedis = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const chatter_mention_notification_email_queue_handler_service_1 = require("../chatter-mention-notification-email-queue-handler.service");
18
+ const mq_message_queue_service_1 = require("../../services/mq-message-queue.service");
19
+ const mq_message_service_1 = require("../../services/mq-message.service");
20
+ const redis_subscriber_service_1 = require("../../services/queues/redis-subscriber.service");
21
+ const chatter_mention_notification_email_queue_options_redis_1 = __importDefault(require("./chatter-mention-notification-email-queue-options-redis"));
22
+ let ChatterMentionNotificationEmailQueueSubscriberRedis = class ChatterMentionNotificationEmailQueueSubscriberRedis extends redis_subscriber_service_1.RedisSubscriber {
23
+ constructor(mqMessageService, mqMessageQueueService, handler) {
24
+ super(mqMessageService, mqMessageQueueService);
25
+ this.mqMessageService = mqMessageService;
26
+ this.mqMessageQueueService = mqMessageQueueService;
27
+ this.handler = handler;
28
+ }
29
+ options() {
30
+ return {
31
+ ...chatter_mention_notification_email_queue_options_redis_1.default
32
+ };
33
+ }
34
+ subscribe(message) {
35
+ return this.handler.handle(message);
36
+ }
37
+ };
38
+ exports.ChatterMentionNotificationEmailQueueSubscriberRedis = ChatterMentionNotificationEmailQueueSubscriberRedis;
39
+ exports.ChatterMentionNotificationEmailQueueSubscriberRedis = ChatterMentionNotificationEmailQueueSubscriberRedis = __decorate([
40
+ (0, common_1.Injectable)(),
41
+ __metadata("design:paramtypes", [mq_message_service_1.MqMessageService,
42
+ mq_message_queue_service_1.MqMessageQueueService,
43
+ chatter_mention_notification_email_queue_handler_service_1.ChatterMentionNotificationEmailQueueHandler])
44
+ ], ChatterMentionNotificationEmailQueueSubscriberRedis);
45
+ //# sourceMappingURL=chatter-mention-notification-email-subscriber-redis.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatter-mention-notification-email-subscriber-redis.service.js","sourceRoot":"","sources":["../../../src/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,0IAAgI;AAIhI,sFAA8E;AAC9E,0EAAmE;AACnE,6FAA+E;AAC/E,sJAAoF;AAG7E,IAAM,mDAAmD,GAAzD,MAAM,mDAAoD,SAAQ,0CAAkD;IACvH,YACa,gBAAkC,EAClC,qBAA4C,EACpC,OAAoD;QAErE,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAJtC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,0BAAqB,GAArB,qBAAqB,CAAuB;QACpC,YAAO,GAAP,OAAO,CAA6C;IAGzE,CAAC;IAED,OAAO;QACH,OAAO;YACH,GAAG,gEAAY;SAClB,CAAC;IACN,CAAC;IAED,SAAS,CAAC,OAAwD;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;CACJ,CAAA;AAlBY,kHAAmD;8DAAnD,mDAAmD;IAD/D,IAAA,mBAAU,GAAE;qCAGsB,qCAAgB;QACX,gDAAqB;QAC3B,sGAA2C;GAJhE,mDAAmD,CAkB/D","sourcesContent":["import { Injectable } from '@nestjs/common';\nimport { ChatterMentionNotificationEmailQueueHandler } from 'src/jobs/chatter-mention-notification-email-queue-handler.service';\nimport { ChatterMentionNotificationPayload } from 'src/interfaces/chatter-mention-notification.interface';\nimport { QueuesModuleOptions } from 'src/interfaces';\nimport { QueueMessage } from 'src/interfaces/mq';\nimport { MqMessageQueueService } from 'src/services/mq-message-queue.service';\nimport { MqMessageService } from 'src/services/mq-message.service';\nimport { RedisSubscriber } from 'src/services/queues/redis-subscriber.service';\nimport queueOptions from './chatter-mention-notification-email-queue-options-redis';\n\n@Injectable()\nexport class ChatterMentionNotificationEmailQueueSubscriberRedis extends RedisSubscriber<ChatterMentionNotificationPayload> {\n constructor(\n readonly mqMessageService: MqMessageService,\n readonly mqMessageQueueService: MqMessageQueueService,\n private readonly handler: ChatterMentionNotificationEmailQueueHandler,\n ) {\n super(mqMessageService, mqMessageQueueService);\n }\n\n options(): QueuesModuleOptions {\n return {\n ...queueOptions\n };\n }\n\n subscribe(message: QueueMessage<ChatterMentionNotificationPayload>) {\n return this.handler.handle(message);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"media.repository.d.ts","sourceRoot":"","sources":["../../src/repository/media.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAM,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,sCAAsC,EAAE,MAAM,8CAA8C,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBACa,eAAgB,SAAQ,mBAAmB,CAAC,KAAK,CAAC;IAEvD,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB;IAOvD,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,gCAAgC;gBAZxC,UAAU,EAAE,UAAU,EACtB,qBAAqB,EAAE,qBAAqB,EAC5C,sBAAsB,EAAE,sBAAsB,EAOtC,iBAAiB,EAAE,uBAAuB,EAE1C,iBAAiB,EAAE,uBAAuB,EAC1C,gCAAgC,EAAE,sCAAsC;IAKvF,WAAW,CAAC,SAAS,EAAE,GAAG;IAoB1B,0CAA0C,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,KAAK;IAe7H,4CAA4C,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;CAexH"}
1
+ {"version":3,"file":"media.repository.d.ts","sourceRoot":"","sources":["../../src/repository/media.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAM,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,sCAAsC,EAAE,MAAM,8CAA8C,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,qBACa,eAAgB,SAAQ,mBAAmB,CAAC,KAAK,CAAC;IAEvD,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB;IAOvD,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,gCAAgC;gBAZxC,UAAU,EAAE,UAAU,EACtB,qBAAqB,EAAE,qBAAqB,EAC5C,sBAAsB,EAAE,sBAAsB,EAOtC,iBAAiB,EAAE,uBAAuB,EAE1C,iBAAiB,EAAE,uBAAuB,EAC1C,gCAAgC,EAAE,sCAAsC;IAKvF,WAAW,CAAC,SAAS,EAAE,GAAG;IAqB1B,0CAA0C,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,KAAK;IAe7H,4CAA4C,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;CAexH"}
@@ -22,6 +22,7 @@ const media_storage_provider_metadata_repository_1 = require("./media-storage-pr
22
22
  const model_metadata_repository_1 = require("./model-metadata.repository");
23
23
  const security_rule_repository_1 = require("./security-rule.repository");
24
24
  const solid_base_repository_1 = require("./solid-base.repository");
25
+ const media_storage_utils_1 = require("../services/media-storage.utils");
25
26
  let MediaRepository = class MediaRepository extends solid_base_repository_1.SolidBaseRepository {
26
27
  constructor(dataSource, requestContextService, securityRuleRepository, fieldMetadataRepo, modelMetadataRepo, mediaStorageProviderMetadataRepo) {
27
28
  super(media_entity_1.Media, dataSource, requestContextService, securityRuleRepository);
@@ -48,6 +49,7 @@ let MediaRepository = class MediaRepository extends solid_base_repository_1.Soli
48
49
  id: createDto['mediaStorageProviderMetadataId']
49
50
  },
50
51
  });
52
+ createDto['isPublic'] = (0, media_storage_utils_1.resolveStoredMediaIsPublic)(createDto['isPublic'], createDto['mediaStorageProviderMetadata']);
51
53
  const media = this.create(createDto);
52
54
  return this.save(media);
53
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"media.repository.js","sourceRoot":"","sources":["../../src/repository/media.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAgE;AAChE,2DAAkD;AAClD,iFAA6E;AAC7E,qCAAyC;AACzC,2EAAsE;AACtE,6GAAsG;AACtG,2EAAsE;AACtE,yEAAoE;AACpE,mEAA8D;AAGvD,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,2CAA0B;IAC3D,YACa,UAAsB,EACtB,qBAA4C,EAC5C,sBAA8C,EAOtC,iBAA0C,EAE1C,iBAA0C,EAC1C,gCAAwE;QAEzF,KAAK,CAAC,oBAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAC;QAd/D,eAAU,GAAV,UAAU,CAAY;QACtB,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,2BAAsB,GAAtB,sBAAsB,CAAwB;QAOtC,sBAAiB,GAAjB,iBAAiB,CAAyB;QAE1C,sBAAiB,GAAjB,iBAAiB,CAAyB;QAC1C,qCAAgC,GAAhC,gCAAgC,CAAwC;IAG7F,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAc;QAC5B,SAAS,CAAC,eAAe,CAAC,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC9D,KAAK,EAAE;gBACH,EAAE,EAAE,SAAS,CAAC,iBAAiB,CAAC;aACnC;SACJ,CAAC,CAAC;QACH,SAAS,CAAC,eAAe,CAAC,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC9D,KAAK,EAAE;gBACH,EAAE,EAAE,SAAS,CAAC,iBAAiB,CAAC;aACnC;SACJ,CAAC,CAAC;QACH,SAAS,CAAC,8BAA8B,CAAC,GAAG,MAAM,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC;YAC5F,KAAK,EAAE;gBACH,EAAE,EAAE,SAAS,CAAC,gCAAgC,CAAC;aAClD;SACJ,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,0CAA0C,CAAC,QAAgB,EAAE,eAAuB,EAAE,eAAuB,EAAE,SAAS,GAAG,EAAE;QAC/H,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC;YACnB,KAAK,EAAE;gBACH,aAAa,EAAE;oBACX,EAAE,EAAE,eAAe;iBACtB;gBACD,aAAa,EAAE;oBACX,EAAE,EAAE,eAAe;iBACtB;gBACD,QAAQ,EAAE,QAAQ;aACrB;YACD,SAAS,EAAE,SAAS;SACvB,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,4CAA4C,CAAC,QAAgB,EAAE,eAAuB,EAAE,eAAuB;QACjH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;YAC7B,KAAK,EAAE;gBACH,aAAa,EAAE;oBACX,EAAE,EAAE,eAAe;iBACtB;gBACD,aAAa,EAAE;oBACX,EAAE,EAAE,eAAe;iBACtB;gBACD,QAAQ,EAAE,QAAQ;aACrB;SACJ,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;CAEJ,CAAA;AArEY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAaJ,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,mDAAuB,CAAC,CAAC,CAAA;qCAV7B,oBAAU;QACC,+CAAqB;QACpB,iDAAsB;QAOnB,mDAAuB;QAEvB,mDAAuB;QACR,mFAAsC;GAdpF,eAAe,CAqE3B","sourcesContent":["import { forwardRef, Inject, Injectable } from '@nestjs/common';\nimport { Media } from 'src/entities/media.entity';\nimport { RequestContextService } from 'src/services/request-context.service';\nimport { DataSource, In } from 'typeorm';\nimport { FieldMetadataRepository } from './field-metadata.repository';\nimport { MediaStorageProviderMetadataRepository } from './media-storage-provider-metadata.repository';\nimport { ModelMetadataRepository } from './model-metadata.repository';\nimport { SecurityRuleRepository } from './security-rule.repository';\nimport { SolidBaseRepository } from './solid-base.repository';\n\n@Injectable()\nexport class MediaRepository extends SolidBaseRepository<Media> {\n constructor(\n readonly dataSource: DataSource,\n readonly requestContextService: RequestContextService,\n readonly securityRuleRepository: SecurityRuleRepository,\n // @InjectRepository(FieldMetadata)\n // private readonly fieldMetadataRepo: Repository<FieldMetadata>,\n // @InjectRepository(ModelMetadata)\n // private readonly modelMetadataRepo: Repository<ModelMetadata>,\n // @InjectRepository(MediaStorageProviderMetadata)\n // private readonly mediaStorageProviderMetadataRepo: Repository<MediaStorageProviderMetadata>,\n private readonly fieldMetadataRepo: FieldMetadataRepository,\n @Inject(forwardRef(() => ModelMetadataRepository))\n private readonly modelMetadataRepo: ModelMetadataRepository,\n private readonly mediaStorageProviderMetadataRepo: MediaStorageProviderMetadataRepository,\n ) {\n super(Media, dataSource, requestContextService, securityRuleRepository);\n }\n\n async createMedia(createDto: any) {\n createDto['fieldMetadata'] = await this.fieldMetadataRepo.findOne({\n where: {\n id: createDto['fieldMetadataId']\n },\n });\n createDto['modelMetadata'] = await this.modelMetadataRepo.findOne({\n where: {\n id: createDto['modelMetadataId']\n },\n });\n createDto['mediaStorageProviderMetadata'] = await this.mediaStorageProviderMetadataRepo.findOne({\n where: {\n id: createDto['mediaStorageProviderMetadataId']\n },\n });\n const media = this.create(createDto);\n return this.save(media);\n }\n\n async findByEntityIdAndFieldIdAndModelMetadataId(entityId: number, fieldMetadataId: number, modelMetadataId: number, relations = {}) {\n return await this.find({\n where: {\n modelMetadata: {\n id: modelMetadataId\n },\n fieldMetadata: {\n id: fieldMetadataId\n },\n entityId: entityId,\n },\n relations: relations,\n });\n }\n\n async deleteByEntityIdAndFieldIdAndModelMetadataId(entityId: number, fieldMetadataId: number, modelMetadataId: number) {\n const entities = await this.find({\n where: {\n modelMetadata: {\n id: modelMetadataId\n },\n fieldMetadata: {\n id: fieldMetadataId\n },\n entityId: entityId,\n }\n });\n return this.remove(entities);\n }\n\n}\n"]}
1
+ {"version":3,"file":"media.repository.js","sourceRoot":"","sources":["../../src/repository/media.repository.ts"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, Inject, Injectable } from '@nestjs/common';\nimport { Media } from 'src/entities/media.entity';\nimport { RequestContextService } from 'src/services/request-context.service';\nimport { DataSource, In } from 'typeorm';\nimport { FieldMetadataRepository } from './field-metadata.repository';\nimport { MediaStorageProviderMetadataRepository } from './media-storage-provider-metadata.repository';\nimport { ModelMetadataRepository } from './model-metadata.repository';\nimport { SecurityRuleRepository } from './security-rule.repository';\nimport { SolidBaseRepository } from './solid-base.repository';\nimport { resolveStoredMediaIsPublic } from 'src/services/media-storage.utils';\n\n@Injectable()\nexport class MediaRepository extends SolidBaseRepository<Media> {\n constructor(\n readonly dataSource: DataSource,\n readonly requestContextService: RequestContextService,\n readonly securityRuleRepository: SecurityRuleRepository,\n // @InjectRepository(FieldMetadata)\n // private readonly fieldMetadataRepo: Repository<FieldMetadata>,\n // @InjectRepository(ModelMetadata)\n // private readonly modelMetadataRepo: Repository<ModelMetadata>,\n // @InjectRepository(MediaStorageProviderMetadata)\n // private readonly mediaStorageProviderMetadataRepo: Repository<MediaStorageProviderMetadata>,\n private readonly fieldMetadataRepo: FieldMetadataRepository,\n @Inject(forwardRef(() => ModelMetadataRepository))\n private readonly modelMetadataRepo: ModelMetadataRepository,\n private readonly mediaStorageProviderMetadataRepo: MediaStorageProviderMetadataRepository,\n ) {\n super(Media, dataSource, requestContextService, securityRuleRepository);\n }\n\n async createMedia(createDto: any) {\n createDto['fieldMetadata'] = await this.fieldMetadataRepo.findOne({\n where: {\n id: createDto['fieldMetadataId']\n },\n });\n createDto['modelMetadata'] = await this.modelMetadataRepo.findOne({\n where: {\n id: createDto['modelMetadataId']\n },\n });\n createDto['mediaStorageProviderMetadata'] = await this.mediaStorageProviderMetadataRepo.findOne({\n where: {\n id: createDto['mediaStorageProviderMetadataId']\n },\n });\n createDto['isPublic'] = resolveStoredMediaIsPublic(createDto['isPublic'], createDto['mediaStorageProviderMetadata']);\n const media = this.create(createDto);\n return this.save(media);\n }\n\n async findByEntityIdAndFieldIdAndModelMetadataId(entityId: number, fieldMetadataId: number, modelMetadataId: number, relations = {}) {\n return await this.find({\n where: {\n modelMetadata: {\n id: modelMetadataId\n },\n fieldMetadata: {\n id: fieldMetadataId\n },\n entityId: entityId,\n },\n relations: relations,\n });\n }\n\n async deleteByEntityIdAndFieldIdAndModelMetadataId(entityId: number, fieldMetadataId: number, modelMetadataId: number) {\n const entities = await this.find({\n where: {\n modelMetadata: {\n id: modelMetadataId\n },\n fieldMetadata: {\n id: fieldMetadataId\n },\n entityId: entityId,\n }\n });\n return this.remove(entities);\n }\n\n}\n"]}
@@ -1704,6 +1704,18 @@
1704
1704
  "columnName": "original_file_name",
1705
1705
  "isSystem": true
1706
1706
  },
1707
+ {
1708
+ "name": "isPublic",
1709
+ "displayName": "Is Public",
1710
+ "type": "boolean",
1711
+ "required": false,
1712
+ "unique": false,
1713
+ "index": false,
1714
+ "private": false,
1715
+ "encrypt": false,
1716
+ "columnName": "is_public",
1717
+ "isSystem": true
1718
+ },
1707
1719
  {
1708
1720
  "name": "modelMetadata",
1709
1721
  "displayName": "Model Metadata",
@@ -3911,6 +3923,18 @@
3911
3923
  "encrypt": false,
3912
3924
  "isSystem": false
3913
3925
  },
3926
+ {
3927
+ "name": "messageBodyMentions",
3928
+ "displayName": "Message Body Mentions",
3929
+ "type": "longText",
3930
+ "ormType": "text",
3931
+ "required": false,
3932
+ "unique": false,
3933
+ "index": false,
3934
+ "private": false,
3935
+ "encrypt": false,
3936
+ "isSystem": false
3937
+ },
3914
3938
  {
3915
3939
  "name": "coModelEntityId",
3916
3940
  "displayName": "CoModel Entity Id",
@@ -5294,6 +5318,9 @@
5294
5318
  "FieldMetadataController.getSelectionDynamicValues",
5295
5319
  "FieldMetadataController.getSelectionDynamicValue",
5296
5320
  "FieldMetadataController.findFieldDefaultMetaData",
5321
+ "MediaController.findMany",
5322
+ "MediaController.findOne",
5323
+ "MediaController.download",
5297
5324
  "SavedFiltersController.delete",
5298
5325
  "SavedFiltersController.deleteMany",
5299
5326
  "SavedFiltersController.findOne",
@@ -8595,9 +8622,9 @@
8595
8622
  "attrs": {
8596
8623
  "name": "roles",
8597
8624
  "widget": "checkbox",
8598
- "inlineCreateAutoSave": "true",
8625
+ "inlineCreateAutoSave": "false",
8599
8626
  "renderModeCheckboxPreprocessor": "MenuItemMetadataRolesFormFieldPreprocessor",
8600
- "inlineCreate": "true",
8627
+ "inlineCreate": "false",
8601
8628
  "inlineCreateLayout": {
8602
8629
  "type": "form",
8603
8630
  "attrs": {
@@ -8746,6 +8773,13 @@
8746
8773
  "sortable": false
8747
8774
  }
8748
8775
  },
8776
+ {
8777
+ "type": "field",
8778
+ "attrs": {
8779
+ "name": "isPublic",
8780
+ "sortable": true
8781
+ }
8782
+ },
8749
8783
  {
8750
8784
  "type": "field",
8751
8785
  "attrs": {
@@ -8841,6 +8875,14 @@
8841
8875
  "isSearchable": true
8842
8876
  }
8843
8877
  },
8878
+ {
8879
+ "type": "field",
8880
+ "attrs": {
8881
+ "name": "isPublic",
8882
+ "label": "isPublic",
8883
+ "isSearchable": true
8884
+ }
8885
+ },
8844
8886
  {
8845
8887
  "type": "field",
8846
8888
  "attrs": {
@@ -8909,6 +8951,12 @@
8909
8951
  "name": "mediaStorageProviderMetadata"
8910
8952
  }
8911
8953
  },
8954
+ {
8955
+ "type": "field",
8956
+ "attrs": {
8957
+ "name": "isPublic"
8958
+ }
8959
+ },
8912
8960
  {
8913
8961
  "type": "field",
8914
8962
  "attrs": {
@@ -14461,6 +14509,15 @@
14461
14509
  "description": "Welcome email sent to users after signup.",
14462
14510
  "active": true,
14463
14511
  "type": "text"
14512
+ },
14513
+ {
14514
+ "name": "chatter-mention-notification",
14515
+ "displayName": "Default: Chatter Mention Notification",
14516
+ "body": "chatter-mention-notification.handlebars.html",
14517
+ "subject": "{{mentionedByDisplayName}} mentioned you in {{entityDisplayName}}",
14518
+ "description": "This template notifies users when they are mentioned in a custom chatter note.",
14519
+ "active": true,
14520
+ "type": "text"
14464
14521
  }
14465
14522
  ],
14466
14523
  "smsTemplates": [
@@ -14504,7 +14561,15 @@
14504
14561
  "mediaStorageProviders": [
14505
14562
  {
14506
14563
  "name": "default-filesystem",
14507
- "type": "filesystem"
14564
+ "type": "filesystem",
14565
+ "isPublic": true,
14566
+ "localPath": "media-files-storage"
14567
+ },
14568
+ {
14569
+ "name": "private-filesystem",
14570
+ "type": "filesystem",
14571
+ "isPublic": false,
14572
+ "localPath": "media-private-files-storage"
14508
14573
  },
14509
14574
  {
14510
14575
  "name": "default-aws-s3",
@@ -14540,6 +14605,47 @@
14540
14605
  }
14541
14606
  }
14542
14607
  }
14608
+ },
14609
+ {
14610
+ "name": "model:Media-role:Internal User-own",
14611
+ "description": "Show Media records owned by the current user",
14612
+ "roleUserKey": "Internal User",
14613
+ "modelMetadataUserKey": "media",
14614
+ "securityRuleConfig": {
14615
+ "filters": {
14616
+ "createdBy": {
14617
+ "$eq": "$activeUserId"
14618
+ }
14619
+ }
14620
+ }
14621
+ },
14622
+ {
14623
+ "name": "model:Media-role:Internal User-public",
14624
+ "description": "Show public Media records",
14625
+ "roleUserKey": "Internal User",
14626
+ "modelMetadataUserKey": "media",
14627
+ "securityRuleConfig": {
14628
+ "filters": {
14629
+ "mediaStorageProviderMetadata": {
14630
+ "isPublic": {
14631
+ "$eq": true
14632
+ }
14633
+ }
14634
+ }
14635
+ }
14636
+ },
14637
+ {
14638
+ "name": "model:Media-role:Admin",
14639
+ "description": "Show All Media records",
14640
+ "roleUserKey": "Admin",
14641
+ "modelMetadataUserKey": "media",
14642
+ "securityRuleConfig": {
14643
+ "filters": {
14644
+ "id": {
14645
+ "$ne": "0"
14646
+ }
14647
+ }
14648
+ }
14543
14649
  }
14544
14650
  ],
14545
14651
  "modelSequences": [],
@@ -3,6 +3,7 @@ import { EntityManager } from 'typeorm';
3
3
  import { PostChatterMessageDto } from '../dtos/post-chatter-message.dto';
4
4
  import { UpdateChatterNoteMessageDto } from '../dtos/update-chatter-note-message.dto';
5
5
  import { ModelMetadataHelperService } from '../helpers/model-metadata-helper.service';
6
+ import { ChatterMentionNotificationPayload } from '../interfaces/chatter-mention-notification.interface';
6
7
  import { ChatterMessageDetailsRepository } from '../repository/chatter-message-details.repository';
7
8
  import { ChatterMessageRepository } from '../repository/chatter-message.repository';
8
9
  import { FieldMetadataRepository } from '../repository/field-metadata.repository';
@@ -11,6 +12,7 @@ import { ModelMetadataRepository } from '../repository/model-metadata.repository
11
12
  import { CRUDService } from '../services/crud.service';
12
13
  import { ChatterMessage } from '../entities/chatter-message.entity';
13
14
  import { RequestContextService } from './request-context.service';
15
+ import { PublisherFactory } from './queues/publisher-factory.service';
14
16
  export declare class ChatterMessageService extends CRUDService<ChatterMessage> {
15
17
  readonly entityManager: EntityManager;
16
18
  readonly repo: ChatterMessageRepository;
@@ -21,8 +23,9 @@ export declare class ChatterMessageService extends CRUDService<ChatterMessage> {
21
23
  private readonly modelMetadataRepo;
22
24
  readonly requestContextService: RequestContextService;
23
25
  private readonly modelMetadataHelperService;
26
+ private readonly publisherFactory;
24
27
  private readonly _logger;
25
- constructor(entityManager: EntityManager, repo: ChatterMessageRepository, chatterMessageDetailsRepo: ChatterMessageDetailsRepository, mediaRepository: MediaRepository, fieldMetadataRepo: FieldMetadataRepository, moduleRef: ModuleRef, modelMetadataRepo: ModelMetadataRepository, requestContextService: RequestContextService, modelMetadataHelperService: ModelMetadataHelperService);
28
+ constructor(entityManager: EntityManager, repo: ChatterMessageRepository, chatterMessageDetailsRepo: ChatterMessageDetailsRepository, mediaRepository: MediaRepository, fieldMetadataRepo: FieldMetadataRepository, moduleRef: ModuleRef, modelMetadataRepo: ModelMetadataRepository, requestContextService: RequestContextService, modelMetadataHelperService: ModelMetadataHelperService, publisherFactory: PublisherFactory<ChatterMentionNotificationPayload>);
26
29
  private getCoModelService;
27
30
  private assertRecordAccess;
28
31
  private resolveMessageUserId;
@@ -30,6 +33,9 @@ export declare class ChatterMessageService extends CRUDService<ChatterMessage> {
30
33
  private stampMessageAuditFields;
31
34
  private isEditableCustomNoteMessage;
32
35
  private parseAttachmentIds;
36
+ private parseMessageBodyMentions;
37
+ private renderMentionTokens;
38
+ private publishChatterMentionNotifications;
33
39
  markCompleted(id: number): Promise<ChatterMessage>;
34
40
  updateCustomNoteMessage(id: number, updateDto: UpdateChatterNoteMessageDto, files?: Express.Multer.File[]): Promise<ChatterMessage>;
35
41
  postMessage(postDto: PostChatterMessageDto, files?: Express.Multer.File[]): Promise<ChatterMessage>;
@@ -1 +1 @@
1
- {"version":3,"file":"chatter-message.service.d.ts","sourceRoot":"","sources":["../../src/services/chatter-message.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chatter-message.service.d.ts","sourceRoot":"","sources":["../../src/services/chatter-message.service.ts"],"names":[],"mappings":"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"}
@@ -36,8 +36,9 @@ const mediaStorageProviders_1 = require("./mediaStorageProviders");
36
36
  const request_context_service_1 = require("./request-context.service");
37
37
  const common_2 = require("@nestjs/common");
38
38
  const solid_introspect_service_1 = require("./solid-introspect.service");
39
+ const publisher_factory_service_1 = require("./queues/publisher-factory.service");
39
40
  let ChatterMessageService = ChatterMessageService_1 = class ChatterMessageService extends crud_service_1.CRUDService {
40
- constructor(entityManager, repo, chatterMessageDetailsRepo, mediaRepository, fieldMetadataRepo, moduleRef, modelMetadataRepo, requestContextService, modelMetadataHelperService) {
41
+ constructor(entityManager, repo, chatterMessageDetailsRepo, mediaRepository, fieldMetadataRepo, moduleRef, modelMetadataRepo, requestContextService, modelMetadataHelperService, publisherFactory) {
41
42
  super(entityManager, repo, 'chatterMessage', 'solid-core', moduleRef);
42
43
  this.entityManager = entityManager;
43
44
  this.repo = repo;
@@ -48,6 +49,7 @@ let ChatterMessageService = ChatterMessageService_1 = class ChatterMessageServic
48
49
  this.modelMetadataRepo = modelMetadataRepo;
49
50
  this.requestContextService = requestContextService;
50
51
  this.modelMetadataHelperService = modelMetadataHelperService;
52
+ this.publisherFactory = publisherFactory;
51
53
  this._logger = new common_2.Logger(ChatterMessageService_1.name);
52
54
  }
53
55
  getCoModelService(coModelName) {
@@ -97,6 +99,73 @@ let ChatterMessageService = ChatterMessageService_1 = class ChatterMessageServic
97
99
  .map(v => Number(v.trim()))
98
100
  .filter(v => Number.isInteger(v) && v > 0);
99
101
  }
102
+ parseMessageBodyMentions(value) {
103
+ if (!value || typeof value !== 'string')
104
+ return [];
105
+ try {
106
+ const parsed = JSON.parse(value);
107
+ return Array.isArray(parsed) ? parsed : [];
108
+ }
109
+ catch {
110
+ return [];
111
+ }
112
+ }
113
+ renderMentionTokens(messageBody, mentions) {
114
+ return mentions.reduce((nextMessage, mention, index) => {
115
+ const username = mention.username;
116
+ if (!username)
117
+ return nextMessage;
118
+ return nextMessage.replace(new RegExp(`\\{\\{\\s*${index}\\s*\\}\\}`, 'g'), `@${username}`);
119
+ }, messageBody || '');
120
+ }
121
+ async publishChatterMentionNotifications(message, model) {
122
+ if (message.messageType !== chatter_message_constants_1.CHATTER_MESSAGE_TYPE.CUSTOM || message.messageSubType !== chatter_message_constants_1.CHATTER_MESSAGE_SUBTYPE.NOTE) {
123
+ return;
124
+ }
125
+ const mentions = this.parseMessageBodyMentions(message.messageBodyMentions);
126
+ const mentionUserIds = mentions
127
+ .map(mention => Number(mention.id))
128
+ .filter(id => Number.isInteger(id) && id > 0);
129
+ const uniqueMentionUserIds = Array.from(new Set(mentionUserIds));
130
+ if (uniqueMentionUserIds.length === 0)
131
+ return;
132
+ const activeUser = this.requestContextService.getActiveUser();
133
+ const payload = {
134
+ templateName: 'chatter-mention-notification',
135
+ mentions: mentions.map(mention => ({
136
+ id: Number(mention.id) || undefined,
137
+ username: mention.username,
138
+ displayName: mention.display_name || mention.displayName || mention.username,
139
+ })),
140
+ actor: {
141
+ id: activeUser?.sub,
142
+ username: activeUser?.username,
143
+ email: activeUser?.email,
144
+ },
145
+ noteBody: this.renderMentionTokens(message.messageBody, mentions),
146
+ entity: {
147
+ id: message.coModelEntityId,
148
+ modelName: model?.singularName || message.coModelName,
149
+ moduleName: model?.module?.name,
150
+ displayName: model?.displayName || message.coModelName,
151
+ userKey: message.modelUserKey,
152
+ },
153
+ parentEntity: 'chatterMessage',
154
+ parentEntityId: message.id,
155
+ };
156
+ try {
157
+ await this.publisherFactory.publish({
158
+ payload,
159
+ parentEntity: 'chatterMessage',
160
+ parentEntityId: message.id,
161
+ retryCount: 3,
162
+ retryInterval: 5000,
163
+ }, 'ChatterMentionNotificationEmailQueuePublisher');
164
+ }
165
+ catch (error) {
166
+ this._logger.error(`Failed to publish chatter mention notification email job: ${error.message}`, error.stack);
167
+ }
168
+ }
100
169
  async markCompleted(id) {
101
170
  const activeUser = this.requestContextService.getActiveUser();
102
171
  if (!activeUser) {
@@ -128,9 +197,10 @@ let ChatterMessageService = ChatterMessageService_1 = class ChatterMessageServic
128
197
  }
129
198
  const removeAttachmentIds = this.parseAttachmentIds(updateDto?.removeAttachmentIds);
130
199
  const hasMessageBody = typeof updateDto?.messageBody === 'string';
200
+ const hasMessageBodyMentions = typeof updateDto?.messageBodyMentions === 'string';
131
201
  const trimmedMessageBody = (updateDto?.messageBody ?? '').trim();
132
202
  const hasNewFiles = Array.isArray(files) && files.length > 0;
133
- if (!hasMessageBody && removeAttachmentIds.length === 0 && !hasNewFiles) {
203
+ if (!hasMessageBody && !hasMessageBodyMentions && removeAttachmentIds.length === 0 && !hasNewFiles) {
134
204
  throw new common_1.BadRequestException('No note changes submitted.');
135
205
  }
136
206
  if (hasMessageBody && trimmedMessageBody.length === 0) {
@@ -139,6 +209,13 @@ let ChatterMessageService = ChatterMessageService_1 = class ChatterMessageServic
139
209
  if (hasMessageBody) {
140
210
  message.messageBody = trimmedMessageBody;
141
211
  }
212
+ if (hasMessageBodyMentions) {
213
+ message.messageBodyMentions = updateDto.messageBodyMentions;
214
+ }
215
+ const model = await this.modelMetadataRepo.findOne({
216
+ where: { singularName: message.coModelName },
217
+ relations: { module: true }
218
+ });
142
219
  message.updatedBy = activeUser.sub;
143
220
  message.updatedAt = new Date();
144
221
  const savedMessage = await this.repo.save(message);
@@ -184,6 +261,7 @@ let ChatterMessageService = ChatterMessageService_1 = class ChatterMessageServic
184
261
  }
185
262
  }
186
263
  }
264
+ await this.publishChatterMentionNotifications(savedMessage, model);
187
265
  return savedMessage;
188
266
  }
189
267
  async postMessage(postDto, files = []) {
@@ -194,12 +272,13 @@ let ChatterMessageService = ChatterMessageService_1 = class ChatterMessageServic
194
272
  chatterMessage.messageSubType = postDto.messageSubType || chatter_message_constants_1.CHATTER_MESSAGE_SUBTYPE.CUSTOM;
195
273
  chatterMessage.status = postDto.status ?? chatter_message_constants_1.CHATTER_MESSAGE_STATUS.PENDING;
196
274
  chatterMessage.messageBody = postDto.messageBody;
275
+ chatterMessage.messageBodyMentions = postDto.messageBodyMentions;
197
276
  chatterMessage.coModelEntityId = postDto.coModelEntityId;
198
277
  chatterMessage.coModelName = coModelName;
199
278
  chatterMessage.modelUserKey = postDto.modelUserKey ?? null;
200
279
  const model = await this.modelMetadataRepo.findOne({
201
280
  where: { singularName: coModelName },
202
- relations: { userKeyField: true }
281
+ relations: { userKeyField: true, module: true }
203
282
  });
204
283
  chatterMessage.modelDisplayName = model?.displayName ?? null;
205
284
  this.stampMessageAuditFields(chatterMessage);
@@ -223,6 +302,7 @@ let ChatterMessageService = ChatterMessageService_1 = class ChatterMessageServic
223
302
  }
224
303
  }
225
304
  }
305
+ await this.publishChatterMentionNotifications(savedMessage, model);
226
306
  return savedMessage;
227
307
  }
228
308
  async postAuditMessageOnInsert(entity, modelName, messageQueue = false, userId) {
@@ -724,6 +804,7 @@ exports.ChatterMessageService = ChatterMessageService = ChatterMessageService_1
724
804
  core_1.ModuleRef,
725
805
  model_metadata_repository_1.ModelMetadataRepository,
726
806
  request_context_service_1.RequestContextService,
727
- model_metadata_helper_service_1.ModelMetadataHelperService])
807
+ model_metadata_helper_service_1.ModelMetadataHelperService,
808
+ publisher_factory_service_1.PublisherFactory])
728
809
  ], ChatterMessageService);
729
810
  //# sourceMappingURL=chatter-message.service.js.map