Spaces:
Runtime error
Runtime error
| import { | |
| BadRequestException, | |
| Body, | |
| Controller, | |
| Get, | |
| Param, | |
| Post, | |
| } from '@nestjs/common'; | |
| import { ApiOperation, ApiSecurity, ApiTags } from '@nestjs/swagger'; | |
| import { ChatIdApiParam } from '@waha/nestjs/params/ChatIdApiParam'; | |
| import { | |
| SessionApiParam, | |
| WorkingSessionParam, | |
| } from '@waha/nestjs/params/SessionApiParam'; | |
| import { SessionManager } from '../core/abc/manager.abc'; | |
| import { WhatsappSession } from '../core/abc/session.abc'; | |
| import { WAHAPresenceStatus } from '../structures/enums.dto'; | |
| import { | |
| WAHAChatPresences, | |
| WAHASessionPresence, | |
| } from '../structures/presence.dto'; | |
| ('api_key') | |
| ('api/:session/presence') | |
| ('✅ Presence') | |
| export class PresenceController { | |
| constructor(private manager: SessionManager) {} | |
| ('') | |
| ({ summary: 'Set session presence' }) | |
| setPresence( | |
| session: WhatsappSession, | |
| () request: WAHASessionPresence, | |
| ) { | |
| // Validate request | |
| const presencesWithoutChatId = [ | |
| WAHAPresenceStatus.ONLINE, | |
| WAHAPresenceStatus.OFFLINE, | |
| ]; | |
| const requiresNoChatId = presencesWithoutChatId.includes(request.presence); | |
| const requiresChatId = !requiresNoChatId; | |
| if (requiresNoChatId && request.chatId) { | |
| const msg = { | |
| detail: `'${request.presence}' presence works on the global scope and doesn't require 'chatId' field.`, | |
| }; | |
| throw new BadRequestException(msg); | |
| } else if (requiresChatId && !request.chatId) { | |
| const msg = { | |
| detail: `'${request.presence}' presence requires 'chatId' field.`, | |
| }; | |
| throw new BadRequestException(msg); | |
| } | |
| return session.setPresence(request.presence, request.chatId); | |
| } | |
| ('') | |
| ({ summary: 'Get all subscribed presence information.' }) | |
| getPresenceAll( | |
| session: WhatsappSession, | |
| ): Promise<WAHAChatPresences[]> { | |
| return session.getPresences(); | |
| } | |
| (':chatId') | |
| ({ | |
| summary: | |
| "Get the presence for the chat id. If it hasn't been subscribed - it also subscribes to it.", | |
| }) | |
| getPresence( | |
| session: WhatsappSession, | |
| ('chatId') chatId: string, | |
| ): Promise<WAHAChatPresences> { | |
| return session.getPresence(chatId); | |
| } | |
| (':chatId/subscribe') | |
| ({ | |
| summary: 'Subscribe to presence events for the chat.', | |
| }) | |
| subscribe( | |
| session: WhatsappSession, | |
| ('chatId') chatId: string, | |
| ): Promise<void> { | |
| return session.subscribePresence(chatId); | |
| } | |
| } | |