@builder6/rooms 0.9.3 → 0.10.2

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 (46) hide show
  1. package/README.md +1 -0
  2. package/dist/rooms/app.controller.d.ts +10 -0
  3. package/dist/rooms/app.controller.js +73 -0
  4. package/dist/rooms/app.controller.js.map +1 -0
  5. package/dist/rooms/dtos/notifications.dto.d.ts +10 -0
  6. package/dist/rooms/dtos/notifications.dto.js +7 -0
  7. package/dist/rooms/dtos/notifications.dto.js.map +1 -0
  8. package/dist/rooms/dtos/room_members.dto.d.ts +7 -0
  9. package/dist/rooms/dtos/room_members.dto.js +52 -0
  10. package/dist/rooms/dtos/room_members.dto.js.map +1 -0
  11. package/dist/rooms/dtos/rooms.dto.d.ts +12 -0
  12. package/dist/rooms/dtos/rooms.dto.js +59 -0
  13. package/dist/rooms/dtos/rooms.dto.js.map +1 -0
  14. package/dist/rooms/notifications.service.d.ts +18 -0
  15. package/dist/rooms/notifications.service.js +66 -0
  16. package/dist/rooms/notifications.service.js.map +1 -0
  17. package/dist/rooms/rooms.controller.d.ts +31 -6
  18. package/dist/rooms/rooms.controller.js +119 -24
  19. package/dist/rooms/rooms.controller.js.map +1 -1
  20. package/dist/rooms/rooms.gateway.d.ts +3 -1
  21. package/dist/rooms/rooms.gateway.js +12 -5
  22. package/dist/rooms/rooms.gateway.js.map +1 -1
  23. package/dist/rooms/rooms.guard.d.ts +1 -3
  24. package/dist/rooms/rooms.guard.js +2 -5
  25. package/dist/rooms/rooms.guard.js.map +1 -1
  26. package/dist/rooms/rooms.module.js +7 -2
  27. package/dist/rooms/rooms.module.js.map +1 -1
  28. package/dist/rooms/rooms.moleculer.d.ts +11 -0
  29. package/dist/rooms/rooms.moleculer.js +91 -0
  30. package/dist/rooms/rooms.moleculer.js.map +1 -0
  31. package/dist/rooms/rooms.service.d.ts +35 -4
  32. package/dist/rooms/rooms.service.js +146 -8
  33. package/dist/rooms/rooms.service.js.map +1 -1
  34. package/package.json +12 -3
  35. package/src/rooms/app.controller.ts +63 -0
  36. package/src/rooms/dtos/notifications.dto.ts +10 -0
  37. package/src/rooms/dtos/room_members.dto.ts +29 -0
  38. package/src/rooms/dtos/rooms.dto.ts +51 -0
  39. package/src/rooms/notifications.service.ts +82 -0
  40. package/src/rooms/rooms.controller.ts +132 -16
  41. package/src/rooms/rooms.gateway.ts +17 -4
  42. package/src/rooms/rooms.guard.ts +1 -1
  43. package/src/rooms/rooms.module.ts +7 -2
  44. package/src/rooms/rooms.moleculer.ts +78 -0
  45. package/src/rooms/rooms.service.ts +210 -6
  46. package/.eslintrc.js +0 -25
package/README.md CHANGED
@@ -13,6 +13,7 @@ https://liveblocks.io/docs/api-reference/rest-api-endpoints#Room
13
13
 
