|
@@ -7,6 +7,7 @@ import fr.insa.clavardator.client.server.Proxy;
|
7
|
7
|
import fr.insa.clavardator.lib.network.TcpListener;
|
8
|
8
|
import fr.insa.clavardator.lib.users.User;
|
9
|
9
|
import fr.insa.clavardator.lib.users.UserInformation;
|
|
10
|
+import fr.insa.clavardator.lib.users.UserState;
|
10
|
11
|
import fr.insa.clavardator.lib.util.ErrorCallback;
|
11
|
12
|
import fr.insa.clavardator.lib.util.Log;
|
12
|
13
|
import javafx.application.Platform;
|
|
@@ -52,17 +53,35 @@ public class UserList {
|
52
|
53
|
final PeerUser savedUser = userHashmap.get(userInfo.id);
|
53
|
54
|
if (savedUser != null) {
|
54
|
55
|
if (savedUser.isActive()) {
|
55
|
|
- Log.v(getClass().getSimpleName(), "Received user from presence server already known and connected");
|
|
56
|
+ if (userInfo.getState() == UserState.DISCONNECTED) {
|
|
57
|
+ Log.v(getClass().getSimpleName(), "Received disconnected user from presence server already known and connected, disconnecting...");
|
|
58
|
+ savedUser.disconnect();
|
|
59
|
+ } else {
|
|
60
|
+ Log.v(getClass().getSimpleName(), "Received user from presence server already known and connected");
|
|
61
|
+ }
|
56
|
62
|
} else {
|
57
|
|
- Log.v(getClass().getSimpleName(), "Received user from presence server already known but not connected, connecting...");
|
58
|
|
- savedUser.init(proxy, userInfo.id, userInfo.getUsername(), null);
|
|
63
|
+ if (userInfo.getState() == UserState.CONNECTED) {
|
|
64
|
+ Log.v(getClass().getSimpleName(), "Received user from presence server already known but not connected, connecting...");
|
|
65
|
+ savedUser.init(proxy, userInfo.id, userInfo.getUsername(),
|
|
66
|
+ e -> Log.e(getClass().getSimpleName(), "Error with user " + userInfo.getUsername(), e));
|
|
67
|
+ } else {
|
|
68
|
+ Log.v(getClass().getSimpleName(), "Received disconnected user from presence server already known and not connected.");
|
|
69
|
+ }
|
59
|
70
|
}
|
60
|
71
|
} else {
|
61
|
|
- Log.v(getClass().getSimpleName(), "Received new user from presence server");
|
62
|
|
- final PeerUser user = new PeerUser();
|
63
|
|
- user.init(proxy, userInfo.id, userInfo.getUsername(), null);
|
64
|
|
- userHashmap.put(user.getId(), user);
|
65
|
|
- Platform.runLater(() -> userObservableList.add(user));
|
|
72
|
+ if (userInfo.getState() == UserState.CONNECTED) {
|
|
73
|
+ Log.v(getClass().getSimpleName(), "Received new connected user from presence server");
|
|
74
|
+ final PeerUser user = new PeerUser();
|
|
75
|
+ user.init(proxy, userInfo.id, userInfo.getUsername(),
|
|
76
|
+ e -> Log.e(getClass().getSimpleName(), "Error with user " + userInfo.getUsername(), e));
|
|
77
|
+ userHashmap.put(user.getId(), user);
|
|
78
|
+ Platform.runLater(() -> userObservableList.add(user));
|
|
79
|
+ } else {
|
|
80
|
+ Log.v(getClass().getSimpleName(), "Received new disconnected user from presence server");
|
|
81
|
+ final PeerUser user = new PeerUser(userInfo.id, userInfo.getUsername());
|
|
82
|
+ userHashmap.put(user.getId(), user);
|
|
83
|
+ Platform.runLater(() -> userObservableList.add(user));
|
|
84
|
+ }
|
66
|
85
|
}
|
67
|
86
|
}));
|
68
|
87
|
}
|
|
@@ -108,10 +127,13 @@ public class UserList {
|
108
|
127
|
final UserInformation userInfo = handshake.getUserInformation();
|
109
|
128
|
final PeerUser savedUser = userHashmap.get(userInfo.id);
|
110
|
129
|
if (savedUser != null) {
|
111
|
|
- savedUser.init(handshake.getConnection(), userInfo.id, userInfo.getUsername(), null);
|
|
130
|
+ savedUser.init(handshake.getConnection(), userInfo.id, userInfo.getUsername(),
|
|
131
|
+ e -> Log.e(getClass().getSimpleName(), "Error with user " + userInfo.getUsername(), e));
|
|
132
|
+
|
112
|
133
|
} else {
|
113
|
134
|
final PeerUser user = new PeerUser();
|
114
|
|
- user.init(handshake.getConnection(), userInfo.id, userInfo.getUsername(), null);
|
|
135
|
+ user.init(handshake.getConnection(), userInfo.id, userInfo.getUsername(),
|
|
136
|
+ e -> Log.e(getClass().getSimpleName(), "Error with user " + userInfo.getUsername(), e));
|
115
|
137
|
userHashmap.put(user.getId(), user);
|
116
|
138
|
Platform.runLater(() -> userObservableList.add(user));
|
117
|
139
|
}
|