import { Body, Controller, Post, Req, UseGuards } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { PushService } from './push.service'; import { RegisterDeviceDto, UnregisterDeviceDto } from './dto/register-device.dto'; // Import the util directly (not via chat.service) to keep the module graph acyclic. import { resolveChatCaller } from '../chat/caller.util'; import { AuthenticatedRequest } from '../auth/authenticated-request'; import { GuestJwtPayload } from '../auth/guest-auth.service'; type PushRequest = AuthenticatedRequest & { user?: AuthenticatedRequest['user'] | GuestJwtPayload; }; @Controller('push') export class PushController { constructor(private readonly push: PushService) {} @Post('register') @UseGuards(AuthGuard(['authentik', 'team', 'guest'])) register(@Body() dto: RegisterDeviceDto, @Req() req: PushRequest) { return this.push.register(dto.token, dto.platform, resolveChatCaller(req.user!)); } @Post('unregister') @UseGuards(AuthGuard(['authentik', 'team', 'guest'])) unregister(@Body() dto: UnregisterDeviceDto) { return this.push.unregister(dto.token); } }