waha / src /apps /app_sdk /dto /app.dto.ts
NitinBot002's picture
Upload 384 files
4327358 verified
import { ChatWootAppConfig } from '@waha/apps/chatwoot/dto/config.dto';
import { Type } from 'class-transformer';
import { IsEnum, IsString, ValidateNested } from 'class-validator';
export type AllowedAppConfig = ChatWootAppConfig;
export enum AppName {
chatwoot = 'chatwoot',
}
export class App<T extends AllowedAppConfig = any> {
@IsString()
id: string;
@IsString()
session: string;
// App name (aka type)
@IsEnum(AppName)
app: AppName;
@ValidateNested()
@Type((options) => {
if (options && options.object && options.object.app) {
switch (options.object.app) {
case AppName.chatwoot:
return ChatWootAppConfig;
default:
return Object;
}
}
return Object;
})
config: T;
}
export class ChatWootAppDto extends App<ChatWootAppConfig> {
@Type(() => ChatWootAppConfig)
config: ChatWootAppConfig;
}
export type AppDto = ChatWootAppDto;