86 lines
1.4 KiB
TypeScript
86 lines
1.4 KiB
TypeScript
import { IsArray, IsBoolean, IsIn, IsOptional, IsString, MinLength } from 'class-validator';
|
|
|
|
export class CreateChatRoomDto {
|
|
@IsString()
|
|
@MinLength(1)
|
|
name!: string;
|
|
|
|
@IsOptional()
|
|
@IsArray()
|
|
@IsString({ each: true })
|
|
memberUserIds?: string[];
|
|
}
|
|
|
|
export class UpdateChatRoomDto {
|
|
@IsOptional()
|
|
@IsString()
|
|
@MinLength(1)
|
|
name?: string;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
notificationsMuted?: boolean;
|
|
}
|
|
|
|
export class SendChatMessageDto {
|
|
@IsString()
|
|
@IsIn(['TEXT', 'IMAGE', 'AUDIO', 'VOICE', 'FILE', 'EMOJI', 'POLL'])
|
|
type!: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
content?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
replyToId?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
storageKey?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
mimeType?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
metadataJson?: string;
|
|
|
|
@IsOptional()
|
|
poll?: {
|
|
question: string;
|
|
options: string[];
|
|
allowsMultiple?: boolean;
|
|
isAnonymous?: boolean;
|
|
};
|
|
}
|
|
|
|
export class VotePollDto {
|
|
@IsArray()
|
|
@IsString({ each: true })
|
|
optionIds!: string[];
|
|
}
|
|
|
|
export class SetRoomNotificationsMutedDto {
|
|
@IsBoolean()
|
|
muted!: boolean;
|
|
}
|
|
|
|
export class AddChatRoomMemberDto {
|
|
@IsString()
|
|
memberUserId!: string;
|
|
}
|
|
|
|
export class EditChatMessageDto {
|
|
@IsString()
|
|
@MinLength(1)
|
|
content!: string;
|
|
}
|
|
|
|
export class MarkRoomReadDto {
|
|
@IsOptional()
|
|
@IsString()
|
|
lastMessageId?: string;
|
|
}
|