I was being too restrictive

This commit is contained in:
2026-01-02 22:58:36 +01:00
parent 81a8afa332
commit 137acc846a

View File

@@ -17,9 +17,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@RestController @RestController
@@ -28,7 +26,7 @@ public class ChatController {
private final MessageService messageService; private final MessageService messageService;
private final WebexService webexService; private final WebexService webexService;
private final MqttService mqttService; private final MqttService mqttService;
private final Set<String> expectedMessages; private final ConcurrentHashMap<String, Integer> expectedMessages;
@Autowired @Autowired
public ChatController( public ChatController(
@@ -38,7 +36,7 @@ public class ChatController {
this.messageService = messageService; this.messageService = messageService;
this.webexService = webexService; this.webexService = webexService;
this.mqttService = mqttService; this.mqttService = mqttService;
this.expectedMessages = ConcurrentHashMap.newKeySet(); this.expectedMessages = new ConcurrentHashMap<>();
} }
@PostMapping("/message/send") @PostMapping("/message/send")
@@ -55,7 +53,7 @@ public class ChatController {
String messageId = this.webexService.post(model); String messageId = this.webexService.post(model);
model.setId(messageId); model.setId(messageId);
this.messageService.save(model); this.messageService.save(model);
expectedMessages.add(messageId); expectedMessages.put(messageId, 0);
result.setSuccess(true); result.setSuccess(true);
result.setData(messageId); result.setData(messageId);
@@ -112,13 +110,13 @@ public class ChatController {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
WebexWebhook payload = mapper.readValue(rawPayload, WebexWebhook.class); WebexWebhook payload = mapper.readValue(rawPayload, WebexWebhook.class);
boolean accepted = expectedMessages.remove(payload.getData().getId()); int seen = expectedMessages.get(payload.getData().getId());
if (accepted) { if (seen == 2) {
Logger.displayInfo("Accepted");
} else {
Logger.displayInfo("Rejected"); Logger.displayInfo("Rejected");
expectedMessages.remove(payload.getData().getId());
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(result); return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(result);
} }
Logger.displayInfo("Accepted");
Room room = webexService.getRoomById(payload.getData().getRoomId()); Room room = webexService.getRoomById(payload.getData().getRoomId());
Message msg = webexService.fetchMessage(payload.getData().getId()); Message msg = webexService.fetchMessage(payload.getData().getId());