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