Merge pull request #169 from informatik-ag-ngl/f/message_order
Fix message order with insertion method
This commit is contained in:
		@@ -32,7 +32,8 @@ public final class Chat implements Serializable {
 | 
				
			|||||||
	private static final long serialVersionUID = 1L;
 | 
						private static final long serialVersionUID = 1L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Provides the list of messages that the recipient receives.<p>
 | 
						 * Provides the list of messages that the recipient receives.
 | 
				
			||||||
 | 
						 * <p>
 | 
				
			||||||
	 * Saves the Messages in the corresponding chat at that Point.
 | 
						 * Saves the Messages in the corresponding chat at that Point.
 | 
				
			||||||
	 *
 | 
						 *
 | 
				
			||||||
	 * @param recipient the user who receives the messages
 | 
						 * @param recipient the user who receives the messages
 | 
				
			||||||
@@ -93,6 +94,21 @@ public final class Chat implements Serializable {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	public boolean isUnread() { return !messages.isEmpty() && messages.get(messages.size() - 1).getStatus() != MessageStatus.READ; }
 | 
						public boolean isUnread() { return !messages.isEmpty() && messages.get(messages.size() - 1).getStatus() != MessageStatus.READ; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Inserts a message at the correct place according to its creation date.
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param message the message to insert
 | 
				
			||||||
 | 
						 * @since Envoy Client v0.1-beta
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public void insert(Message message) {
 | 
				
			||||||
 | 
							for (int i = messages.size() - 1; i >= 0; --i)
 | 
				
			||||||
 | 
								if (message.getCreationDate().isAfter(messages.get(i).getCreationDate())) {
 | 
				
			||||||
 | 
									messages.add(i + 1, message);
 | 
				
			||||||
 | 
									return;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							messages.add(0, message);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @return all messages in the current chat
 | 
						 * @return all messages in the current chat
 | 
				
			||||||
	 * @since Envoy Client v0.1-beta
 | 
						 * @since Envoy Client v0.1-beta
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -101,7 +101,7 @@ public final class ChatScene {
 | 
				
			|||||||
		eventBus.register(MessageCreationEvent.class, e -> {
 | 
							eventBus.register(MessageCreationEvent.class, e -> {
 | 
				
			||||||
			final var message = e.get();
 | 
								final var message = e.get();
 | 
				
			||||||
			localDB.getChat(message.getSenderID()).ifPresent(chat -> {
 | 
								localDB.getChat(message.getSenderID()).ifPresent(chat -> {
 | 
				
			||||||
				chat.getMessages().add(message);
 | 
									chat.insert(message);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if (chat.equals(currentChat)) {
 | 
									if (chat.equals(currentChat)) {
 | 
				
			||||||
					try {
 | 
										try {
 | 
				
			||||||
@@ -317,7 +317,8 @@ public final class ChatScene {
 | 
				
			|||||||
			writeProxy.writeMessage(message);
 | 
								writeProxy.writeMessage(message);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// Add message to LocalDB and update UI
 | 
								// Add message to LocalDB and update UI
 | 
				
			||||||
			messageList.getItems().add(message);
 | 
								currentChat.insert(message);
 | 
				
			||||||
 | 
								messageList.refresh();
 | 
				
			||||||
			scrollToMessageListEnd();
 | 
								scrollToMessageListEnd();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// Request a new ID generator if all IDs were used
 | 
								// Request a new ID generator if all IDs were used
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -151,8 +151,7 @@ public final class LoginScene {
 | 
				
			|||||||
				loadChatScene();
 | 
									loadChatScene();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		} catch (IOException | InterruptedException | TimeoutException e) {
 | 
							} catch (IOException | InterruptedException | TimeoutException e) {
 | 
				
			||||||
			logger.log(Level.WARNING, "Could not connect to server: ", e);
 | 
								logger.log(Level.INFO, "Could not connect to server. Entering offline mode...");
 | 
				
			||||||
			logger.log(Level.FINER, "Attempting offline mode...");
 | 
					 | 
				
			||||||
			attemptOfflineMode(credentials);
 | 
								attemptOfflineMode(credentials);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user