|
@@ -46,32 +46,38 @@ public class ChatController implements Initializable {
|
46
|
46
|
}
|
47
|
47
|
|
48
|
48
|
public void setRemoteUser(PeerUser remoteUser) {
|
49
|
|
- this.remoteUser = remoteUser;
|
50
|
49
|
this.chatFooterController.setRemoteUser(remoteUser);
|
51
|
50
|
this.chatHeaderController.setRemoteUser(remoteUser);
|
52
|
51
|
setState(State.LOADING);
|
53
|
52
|
|
|
53
|
+ if (this.remoteUser != null) {
|
|
54
|
+ final ChatHistory oldHistory = this.remoteUser.getHistory();
|
|
55
|
+ oldHistory.removeHistoryLoadedListener(onHistoryLoaded);
|
|
56
|
+ oldHistory.removeMessageAddedListener(onMessageAdded);
|
|
57
|
+ }
|
|
58
|
+
|
54
|
59
|
final ChatHistory history = remoteUser.getHistory();
|
55
|
|
- history.addHistoryLoadedListener(this::onHistoryLoaded);
|
56
|
|
- history.addMessageAddedListener(this::onMessageAdded);
|
|
60
|
+ history.addHistoryLoadedListener(onHistoryLoaded);
|
|
61
|
+ history.addMessageAddedListener(onMessageAdded);
|
57
|
62
|
history.load();
|
|
63
|
+ this.remoteUser = remoteUser;
|
58
|
64
|
}
|
59
|
65
|
|
60
|
|
- private void onHistoryLoaded(PeerUser user, ArrayList<Message> messages) {
|
|
66
|
+ private final ChatHistory.HistoryLoadedCallback onHistoryLoaded = (PeerUser user, ArrayList<Message> messages) -> {
|
61
|
67
|
if (user.equals(remoteUser)) {
|
62
|
68
|
messageList.setItems(FXCollections.observableArrayList(messages));
|
63
|
69
|
messageList.scrollTo(messageList.getItems().size() - 1);
|
64
|
70
|
setState(State.DONE);
|
65
|
71
|
}
|
66
|
|
- }
|
|
72
|
+ };
|
67
|
73
|
|
68
|
|
- private void onMessageAdded(PeerUser user, Message message) {
|
|
74
|
+ private final ChatHistory.MessageAddedCallback onMessageAdded = (PeerUser user, Message message) -> {
|
69
|
75
|
Log.v(this.getClass().getSimpleName(), "Message added: " + message.getText());
|
70
|
76
|
Platform.runLater(() -> {
|
71
|
77
|
messageList.getItems().add(message);
|
72
|
78
|
messageList.scrollTo(messageList.getItems().size() - 1);
|
73
|
79
|
});
|
74
|
|
- }
|
|
80
|
+ };
|
75
|
81
|
|
76
|
82
|
private void setState(State state) {
|
77
|
83
|
switch (state) {
|