summary refs log tree commit diff
path: root/util/src/dtos/DmChannelDTO.ts
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-09-19 18:59:54 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-09-19 18:59:54 +0200
commite6839719a6e40bae0f75286bf677e787b5ec840c (patch)
tree6f67e1b10fdce54583b261df51fe5c2eb88a847b /util/src/dtos/DmChannelDTO.ts
parent:bug: fix bundle debug (diff)
parentMerge pull request #377 from TheArcaneBrony/request-logging (diff)
downloadserver-e6839719a6e40bae0f75286bf677e787b5ec840c.tar.xz
Merge branch 'master' of https://github.com/fosscord/fosscord-api
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