package de.w665.testing.controller; import de.w665.testing.dto.AcceptInviteCommand; import de.w665.testing.dto.DeclineInviteCommand; import de.w665.testing.dto.InviteCommand; import de.w665.testing.service.InviteService; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.Payload; import org.springframework.stereotype.Controller; import java.security.Principal; @Controller public class WebSocketInviteController { private final InviteService inviteService; public WebSocketInviteController(InviteService inviteService) { this.inviteService = inviteService; } @MessageMapping("/invite/send") public void sendInvite(@Payload InviteCommand cmd, Principal principal) { if (principal == null) return; String from = principal.getName(); if (cmd.getTo() == null || cmd.getTo().isBlank()) return; if (from.equalsIgnoreCase(cmd.getTo())) return; inviteService.sendInvite(from, cmd.getTo().trim().toLowerCase()); } @MessageMapping("/invite/accept") public void acceptInvite(@Payload AcceptInviteCommand cmd, Principal principal) { if (principal == null) return; String recipient = principal.getName(); if (cmd.getInviter() == null || cmd.getInviter().isBlank()) return; inviteService.acceptInvite(recipient, cmd.getInviter().trim().toLowerCase()); } @MessageMapping("/invite/decline") public void declineInvite(@Payload DeclineInviteCommand cmd, Principal principal) { if (principal == null) return; String recipient = principal.getName(); if (cmd.getInviter() == null || cmd.getInviter().isBlank()) return; inviteService.declineInvite(recipient, cmd.getInviter().trim().toLowerCase()); } }