From 0b513c19bcc51d6ac917ee11b7e6e17cc1f9b965 Mon Sep 17 00:00:00 2001 From: Emi Boucly Date: Tue, 7 Jan 2025 21:15:38 +0100 Subject: [PATCH] =?UTF-8?q?feat(Event):=202.6.6:=20Gestion=20des=20d=C3=A9?= =?UTF-8?q?connexions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chat/src/main/java/rtgre/chat/ChatController.java | 9 ++++----- chat/src/main/java/rtgre/chat/net/ChatClient.java | 5 +++++ chat/src/main/java/rtgre/server/ChatServer.java | 5 +++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/chat/src/main/java/rtgre/chat/ChatController.java b/chat/src/main/java/rtgre/chat/ChatController.java index 514c994..cf828ea 100644 --- a/chat/src/main/java/rtgre/chat/ChatController.java +++ b/chat/src/main/java/rtgre/chat/ChatController.java @@ -99,6 +99,7 @@ public class ChatController implements Initializable { avatarMenuItem.setOnAction(this::handleAvatarChange); avatarImageView.setOnMouseClicked(this::handleAvatarChange); sendButton.setOnAction(this::onActionSend); + messageTextField.setOnAction(this::onActionSend); initContactListView(); initPostListView(); @@ -157,7 +158,7 @@ public class ChatController implements Initializable { contactMap.put(this.contact.getLogin(), this.contact); LOGGER.info("Nouveau contact : " + contact); LOGGER.info(contactMap.toString()); - Matcher matcher = hostPortPattern.matcher("localhost:2024"); + Matcher matcher = hostPortPattern.matcher(hostComboBox.getValue()); matcher.matches(); String host = matcher.group(1); int port = (matcher.group(2) != null) ? Integer.parseInt(matcher.group(2)) : 2024; @@ -181,9 +182,9 @@ public class ChatController implements Initializable { connectionButton.setSelected(false); } } else if (!connectionButton.isSelected()) { + this.client.sendQuitEvent(); clearLists(); if (this.client.isConnected()) { - this.client.close(); this.contact.setConnected(false); } statusLabel.setText("not connected to " + hostComboBox.getValue()); @@ -300,11 +301,8 @@ public class ChatController implements Initializable { if (content.getString("to").equals(((Contact) contactsListView.getSelectionModel().getSelectedItem()).getLogin()) || content.getString("from").equals(loginTextField.getText())) { postVector.add(Post.fromJson(content)); - System.out.println(postVector); postsObservableList.add(Post.fromJson(content)); postListView.refresh(); - System.out.println(postsObservableList); - System.out.println(postListView); } } @@ -322,6 +320,7 @@ public class ChatController implements Initializable { content, new File("src/main/resources/rtgre/chat/avatars.png") ); + System.out.println(user.getAvatar()); contactMap.add(user); contactObservableList.add(user); LOGGER.info(contactMap.toString()); diff --git a/chat/src/main/java/rtgre/chat/net/ChatClient.java b/chat/src/main/java/rtgre/chat/net/ChatClient.java index b9bb8b5..aed444e 100644 --- a/chat/src/main/java/rtgre/chat/net/ChatClient.java +++ b/chat/src/main/java/rtgre/chat/net/ChatClient.java @@ -68,6 +68,11 @@ public class ChatClient extends ClientTCP { sendEvent(listPostEvent); } + public void sendQuitEvent() { + Event quitEvent = new Event(Event.QUIT, new JSONObject()); + sendEvent(quitEvent); + } + @Override public void receiveLoop() { diff --git a/chat/src/main/java/rtgre/server/ChatServer.java b/chat/src/main/java/rtgre/server/ChatServer.java index 4cfb012..8a85ebd 100644 --- a/chat/src/main/java/rtgre/server/ChatServer.java +++ b/chat/src/main/java/rtgre/server/ChatServer.java @@ -254,6 +254,9 @@ public class ChatServer { doListPost(event.getContent()); LOGGER.info("Sending Posts"); return true; + } else if (event.getType().equals(Event.QUIT)) { + LOGGER.info("Déconnexion"); + return false; } else { LOGGER.warning("Unhandled event type: " + event.getType()); return false; @@ -367,6 +370,8 @@ public class ChatServer { try { sock.close(); removeClient(this); + user.setConnected(false); + sendEventToAllContacts(new Event(Event.CONT, user.toJsonObject())); } catch (IOException e) { throw new RuntimeException(e); }