diff --git a/src/main/java/BsK/client/network/handler/ClientHandler.java b/src/main/java/BsK/client/network/handler/ClientHandler.java index 8368475..7a8f4f3 100644 --- a/src/main/java/BsK/client/network/handler/ClientHandler.java +++ b/src/main/java/BsK/client/network/handler/ClientHandler.java @@ -42,6 +42,17 @@ public class ClientHandler extends SimpleChannelInboundHandler responseType, ResponseListener listener) { + List> responseListeners = listeners.get(responseType); + if (responseListeners != null) { + responseListeners.remove(listener); + } + } + + public static void deleteListener(Class responseType) { + listeners.remove(responseType); + } + @Override protected void channelRead0(ChannelHandlerContext ctx, TextWebSocketFrame frame) { log.debug("Received message: {}", frame.text()); diff --git a/src/main/java/BsK/client/ui/component/CheckUpPage/AddDialog/AddDialog.java b/src/main/java/BsK/client/ui/component/CheckUpPage/AddDialog/AddDialog.java index dbeff5c..172c2d7 100644 --- a/src/main/java/BsK/client/ui/component/CheckUpPage/AddDialog/AddDialog.java +++ b/src/main/java/BsK/client/ui/component/CheckUpPage/AddDialog/AddDialog.java @@ -53,10 +53,14 @@ public class AddDialog extends JDialog { log.info("Received AddCheckupResponse"); if (response.isSuccess()) { JOptionPane.showMessageDialog(this, "Thêm bệnh nhân vào khám thành công"); - setVisible(false); } else { JOptionPane.showMessageDialog(this, response.getError()); } + ClientHandler.deleteListener(AddCheckupResponse.class); + ClientHandler.deleteListener(AddPatientResponse.class); + ClientHandler.deleteListener(GetRecentPatientResponse.class); + ClientHandler.deleteListener(GetDistrictResponse.class); + ClientHandler.deleteListener(GetWardResponse.class); setVisible(false); } @@ -432,6 +436,11 @@ public class AddDialog extends JDialog { JPanel ButtonPanel = new JPanel(); JButton closeButton = new JButton("Close"); closeButton.addActionListener(e -> { + ClientHandler.deleteListener(AddCheckupResponse.class); + ClientHandler.deleteListener(AddPatientResponse.class); + ClientHandler.deleteListener(GetRecentPatientResponse.class); + ClientHandler.deleteListener(GetDistrictResponse.class); + ClientHandler.deleteListener(GetWardResponse.class); setVisible(false); }); ButtonPanel.add(closeButton); @@ -439,7 +448,7 @@ public class AddDialog extends JDialog { saveButton = new JButton("Add to Checkup"); saveButton.addActionListener(e -> { int patientId = Integer.parseInt(patientIdField.getText()); - int doctorId = doctorComboBox.getSelectedIndex() + 1; + int doctorId = doctorComboBox.getSelectedIndex()+ 1; NetworkUtil.sendPacket(ClientHandler.ctx.channel(), new AddCheckupRequest(patientId, doctorId, LocalStorage.userId)); }); @@ -520,6 +529,7 @@ public class AddDialog extends JDialog { log.info("Received AddPatientResponse"); if (response.isSuccess()) { JOptionPane.showMessageDialog(this, "Thêm bệnh nhân thành công"); + patientIdField.setText(String.valueOf(response.getPatientId())); sendGetRecentPatientRequest(); } else { JOptionPane.showMessageDialog(this, response.getMessage()); diff --git a/src/main/java/BsK/common/packet/res/AddPatientResponse.java b/src/main/java/BsK/common/packet/res/AddPatientResponse.java index 0fda942..9d8fcdd 100644 --- a/src/main/java/BsK/common/packet/res/AddPatientResponse.java +++ b/src/main/java/BsK/common/packet/res/AddPatientResponse.java @@ -8,5 +8,7 @@ import lombok.Data; @AllArgsConstructor public class AddPatientResponse implements Packet { public boolean success; + public int patientId; public String message; + } diff --git a/src/main/java/BsK/server/network/handler/ServerHandler.java b/src/main/java/BsK/server/network/handler/ServerHandler.java index bfde016..d6935f1 100644 --- a/src/main/java/BsK/server/network/handler/ServerHandler.java +++ b/src/main/java/BsK/server/network/handler/ServerHandler.java @@ -464,15 +464,24 @@ public class ServerHandler extends SimpleChannelInboundHandler