fix: prevent loading of messages from an other user

This commit is contained in:
Arnaud Vergnet 2020-12-06 16:44:52 +01:00
parent e02ea55179
commit 0fe3b666dd
2 changed files with 14 additions and 9 deletions

View file

@ -32,11 +32,11 @@ public class ChatHistory {
} }
private void notifyHistoryLoaded() { private void notifyHistoryLoaded() {
historyListener.forEach(l -> l.onHistoryLoaded(history)); historyListener.forEach(l -> l.onHistoryLoaded(user, history));
} }
private void notifyMessageAdded(Message message) { private void notifyMessageAdded(Message message) {
messageListener.forEach(l -> l.onMessageAdded(message)); messageListener.forEach(l -> l.onMessageAdded(user, message));
} }
public void load() { public void load() {
@ -75,11 +75,11 @@ public class ChatHistory {
} }
public interface MessageAddedCallback { public interface MessageAddedCallback {
void onMessageAdded(Message message); void onMessageAdded(PeerUser user, Message message);
} }
public interface HistoryLoadedCallback { public interface HistoryLoadedCallback {
void onHistoryLoaded(ArrayList<Message> history); void onHistoryLoaded(PeerUser user, ArrayList<Message> history);
} }
} }

View file

@ -33,6 +33,8 @@ public class ChatController implements Initializable {
@FXML @FXML
private VBox loadingContainer; private VBox loadingContainer;
private PeerUser remoteUser;
public void addAttachmentListener(ButtonPressEvent listener) { public void addAttachmentListener(ButtonPressEvent listener) {
chatFooterController.addAttachmentListener(listener); chatFooterController.addAttachmentListener(listener);
} }
@ -42,6 +44,7 @@ public class ChatController implements Initializable {
} }
public void setRemoteUser(PeerUser remoteUser) { public void setRemoteUser(PeerUser remoteUser) {
this.remoteUser = remoteUser;
this.chatHeaderController.setRemoteUser(remoteUser); this.chatHeaderController.setRemoteUser(remoteUser);
setState(State.LOADING); setState(State.LOADING);
@ -51,13 +54,15 @@ public class ChatController implements Initializable {
history.load(); history.load();
} }
private void onHistoryLoaded(ArrayList<Message> messages) { private void onHistoryLoaded(PeerUser user, ArrayList<Message> messages) {
if (user.equals(remoteUser)) {
messageList.setItems(FXCollections.observableArrayList(messages)); messageList.setItems(FXCollections.observableArrayList(messages));
messageList.scrollTo(messageList.getItems().size() - 1); messageList.scrollTo(messageList.getItems().size() - 1);
setState(State.DONE); setState(State.DONE);
} }
}
private void onMessageAdded(Message message) { private void onMessageAdded(PeerUser user, Message message) {
messageList.getItems().add(message); messageList.getItems().add(message);
messageList.scrollTo(messageList.getItems().size() - 1); messageList.scrollTo(messageList.getItems().size() - 1);
} }