@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.
- package/dist/constants/media-file-types.d.ts +5 -0
- package/dist/constants/media-file-types.d.ts.map +1 -0
- package/dist/constants/media-file-types.js +27 -0
- package/dist/constants/media-file-types.js.map +1 -0
- package/dist/controllers/media.controller.d.ts +14 -11
- package/dist/controllers/media.controller.d.ts.map +1 -1
- package/dist/controllers/media.controller.js +72 -33
- package/dist/controllers/media.controller.js.map +1 -1
- package/dist/dtos/create-chatter-message.dto.d.ts +1 -0
- package/dist/dtos/create-chatter-message.dto.d.ts.map +1 -1
- package/dist/dtos/create-chatter-message.dto.js +7 -1
- package/dist/dtos/create-chatter-message.dto.js.map +1 -1
- package/dist/dtos/create-media.dto.d.ts +1 -0
- package/dist/dtos/create-media.dto.d.ts.map +1 -1
- package/dist/dtos/create-media.dto.js +7 -1
- package/dist/dtos/create-media.dto.js.map +1 -1
- package/dist/dtos/post-chatter-message.dto.d.ts +1 -0
- package/dist/dtos/post-chatter-message.dto.d.ts.map +1 -1
- package/dist/dtos/post-chatter-message.dto.js +6 -1
- package/dist/dtos/post-chatter-message.dto.js.map +1 -1
- package/dist/dtos/update-chatter-message.dto.d.ts +1 -0
- package/dist/dtos/update-chatter-message.dto.d.ts.map +1 -1
- package/dist/dtos/update-chatter-message.dto.js +8 -1
- package/dist/dtos/update-chatter-message.dto.js.map +1 -1
- package/dist/dtos/update-chatter-note-message.dto.d.ts +1 -0
- package/dist/dtos/update-chatter-note-message.dto.d.ts.map +1 -1
- package/dist/dtos/update-chatter-note-message.dto.js +7 -1
- package/dist/dtos/update-chatter-note-message.dto.js.map +1 -1
- package/dist/dtos/update-media.dto.d.ts +1 -0
- package/dist/dtos/update-media.dto.d.ts.map +1 -1
- package/dist/dtos/update-media.dto.js +7 -1
- package/dist/dtos/update-media.dto.js.map +1 -1
- package/dist/entities/chatter-message.entity.d.ts +1 -0
- package/dist/entities/chatter-message.entity.d.ts.map +1 -1
- package/dist/entities/chatter-message.entity.js +5 -1
- package/dist/entities/chatter-message.entity.js.map +1 -1
- package/dist/entities/media.entity.d.ts +1 -0
- package/dist/entities/media.entity.d.ts.map +1 -1
- package/dist/entities/media.entity.js +9 -1
- package/dist/entities/media.entity.js.map +1 -1
- package/dist/enums/auth-type.enum.d.ts +2 -1
- package/dist/enums/auth-type.enum.d.ts.map +1 -1
- package/dist/enums/auth-type.enum.js +1 -0
- package/dist/enums/auth-type.enum.js.map +1 -1
- package/dist/guards/authentication.guard.d.ts +3 -1
- package/dist/guards/authentication.guard.d.ts.map +1 -1
- package/dist/guards/authentication.guard.js +5 -1
- package/dist/guards/authentication.guard.js.map +1 -1
- package/dist/guards/media-signed-url.guard.d.ts +9 -0
- package/dist/guards/media-signed-url.guard.d.ts.map +1 -0
- package/dist/guards/media-signed-url.guard.js +49 -0
- package/dist/guards/media-signed-url.guard.js.map +1 -0
- package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +10 -13
- package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
- package/dist/interfaces/chatter-mention-notification.interface.d.ts +27 -0
- package/dist/interfaces/chatter-mention-notification.interface.d.ts.map +1 -0
- package/dist/interfaces/chatter-mention-notification.interface.js +3 -0
- package/dist/interfaces/chatter-mention-notification.interface.js.map +1 -0
- package/dist/jobs/chatter-mention-notification-email-queue-handler.service.d.ts +17 -0
- package/dist/jobs/chatter-mention-notification-email-queue-handler.service.d.ts.map +1 -0
- package/dist/jobs/chatter-mention-notification-email-queue-handler.service.js +106 -0
- package/dist/jobs/chatter-mention-notification-email-queue-handler.service.js.map +1 -0
- package/dist/jobs/database/chatter-mention-notification-email-publisher-database.service.d.ts +12 -0
- package/dist/jobs/database/chatter-mention-notification-email-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/chatter-mention-notification-email-publisher-database.service.js +39 -0
- package/dist/jobs/database/chatter-mention-notification-email-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/chatter-mention-notification-email-queue-options-database.d.ts +8 -0
- package/dist/jobs/database/chatter-mention-notification-email-queue-options-database.d.ts.map +1 -0
- package/dist/jobs/database/chatter-mention-notification-email-queue-options-database.js +10 -0
- package/dist/jobs/database/chatter-mention-notification-email-queue-options-database.js.map +1 -0
- package/dist/jobs/database/chatter-mention-notification-email-subscriber-database.service.d.ts +20 -0
- package/dist/jobs/database/chatter-mention-notification-email-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/chatter-mention-notification-email-subscriber-database.service.js +48 -0
- package/dist/jobs/database/chatter-mention-notification-email-subscriber-database.service.js.map +1 -0
- package/dist/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.d.ts +12 -0
- package/dist/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.d.ts.map +1 -0
- package/dist/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.js +39 -0
- package/dist/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.js.map +1 -0
- package/dist/jobs/rabbitmq/chatter-mention-notification-email-queue-options.d.ts +8 -0
- package/dist/jobs/rabbitmq/chatter-mention-notification-email-queue-options.d.ts.map +1 -0
- package/dist/jobs/rabbitmq/chatter-mention-notification-email-queue-options.js +10 -0
- package/dist/jobs/rabbitmq/chatter-mention-notification-email-queue-options.js.map +1 -0
- package/dist/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.d.ts +18 -0
- package/dist/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.d.ts.map +1 -0
- package/dist/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.js +45 -0
- package/dist/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.js.map +1 -0
- package/dist/jobs/redis/chatter-mention-notification-email-publisher-redis.service.d.ts +12 -0
- package/dist/jobs/redis/chatter-mention-notification-email-publisher-redis.service.d.ts.map +1 -0
- package/dist/jobs/redis/chatter-mention-notification-email-publisher-redis.service.js +39 -0
- package/dist/jobs/redis/chatter-mention-notification-email-publisher-redis.service.js.map +1 -0
- package/dist/jobs/redis/chatter-mention-notification-email-queue-options-redis.d.ts +8 -0
- package/dist/jobs/redis/chatter-mention-notification-email-queue-options-redis.d.ts.map +1 -0
- package/dist/jobs/redis/chatter-mention-notification-email-queue-options-redis.js +10 -0
- package/dist/jobs/redis/chatter-mention-notification-email-queue-options-redis.js.map +1 -0
- package/dist/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.d.ts +18 -0
- package/dist/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.d.ts.map +1 -0
- package/dist/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.js +45 -0
- package/dist/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.js.map +1 -0
- package/dist/repository/media.repository.d.ts.map +1 -1
- package/dist/repository/media.repository.js +2 -0
- package/dist/repository/media.repository.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +109 -3
- package/dist/services/chatter-message.service.d.ts +7 -1
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +85 -4
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/media-download-url.service.d.ts +21 -0
- package/dist/services/media-download-url.service.d.ts.map +1 -0
- package/dist/services/media-download-url.service.js +67 -0
- package/dist/services/media-download-url.service.js.map +1 -0
- package/dist/services/media-storage.utils.d.ts +27 -0
- package/dist/services/media-storage.utils.d.ts.map +1 -0
- package/dist/services/media-storage.utils.js +82 -0
- package/dist/services/media-storage.utils.js.map +1 -0
- package/dist/services/media.service.d.ts +20 -4
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/media.service.js +157 -55
- package/dist/services/media.service.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +4 -4
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +37 -63
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +5 -5
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js +37 -38
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +25 -1
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/audit.subscriber.js +1 -1
- package/dist/subscribers/audit.subscriber.js.map +1 -1
- package/package.json +1 -1
- package/src/constants/media-file-types.ts +44 -0
- package/src/controllers/media.controller.ts +44 -24
- package/src/dtos/create-chatter-message.dto.ts +5 -0
- package/src/dtos/create-media.dto.ts +8 -3
- package/src/dtos/post-chatter-message.dto.ts +4 -0
- package/src/dtos/update-chatter-message.dto.ts +6 -0
- package/src/dtos/update-chatter-note-message.dto.ts +5 -0
- package/src/dtos/update-media.dto.ts +8 -3
- package/src/entities/chatter-message.entity.ts +3 -0
- package/src/entities/media.entity.ts +4 -1
- package/src/enums/auth-type.enum.ts +1 -0
- package/src/guards/authentication.guard.ts +3 -0
- package/src/guards/media-signed-url.guard.ts +41 -0
- package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +12 -24
- package/src/interfaces/chatter-mention-notification.interface.ts +29 -0
- package/src/jobs/chatter-mention-notification-email-queue-handler.service.ts +114 -0
- package/src/jobs/database/chatter-mention-notification-email-publisher-database.service.ts +23 -0
- package/src/jobs/database/chatter-mention-notification-email-queue-options-database.ts +9 -0
- package/src/jobs/database/chatter-mention-notification-email-subscriber-database.service.ts +32 -0
- package/src/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.ts +23 -0
- package/src/jobs/rabbitmq/chatter-mention-notification-email-queue-options.ts +9 -0
- package/src/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.ts +30 -0
- package/src/jobs/redis/chatter-mention-notification-email-publisher-redis.service.ts +23 -0
- package/src/jobs/redis/chatter-mention-notification-email-queue-options-redis.ts +9 -0
- package/src/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.ts +30 -0
- package/src/repository/media.repository.ts +2 -0
- package/src/seeders/seed-data/email-templates/chatter-mention-notification.handlebars.html +200 -0
- package/src/seeders/seed-data/solid-core-metadata.json +109 -3
- package/src/services/chatter-message.service.ts +97 -2
- package/src/services/media-download-url.service.ts +67 -0
- package/src/services/media-storage.utils.ts +79 -0
- package/src/services/media.service.ts +189 -59
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +52 -76
- package/src/services/mediaStorageProviders/file-storage-provider.ts +44 -48
- package/src/solid-core.module.ts +35 -2
- 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;
|
|
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;
|
|
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": "
|
|
8625
|
+
"inlineCreateAutoSave": "false",
|
|
8599
8626
|
"renderModeCheckboxPreprocessor": "MenuItemMetadataRolesFormFieldPreprocessor",
|
|
8600
|
-
"inlineCreate": "
|
|
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":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAY,aAAa,EAAsB,MAAM,SAAS,CAAC;AAKtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAEvF,OAAO,EAAE,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AACpG,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
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
|