14
14
  ```yml
15
15
  - b6_rooms
16
+ - b6_room_members
16
17
  - b6_threads
17
18
  - b6_comments
18
19
  - b6_notifications
@@ -0,0 +1,10 @@
1
+ import { Response } from 'express';
2
+ import { PagesService } from '@builder6/pages';
3
+ export declare class RoomsAppController {
4
+ private readonly pagesService;
5
+ constructor(pagesService: PagesService);
6
+ getRooms(roomId: string, query: Record<string, any>, req: Request, res: Response): Promise<{
7
+ error: string;
8
+ details: any;
9
+ }>;
10
+ }
@@ -0,0 +1,73 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var _a;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.RoomsAppController = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const core_1 = require("@builder6/core");
19
+ const pages_1 = require("@builder6/pages");
20
+ let RoomsAppController = class RoomsAppController {
21
+ constructor(pagesService) {
22
+ this.pagesService = pagesService;
23
+ }
24
+ async getRooms(roomId = 'test', query, req, res) {
25
+ const user = req['user'];
26
+ try {
27
+ const schema = {
28
+ type: 'rooms-provider',
29
+ baseUrl: '',
30
+ body: [
31
+ {
32
+ type: 'rooms-inbox-popover',
33
+ className: 'flex flex-col m-3 gap-3',
34
+ },
35
+ {
36
+ type: 'rooms-comments',
37
+ className: 'flex flex-col m-3 gap-3',
38
+ roomId: `${roomId}`,
39
+ },
40
+ ],
41
+ };
42
+ const data = {};
43
+ const env = {
44
+ assetUrls: [
45
+ 'https://unpkg.com/@steedos-widgets/liveblocks@6.3.12-beta.1/dist/assets.json',
46
+ ],
47
+ };
48
+ const rendered = await this.pagesService.renderAmis(schema, data, env, user);
49
+ res.status(200).send(rendered);
50
+ }
51
+ catch (error) {
52
+ console.log(error);
53
+ return { error: 'Rooms rendering failed', details: error.message };
54
+ }
55
+ }
56
+ };
57
+ __decorate([
58
+ (0, common_1.Get)(':roomId'),
59
+ __param(0, (0, common_1.Param)('roomId')),
60
+ __param(1, (0, common_1.Query)()),
61
+ __param(2, (0, common_1.Req)()),
62
+ __param(3, (0, common_1.Res)()),
63
+ __metadata("design:type", Function),
64
+ __metadata("design:paramtypes", [String, Object, Request, Object]),
65
+ __metadata("design:returntype", Promise)
66
+ ], RoomsAppController.prototype, "getRooms", null);
67
+ RoomsAppController = __decorate([
68
+ (0, common_1.Controller)('b6/rooms/'),
69
+ (0, common_1.UseGuards)(core_1.AuthGuard),
70
+ __metadata("design:paramtypes", [typeof (_a = typeof pages_1.PagesService !== "undefined" && pages_1.PagesService) === "function" ? _a : Object])
71
+ ], RoomsAppController);
72
+ exports.RoomsAppController = RoomsAppController;
73
+ //# sourceMappingURL=app.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.controller.js","sourceRoot":"","sources":["../../src/rooms/app.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAQwB;AAExB,yCAA2C;AAC3C,2CAA+C;AAKxC,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAA6B,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAGrD,AAAN,KAAK,CAAC,QAAQ,CACK,SAAiB,MAAM,EAC/B,KAA0B,EAC5B,GAAY,EACZ,GAAa;QAEpB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI;YACF,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE;oBACJ;wBACE,IAAI,EAAE,qBAAqB;wBAC3B,SAAS,EAAE,yBAAyB;qBACrC;oBACD;wBACE,IAAI,EAAE,gBAAgB;wBACtB,SAAS,EAAE,yBAAyB;wBACpC,MAAM,EAAE,GAAG,MAAM,EAAE;qBACpB;iBACF;aACF,CAAC;YACF,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG;gBACV,SAAS,EAAE;oBACT,8EAA8E;iBAC/E;aACF,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CACjD,MAAM,EACN,IAAI,EACJ,GAAG,EACH,IAAI,CACL,CAAC;YAEF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChC;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;SACpE;IACH,CAAC;CACF,CAAA;AA1CO;IADL,IAAA,YAAG,EAAC,SAAS,CAAC;IAEZ,WAAA,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAA;IACf,WAAA,IAAA,cAAK,GAAE,CAAA;IACP,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,YAAG,GAAE,CAAA;;qDADM,OAAO;;kDAsCpB;AA7CU,kBAAkB;IAF9B,IAAA,mBAAU,EAAC,WAAW,CAAC;IACvB,IAAA,kBAAS,EAAC,gBAAS,CAAC;yDAEwB,oBAAY,oBAAZ,oBAAY;GAD5C,kBAAkB,CA8C9B;AA9CY,gDAAkB"}
@@ -0,0 +1,10 @@
1
+ export declare class NotificationDTO {
2
+ _id: string;
3
+ id: string;
4
+ userId: string;
5
+ kind: string;
6
+ notifiedAt?: Date;
7
+ readAt?: Date;
8
+ roomId: string;
9
+ threadId: string;
10
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotificationDTO = void 0;
4
+ class NotificationDTO {
5
+ }
6
+ exports.NotificationDTO = NotificationDTO;
7
+ //# sourceMappingURL=notifications.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.dto.js","sourceRoot":"","sources":["../../../src/rooms/dtos/notifications.dto.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAe;CAS3B;AATD,0CASC"}
@@ -0,0 +1,7 @@
1
+ export declare class RoomMemberDTO {
2
+ _id?: string;
3
+ userId: string;
4
+ roles?: string[];
5
+ notifications?: string[];
6
+ scopes?: string[];
7
+ }
@@ -0,0 +1,52 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RoomMemberDTO = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const rooms_dto_1 = require("./rooms.dto");
15
+ class RoomMemberDTO {
16
+ constructor() {
17
+ this.roles = [];
18
+ this.notifications = ['replies', 'mentions'];
19
+ this.scopes = rooms_dto_1.FULL_ACCESS;
20
+ }
21
+ }
22
+ __decorate([
23
+ (0, swagger_1.ApiProperty)(),
24
+ __metadata("design:type", String)
25
+ ], RoomMemberDTO.prototype, "_id", void 0);
26
+ __decorate([
27
+ (0, swagger_1.ApiProperty)(),
28
+ __metadata("design:type", String)
29
+ ], RoomMemberDTO.prototype, "userId", void 0);
30
+ __decorate([
31
+ (0, swagger_1.ApiProperty)({
32
+ enum: ['owner'],
33
+ default: [],
34
+ }),
35
+ __metadata("design:type", Array)
36
+ ], RoomMemberDTO.prototype, "roles", void 0);
37
+ __decorate([
38
+ (0, swagger_1.ApiProperty)({
39
+ enum: ['all', 'replies', 'mentions'],
40
+ default: ['replies', 'mentions'],
41
+ }),
42
+ __metadata("design:type", Array)
43
+ ], RoomMemberDTO.prototype, "notifications", void 0);
44
+ __decorate([
45
+ (0, swagger_1.ApiProperty)({
46
+ enum: ['room:read', 'room:write'],
47
+ default: rooms_dto_1.FULL_ACCESS,
48
+ }),
49
+ __metadata("design:type", Array)
50
+ ], RoomMemberDTO.prototype, "scopes", void 0);
51
+ exports.RoomMemberDTO = RoomMemberDTO;
52
+ //# sourceMappingURL=room_members.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"room_members.dto.js","sourceRoot":"","sources":["../../../src/rooms/dtos/room_members.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,2CAA0C;AAE1C,MAAa,aAAa;IAA1B;QAYE,UAAK,GAAc,EAAE,CAAC;QAMtB,kBAAa,GAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAMnD,WAAM,GAAc,uBAAW,CAAC;IAClC,CAAC;CAAA;AAxBC;IAAC,IAAA,qBAAW,GAAE;;0CACD;AAEb;IAAC,IAAA,qBAAW,GAAE;;6CACC;AAGf;IAAC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,OAAO,EAAE,EAAE;KACZ,CAAC;;4CACoB;AAEtB;IAAC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC;QACpC,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KACjC,CAAC;;oDACiD;AAEnD;IAAC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;QACjC,OAAO,EAAE,uBAAW;KACrB,CAAC;;6CAC8B;AAxBlC,sCAyBC"}
@@ -0,0 +1,12 @@
1
+ import { RoomMemberDTO } from './room_members.dto';
2
+ export declare const READ_ACCESS: string[];
3
+ export declare const FULL_ACCESS: string[];
4
+ export declare class RoomDTO {
5
+ _id?: string;
6
+ name: string;
7
+ description?: string;
8
+ membershipType?: string;
9
+ members?: RoomMemberDTO[];
10
+ defaultScopes?: string[];
11
+ defaultNotifications?: string[];
12
+ }
@@ -0,0 +1,59 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RoomDTO = exports.FULL_ACCESS = exports.READ_ACCESS = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ exports.READ_ACCESS = [
15
+ 'room:read',
16
+ 'room:presence:write',
17
+ 'comments:read',
18
+ ];
19
+ exports.FULL_ACCESS = ['room:write', 'comments:write'];
20
+ class RoomDTO {
21
+ constructor() {
22
+ this.defaultScopes = exports.FULL_ACCESS;
23
+ }
24
+ }
25
+ __decorate([
26
+ (0, swagger_1.ApiProperty)(),
27
+ __metadata("design:type", String)
28
+ ], RoomDTO.prototype, "_id", void 0);
29
+ __decorate([
30
+ (0, swagger_1.ApiProperty)(),
31
+ __metadata("design:type", String)
32
+ ], RoomDTO.prototype, "name", void 0);
33
+ __decorate([
34
+ (0, swagger_1.ApiProperty)(),
35
+ __metadata("design:type", String)
36
+ ], RoomDTO.prototype, "description", void 0);
37
+ __decorate([
38
+ (0, swagger_1.ApiProperty)({
39
+ enum: ['standard', 'private', 'shared'],
40
+ default: 'standard',
41
+ }),
42
+ __metadata("design:type", String)
43
+ ], RoomDTO.prototype, "membershipType", void 0);
44
+ __decorate([
45
+ (0, swagger_1.ApiProperty)({
46
+ enum: ['room:read', 'room:write'],
47
+ default: exports.FULL_ACCESS,
48
+ }),
49
+ __metadata("design:type", Array)
50
+ ], RoomDTO.prototype, "defaultScopes", void 0);
51
+ __decorate([
52
+ (0, swagger_1.ApiProperty)({
53
+ enum: ['all', 'replies', 'mentions'],
54
+ default: ['replies', 'mentions'],
55
+ }),
56
+ __metadata("design:type", Array)
57
+ ], RoomDTO.prototype, "defaultNotifications", void 0);
58
+ exports.RoomDTO = RoomDTO;
59
+ //# sourceMappingURL=rooms.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rooms.dto.js","sourceRoot":"","sources":["../../../src/rooms/dtos/rooms.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAQjC,QAAA,WAAW,GAAG;IACzB,WAAW;IACX,qBAAqB;IACrB,eAAe;CAChB,CAAC;AAMW,QAAA,WAAW,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAE5D,MAAa,OAAO;IAApB;QAuBE,kBAAa,GAAc,mBAAW,CAAC;IAOzC,CAAC;CAAA;AA7BC;IAAC,IAAA,qBAAW,GAAE;;oCACD;AAEb;IAAC,IAAA,qBAAW,GAAE;;qCACD;AAEb;IAAC,IAAA,qBAAW,GAAE;;4CACO;AAGrB;IAAC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC;QACvC,OAAO,EAAE,UAAU;KACpB,CAAC;;+CACsB;AAIxB;IAAC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;QACjC,OAAO,EAAE,mBAAW;KACrB,CAAC;;8CACqC;AAEvC;IAAC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC;QACpC,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KACjC,CAAC;;qDAC8B;AA7BlC,0BA8BC"}
@@ -0,0 +1,18 @@
1
+ import { MongodbService } from '@builder6/core';
2
+ import { ServiceBroker } from 'moleculer';
3
+ import { NotificationDTO } from './dtos/notifications.dto';
4
+ export declare class NotificationsService {
5
+ private mongodbService;
6
+ private readonly broker;
7
+ constructor(mongodbService: MongodbService, broker: ServiceBroker);
8
+ createThreadNotification({ _id, id, userId, kind, notifiedAt, readAt, roomId, threadId, }: NotificationDTO): Promise<any>;
9
+ findNotifications({ userId, unread, limit, sinceDate, roomId, threadId, }: {
10
+ userId: string;
11
+ unread?: boolean;
12
+ limit?: number;
13
+ sinceDate?: Date;
14
+ roomId?: string;
15
+ threadId?: string;
16
+ }): Promise<any>;
17
+ markAsRead(roomId: string, userId: string, notificationIds: string[]): Promise<any>;
18
+ }
@@ -0,0 +1,66 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.NotificationsService = void 0;
16
+ const core_1 = require("@builder6/core");
17
+ const moleculer_1 = require("@builder6/moleculer");
18
+ const common_1 = require("@nestjs/common");
19
+ const moleculer_2 = require("moleculer");
20
+ let NotificationsService = class NotificationsService {
21
+ constructor(mongodbService, broker) {
22
+ this.mongodbService = mongodbService;
23
+ this.broker = broker;
24
+ }
25
+ async createThreadNotification({ _id, id, userId, kind = 'thread', notifiedAt, readAt, roomId, threadId, }) {
26
+ return this.mongodbService.insertOne('b6_notifications', {
27
+ _id,
28
+ id,
29
+ userId,
30
+ kind,
31
+ notifiedAt,
32
+ readAt,
33
+ roomId,
34
+ threadId,
35
+ });
36
+ }
37
+ async findNotifications({ userId, unread, limit, sinceDate, roomId, threadId, }) {
38
+ const queryOptions = { userId };
39
+ if (unread)
40
+ queryOptions.readAt = null;
41
+ if (sinceDate) {
42
+ queryOptions.notifiedAt = { $gt: sinceDate };
43
+ }
44
+ if (roomId)
45
+ queryOptions.roomId = roomId;
46
+ if (threadId)
47
+ queryOptions.threadId = threadId;
48
+ const collection = (await this.mongodbService.getCollection('b6_notifications'));
49
+ const query = collection.find(queryOptions).sort({ notifiedAt: 1 });
50
+ if (limit)
51
+ query.limit(limit);
52
+ return query.toArray();
53
+ }
54
+ async markAsRead(roomId, userId, notificationIds) {
55
+ const collection = (await this.mongodbService.getCollection('b6_notifications'));
56
+ return collection.updateMany({ _id: { $in: notificationIds }, roomId, userId }, { $set: { readAt: new Date() } });
57
+ }
58
+ };
59
+ NotificationsService = __decorate([
60
+ (0, common_1.Injectable)(),
61
+ __param(1, (0, moleculer_1.InjectBroker)()),
62
+ __metadata("design:paramtypes", [core_1.MongodbService,
63
+ moleculer_2.ServiceBroker])
64
+ ], NotificationsService);
65
+ exports.NotificationsService = NotificationsService;
66
+ //# sourceMappingURL=notifications.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.service.js","sourceRoot":"","sources":["../../src/rooms/notifications.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAAgD;AAChD,mDAAmD;AACnD,2CAA4C;AAC5C,yCAA0C;AAInC,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YACU,cAA8B,EACL,MAAqB;QAD9C,mBAAc,GAAd,cAAc,CAAgB;QACL,WAAM,GAAN,MAAM,CAAe;IACrD,CAAC;IAEJ,KAAK,CAAC,wBAAwB,CAAC,EAC7B,GAAG,EACH,EAAE,EACF,MAAM,EACN,IAAI,GAAG,QAAQ,EACf,UAAU,EACV,MAAM,EACN,MAAM,EACN,QAAQ,GACQ;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,kBAAkB,EAAE;YACvD,GAAG;YACH,EAAE;YACF,MAAM;YACN,IAAI;YACJ,UAAU;YACV,MAAM;YACN,MAAM;YACN,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,EACtB,MAAM,EACN,MAAM,EACN,KAAK,EACL,SAAS,EACT,MAAM,EACN,QAAQ,GAQT;QACC,MAAM,YAAY,GAAG,EAAE,MAAM,EAO5B,CAAC;QACF,IAAI,MAAM;YAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;QACvC,IAAI,SAAS,EAAE;YACb,YAAY,CAAC,UAAU,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;SAC9C;QACD,IAAI,MAAM;YAAE,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;QACzC,IAAI,QAAQ;YAAE,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC/C,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CACzD,kBAAkB,CACnB,CAAQ,CAAC;QACV,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACpE,IAAI,KAAK;YAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,MAAc,EAAE,eAAyB;QACxE,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CACzD,kBAAkB,CACnB,CAAQ,CAAC;QACV,OAAO,UAAU,CAAC,UAAU,CAC1B,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EACjD,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,CACjC,CAAC;IACJ,CAAC;CACF,CAAA;AA1EY,oBAAoB;IADhC,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,wBAAY,GAAE,CAAA;qCADS,qBAAc;QACG,yBAAa;GAH7C,oBAAoB,CA0EhC;AA1EY,oDAAoB"}
@@ -1,14 +1,16 @@
1
+ import { FilesService } from '@builder6/core';
1
2
  import { RoomsService } from './rooms.service';
2
3
  import { JwtService } from '@nestjs/jwt';
3
4
  import { Request } from 'express';
4
- import { FilesService } from '@builder6/core';
5
5
  import { RoomsGateway } from './rooms.gateway';
6
+ import { NotificationsService } from './notifications.service';
6
7
  export declare class RoomsController {
7
8
  private roomsService;
8
9
  private filesService;
9
10
  private jwtService;
10
11
  private roomsGateway;
11
- constructor(roomsService: RoomsService, filesService: FilesService, jwtService: JwtService, roomsGateway: RoomsGateway);
12
+ private notificationsService;
13
+ constructor(roomsService: RoomsService, filesService: FilesService, jwtService: JwtService, roomsGateway: RoomsGateway, notificationsService: NotificationsService);
12
14
  getToken(body: {
13
15
  room: string;
14
16
  permission: string;
@@ -17,9 +19,9 @@ export declare class RoomsController {
17
19
  }>;
18
20
  getUsers(userIds: string | string[]): Promise<any[]>;
19
21
  searchUsers(req: Request, keyword: string, roomdId: string): Promise<string[]>;
20
- getThreads(roomId: string): Promise<{
22
+ getThreads(req: Request, roomId: string): Promise<{
21
23
  data: any;
22
- inboxNotifications: any[];
24
+ inboxNotifications: any;
23
25
  meta: {
24
26
  nextCursor: any;
25
27
  requestedAt: string;
@@ -30,9 +32,9 @@ export declare class RoomsController {
30
32
  deletedThreads: any[];
31
33
  deletedInboxNotifications: any[];
32
34
  }>;
33
- getThreadsDelta(roomId: string, since: string): Promise<{
35
+ getThreadsDelta(req: Request, roomId: string, since: string): Promise<{
34
36
  data: any;
35
- inboxNotifications: any[];
37
+ inboxNotifications: any;
36
38
  meta: {
37
39
  nextCursor: any;
38
40
  requestedAt: string;
@@ -46,12 +48,35 @@ export declare class RoomsController {
46
48
  createThread(req: Request, roomId: string, record: Record<string, any>): Promise<any>;
47
49
  threadWithNotification(req: Request, roomId: string, threadId: string): Promise<{
48
50
  thread: any;
51
+ inboxNotification: any;
49
52
  }>;
50
53
  threadMarkasResolved(req: Request, roomId: string, threadId: string): Promise<any>;
51
54
  threadMarkasUnResolved(req: Request, roomId: string, threadId: string): Promise<any>;
52
55
  createComment(req: Request, roomId: string, threadId: string, record: Record<string, any>): Promise<any>;
53
56
  updateComment(req: Request, roomId: string, threadId: string, commentId: string, record: Record<string, any>): Promise<any>;
54
57
  deleteComment(req: Request, roomId: string, threadId: string, commentId: string): Promise<{}>;
58
+ getInboxNotifications(req: Request, unread: string, limit: string): Promise<{
59
+ inboxNotifications: any;
60
+ threads: any[];
61
+ meta: {
62
+ nextCursor: any;
63
+ requestedAt: Date;
64
+ };
65
+ deletedThreads: any[];
66
+ deletedInboxNotifications: any[];
67
+ }>;
68
+ getInboxNotificationsSince(req: Request, since: string): Promise<{
69
+ inboxNotifications: any;
70
+ threads: any[];
71
+ meta: {
72
+ requestedAt: Date;
73
+ };
74
+ deletedThreads: any[];
75
+ deletedInboxNotifications: any[];
76
+ }>;
77
+ read(req: Request, roomId: string, inboxNotificationIds: string[]): Promise<{
78
+ data: any;
79
+ }>;
55
80
  presignedUrls(attachmentIds: string[]): Promise<{
56
81
  urls: string[];
57
82
  }>;