UNPKG

@rocket.chat/apps-engine

Version:

The engine code for the Rocket.Chat Apps which manages, runs, translates, coordinates and all of that.

105 lines (76 loc) 2.8 kB
import type { IRoom } from '@rocket.chat/apps-engine/definition/rooms/IRoom.ts'; import type { RoomType } from '@rocket.chat/apps-engine/definition/rooms/RoomType.ts'; import type { IUser } from '@rocket.chat/apps-engine/definition/users/IUser.ts'; import type { AppManager } from '@rocket.chat/apps-engine/server/AppManager.ts'; const PrivateManager = Symbol('RoomPrivateManager'); export class Room { public id: string | undefined; public displayName?: string; public slugifiedName: string | undefined; public type: RoomType | undefined; public creator: IUser | undefined; public isDefault?: boolean; public isReadOnly?: boolean; public displaySystemMessages?: boolean; public messageCount?: number; public createdAt?: Date; public updatedAt?: Date; public lastModifiedAt?: Date; public customFields?: { [key: string]: unknown }; public userIds?: Array<string>; private _USERNAMES: Promise<Array<string>> | undefined; private [PrivateManager]: AppManager | undefined; /** * @deprecated */ public get usernames(): Promise<Array<string>> { if (!this._USERNAMES) { this._USERNAMES = this[PrivateManager]?.getBridges().getInternalBridge().doGetUsernamesOfRoomById(this.id); } return this._USERNAMES || Promise.resolve([]); } public set usernames(usernames) {} public constructor(room: IRoom, manager: AppManager) { Object.assign(this, room); Object.defineProperty(this, PrivateManager, { configurable: false, enumerable: false, writable: false, value: manager, }); } get value(): object { return { id: this.id, displayName: this.displayName, slugifiedName: this.slugifiedName, type: this.type, creator: this.creator, isDefault: this.isDefault, isReadOnly: this.isReadOnly, displaySystemMessages: this.displaySystemMessages, messageCount: this.messageCount, createdAt: this.createdAt, updatedAt: this.updatedAt, lastModifiedAt: this.lastModifiedAt, customFields: this.customFields, userIds: this.userIds, }; } public async getUsernames(): Promise<Array<string>> { // Get usernames if (!this._USERNAMES) { this._USERNAMES = await this[PrivateManager]?.getBridges().getInternalBridge().doGetUsernamesOfRoomById(this.id); } return this._USERNAMES || []; } public toJSON() { return this.value; } public toString() { return this.value; } public valueOf() { return this.value; } }