summary refs log tree commit diff
path: root/util/src/dtos/DmChannelDTO.ts
diff options
context:
space:
mode:
authorAlTech98 <altech123159@gmail.com>2021-09-16 21:33:36 +0200
committerAlTech98 <altech123159@gmail.com>2021-09-16 21:33:36 +0200
commit4f87fd742f25a25782afb20131200bcff81b50f7 (patch)
tree9588f6319e6b21eb4415e796a690a57b6e7ecb50 /util/src/dtos/DmChannelDTO.ts
parentDummy sticker-packs routes (diff)
downloadserver-4f87fd742f25a25782afb20131200bcff81b50f7.tar.xz
Implemented DMs and group DMs
Diffstat (limited to '')
-rw-r--r--util/src/dtos/DmChannelDTO.ts35
1 files changed, 35 insertions, 0 deletions
diff --git a/util/src/dtos/DmChannelDTO.ts b/util/src/dtos/DmChannelDTO.ts
new file mode 100644

index 00000000..8b7a18fd --- /dev/null +++ b/util/src/dtos/DmChannelDTO.ts
@@ -0,0 +1,35 @@ +import { MinimalPublicUserDTO } from "./UserDTO"; +import { Channel, PublicUserProjection, User } from "../entities"; + +export class DmChannelDTO { + icon: string | null; + id: string; + last_message_id: string | null; + name: string | null; + origin_channel_id: string | null; + owner_id?: string; + recipients: MinimalPublicUserDTO[]; + type: number; + + static async from(channel: Channel, excluded_recipients: string[] = [], origin_channel_id?: string) { + const obj = new DmChannelDTO() + obj.icon = channel.icon || null + obj.id = channel.id + obj.last_message_id = channel.last_message_id || null + obj.name = channel.name || null + obj.origin_channel_id = origin_channel_id || null + obj.owner_id = channel.owner_id + obj.type = channel.type + obj.recipients = (await Promise.all(channel.recipients!.filter(r => !excluded_recipients.includes(r.user_id)).map(async r => { + return await User.findOneOrFail({ where: { id: r.user_id }, select: PublicUserProjection }) + }))).map(u => new MinimalPublicUserDTO(u)) + return obj + } + + excludedRecipients(excluded_recipients: string[]): DmChannelDTO { + return { + ...this, + recipients: this.recipients.filter(r => !excluded_recipients.includes(r.id)) + } + } +} \ No newline at end of file