From 6adfa9c77b62262ac97e313858367450b72214cf Mon Sep 17 00:00:00 2001 From: lds217 <91755733+lds217@users.noreply.github.com> Date: Sun, 23 Feb 2025 23:23:10 -0500 Subject: [PATCH] [fix]!: duplicate listeners in add dialog --- .../client/network/handler/ClientHandler.java | 11 +++++++++ .../CheckUpPage/AddDialog/AddDialog.java | 14 ++++++++++-- .../common/packet/res/AddPatientResponse.java | 2 ++ .../server/network/handler/ServerHandler.java | 21 +++++++++++++----- src/main/resources/database/BSK.db | Bin 1458176 -> 1458176 bytes 5 files changed, 41 insertions(+), 7 deletions(-) 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){9LJx>Ze#1y^;!4o+$bGy2O_L}+78xuFo2?oK_hxV6TCDvm%ycR}!6bu?)pmBDswORJ;J=!;v~9Drm6L`{EUv$C+g4_8 zTe@h?s`{*IerMX4bDygwEN#73cSn^h)6%x8Y*B^AY6~Ly>V`|QYG?^Vx4NFju88Va zOjX?=s--P%tTxxFq22Rl`9YPf`LN*N@jSr4%ltGvR1wA=;&Sm4w2@HA&OjIpnl%tG ztKV-{pUgAj6*n>;~LIKg$H&*&Api!P(%s1rHp0sq40#SUZ#&;hB`ck1lvfny^hCx?f`c1wQY8B0iA-nKVy|1P_TQkS>x&84j(J&4sjH6+F?FRV#U zC0Tu8NR%x3#|2jDtIJ!=+*uvKQ}iIEx0aWGM1rcpJ*D$)j|t2%^>a~iSKEG&z(@K} oO*)0m6f!9wlm>71b}4!-qn*UMPi^m5EiJ9yIKK2N8g#V%1Lw0dssI20 delta 516 zcmajb&r1S96bJB`)^)X6=V@+BvYS{zbg|a8)I14R$Ldf-1W}|!K`Q+?6(o45qaop? zW9K3k6gu=Th(Y%bOGI7j5)lPGA&4S~#|LH(-}&;USe!2w=gS(69qDNryI48})y--G ztn*vX4PWrA%CGXF9AY)gXPhvrrh%gA?H~l`Sbk+Yzv+;f&`r}jTif}K?54YNJET)? zeGEwjMdXhJns5Tk(9a)vsx|n^0N+ozZ0d44OLpVHZcx;Q1mr*>av}-2kQ=olhGgVH90Bqo zAL>AUq}1(3XD}s}h?m_}C9fJ3;&K3g^omvQG&SnibtV$(#(qM2=<&$RWvDW^H^=ZA c!PSL0A=PJ1?RAVzO^#QZyA$;{U3K<-0<5Z-UH||9