diff --git a/src/main/java/envoy/client/data/Chat.java b/src/main/java/envoy/client/data/Chat.java index 7efbd7b..022904c 100644 --- a/src/main/java/envoy/client/data/Chat.java +++ b/src/main/java/envoy/client/data/Chat.java @@ -9,7 +9,7 @@ import java.util.Objects; import envoy.client.net.WriteProxy; import envoy.data.*; import envoy.data.Message.MessageStatus; -import envoy.event.MessageStatusChangeEvent; +import envoy.event.MessageStatusChange; /** * Represents a chat between two {@link User}s
@@ -71,7 +71,7 @@ public final class Chat implements Serializable { * * @param writeProxy the write proxy instance used to notify the server about * the message status changes - * @throws IOException if a {@link MessageStatusChangeEvent} could not be + * @throws IOException if a {@link MessageStatusChange} could not be * delivered to the server * @since Envoy Client v0.3-alpha */ @@ -81,7 +81,7 @@ public final class Chat implements Serializable { if (m.getSenderID() == recipient.getID()) if (m.getStatus() == MessageStatus.READ) break; else { m.setStatus(MessageStatus.READ); - writeProxy.writeMessageStatusChangeEvent(new MessageStatusChangeEvent(m)); + writeProxy.writeMessageStatusChange(new MessageStatusChange(m)); } } } diff --git a/src/main/java/envoy/client/data/ClientConfig.java b/src/main/java/envoy/client/data/ClientConfig.java index 0b11e40..cde6b9a 100644 --- a/src/main/java/envoy/client/data/ClientConfig.java +++ b/src/main/java/envoy/client/data/ClientConfig.java @@ -4,6 +4,7 @@ import java.io.File; import java.util.function.Function; import java.util.logging.Level; +import envoy.client.ui.Startup; import envoy.data.Config; import envoy.data.ConfigItem; import envoy.data.LoginCredentials; @@ -109,5 +110,5 @@ public class ClientConfig extends Config { * the registration option * @since Envoy Client v0.3-alpha */ - public LoginCredentials getLoginCredentials() { return new LoginCredentials(getUser(), getPassword(), false); } + public LoginCredentials getLoginCredentials() { return new LoginCredentials(getUser(), getPassword(), false, Startup.VERSION); } } diff --git a/src/main/java/envoy/client/data/LocalDB.java b/src/main/java/envoy/client/data/LocalDB.java index 38aeea4..b8dc3c9 100644 --- a/src/main/java/envoy/client/data/LocalDB.java +++ b/src/main/java/envoy/client/data/LocalDB.java @@ -3,9 +3,9 @@ package envoy.client.data; import java.util.*; import envoy.data.*; -import envoy.event.GroupResizeEvent; -import envoy.event.MessageStatusChangeEvent; -import envoy.event.NameChangeEvent; +import envoy.event.GroupResize; +import envoy.event.MessageStatusChange; +import envoy.event.NameChange; /** * Stores information about the current {@link User} and their {@link Chat}s. @@ -25,7 +25,7 @@ public abstract class LocalDB { protected List chats = new ArrayList<>(); protected IDGenerator idGenerator; protected Cache messageCache = new Cache<>(); - protected Cache statusCache = new Cache<>(); + protected Cache statusCache = new Cache<>(); /** * Initializes a storage space for a user-specific list of chats. @@ -136,13 +136,13 @@ public abstract class LocalDB { * @return the offline status cache * @since Envoy Client v0.3-alpha */ - public Cache getStatusCache() { return statusCache; } + public Cache getStatusCache() { return statusCache; } /** * @param statusCache the offline status cache to set * @since Envoy Client v0.3-alpha */ - public void setStatusCache(Cache statusCache) { this.statusCache = statusCache; } + public void setStatusCache(Cache statusCache) { this.statusCache = statusCache; } /** * Searches for a message by ID. @@ -169,20 +169,20 @@ public abstract class LocalDB { /** * Performs a contact name change if the corresponding contact is present. * - * @param event the {@link NameChangeEvent} to process + * @param event the {@link NameChange} to process * @since Envoy Client v0.1-beta */ - public void replaceContactName(NameChangeEvent event) { + public void replaceContactName(NameChange event) { chats.stream().map(Chat::getRecipient).filter(c -> c.getID() == event.getID()).findAny().ifPresent(c -> c.setName(event.get())); } /** * Performs a group resize operation if the corresponding group is present. * - * @param event the {@link GroupResizeEvent} to process + * @param event the {@link GroupResize} to process * @since Envoy Client v0.1-beta */ - public void updateGroup(GroupResizeEvent event) { + public void updateGroup(GroupResize event) { chats.stream() .map(Chat::getRecipient) .filter(Group.class::isInstance) diff --git a/src/main/java/envoy/client/data/PersistentLocalDB.java b/src/main/java/envoy/client/data/PersistentLocalDB.java index 35e77c3..5e13dd4 100644 --- a/src/main/java/envoy/client/data/PersistentLocalDB.java +++ b/src/main/java/envoy/client/data/PersistentLocalDB.java @@ -6,7 +6,7 @@ import java.util.HashMap; import envoy.data.IDGenerator; import envoy.data.Message; -import envoy.event.MessageStatusChangeEvent; +import envoy.event.MessageStatusChange; import envoy.util.SerializationUtils; /** @@ -78,7 +78,7 @@ public final class PersistentLocalDB extends LocalDB { try (var in = new ObjectInputStream(new FileInputStream(userFile))) { chats = (ArrayList) in.readObject(); messageCache = (Cache) in.readObject(); - statusCache = (Cache) in.readObject(); + statusCache = (Cache) in.readObject(); } } diff --git a/src/main/java/envoy/client/net/Client.java b/src/main/java/envoy/client/net/Client.java index e716f87..39052c1 100644 --- a/src/main/java/envoy/client/net/Client.java +++ b/src/main/java/envoy/client/net/Client.java @@ -16,7 +16,7 @@ import envoy.client.data.LocalDB; import envoy.client.event.SendEvent; import envoy.data.*; import envoy.event.*; -import envoy.event.contact.ContactOperationEvent; +import envoy.event.contact.ContactOperation; import envoy.event.contact.ContactSearchResult; import envoy.util.EnvoyLog; import envoy.util.SerializationUtils; @@ -57,24 +57,24 @@ public class Client implements Closeable { * will block for up to 5 seconds. If the handshake does exceed this time limit, * an exception is thrown. * - * @param credentials the login credentials of the - * user - * @param receivedMessageCache a message cache containing all - * unread messages from the server - * that can be relayed after - * initialization - * @param receivedMessageStatusChangeEventCache an event cache containing all - * received - * messageStatusChangeEvents from - * the server that can be relayed - * after initialization + * @param credentials the login credentials of the user + * @param receivedMessageCache a message cache containing all unread + * messages + * from the server that can be relayed + * after + * initialization + * @param receivedMessageStatusChangeCache an event cache containing all + * received messageStatusChangeEvents + * from the server that can be relayed + * after initialization * @throws TimeoutException if the server could not be reached * @throws IOException if the login credentials could not be written * @throws InterruptedException if the current thread is interrupted while * waiting for the handshake response */ public void performHandshake(LoginCredentials credentials, Cache receivedMessageCache, - Cache receivedMessageStatusChangeEventCache) throws TimeoutException, IOException, InterruptedException { + Cache receivedMessageStatusChangeCache) + throws TimeoutException, IOException, InterruptedException { if (online) throw new IllegalStateException("Handshake has already been performed successfully"); // Establish TCP connection logger.log(Level.FINER, String.format("Attempting connection to server %s:%d...", config.getServer(), config.getPort())); @@ -87,8 +87,8 @@ public class Client implements Closeable { // Register user creation processor, contact list processor and message cache receiver.registerProcessor(User.class, sender -> { this.sender = sender; contacts = sender.getContacts(); }); receiver.registerProcessor(Message.class, receivedMessageCache); - receiver.registerProcessor(MessageStatusChangeEvent.class, receivedMessageStatusChangeEventCache); - receiver.registerProcessor(HandshakeRejectionEvent.class, evt -> { rejected = true; eventBus.dispatch(evt); }); + receiver.registerProcessor(MessageStatusChange.class, receivedMessageStatusChangeCache); + receiver.registerProcessor(HandshakeRejection.class, evt -> { rejected = true; eventBus.dispatch(evt); }); rejected = false; @@ -126,29 +126,29 @@ public class Client implements Closeable { * Initializes the {@link Receiver} used to process data sent from the server to * this client. * - * @param localDB the local database used to - * persist the current - * {@link IDGenerator} - * @param receivedMessageCache a message cache containing all - * unread messages from the server - * that can be relayed after - * initialization - * @param receivedMessageStatusChangeEventCache an event cache containing all - * received - * messageStatusChangeEvents from - * the server that can be relayed - * after initialization + * @param localDB the local database used to persist + * the current + * {@link IDGenerator} + * @param receivedMessageCache a message cache containing all unread + * messages + * from the server that can be relayed + * after + * initialization + * @param receivedMessageStatusChangeCache an event cache containing all + * received messageStatusChangeEvents + * from the server that can be relayed + * after initialization * @throws IOException if no {@link IDGenerator} is present and none could be * requested from the server * @since Envoy Client v0.2-alpha */ public void initReceiver(LocalDB localDB, Cache receivedMessageCache, - Cache receivedMessageStatusChangeEventCache) throws IOException { + Cache receivedMessageStatusChangeCache) throws IOException { checkOnline(); // Process incoming messages final ReceivedMessageProcessor receivedMessageProcessor = new ReceivedMessageProcessor(); - final MessageStatusChangeEventProcessor messageStatusChangeEventProcessor = new MessageStatusChangeEventProcessor(); + final MessageStatusChangeProcessor messageStatusChangeEventProcessor = new MessageStatusChangeProcessor(); receiver.registerProcessor(Message.class, receivedMessageProcessor); @@ -156,26 +156,26 @@ public class Client implements Closeable { receivedMessageCache.setProcessor(receivedMessageProcessor); // Process message status changes - receiver.registerProcessor(MessageStatusChangeEvent.class, messageStatusChangeEventProcessor); - receivedMessageStatusChangeEventCache.setProcessor(messageStatusChangeEventProcessor); + receiver.registerProcessor(MessageStatusChange.class, messageStatusChangeEventProcessor); + receivedMessageStatusChangeCache.setProcessor(messageStatusChangeEventProcessor); // Process user status changes - receiver.registerProcessor(UserStatusChangeEvent.class, eventBus::dispatch); + receiver.registerProcessor(UserStatusChange.class, eventBus::dispatch); // Process message ID generation receiver.registerProcessor(IDGenerator.class, localDB::setIDGenerator); // Process name changes - receiver.registerProcessor(NameChangeEvent.class, evt -> { localDB.replaceContactName(evt); eventBus.dispatch(evt); }); + receiver.registerProcessor(NameChange.class, evt -> { localDB.replaceContactName(evt); eventBus.dispatch(evt); }); // Process contact searches receiver.registerProcessor(ContactSearchResult.class, eventBus::dispatch); // Process contact operations - receiver.registerProcessor(ContactOperationEvent.class, eventBus::dispatch); + receiver.registerProcessor(ContactOperation.class, eventBus::dispatch); // Process group size changes - receiver.registerProcessor(GroupResizeEvent.class, evt -> { localDB.updateGroup(evt); eventBus.dispatch(evt); }); + receiver.registerProcessor(GroupResize.class, evt -> { localDB.updateGroup(evt); eventBus.dispatch(evt); }); // Send event eventBus.register(SendEvent.class, evt -> { diff --git a/src/main/java/envoy/client/net/MessageStatusChangeEventProcessor.java b/src/main/java/envoy/client/net/MessageStatusChangeProcessor.java similarity index 59% rename from src/main/java/envoy/client/net/MessageStatusChangeEventProcessor.java rename to src/main/java/envoy/client/net/MessageStatusChangeProcessor.java index ad424c4..106cda4 100644 --- a/src/main/java/envoy/client/net/MessageStatusChangeEventProcessor.java +++ b/src/main/java/envoy/client/net/MessageStatusChangeProcessor.java @@ -1,36 +1,35 @@ package envoy.client.net; import java.util.function.Consumer; -import java.util.logging.Level; import java.util.logging.Logger; import envoy.data.Message.MessageStatus; import envoy.event.EventBus; -import envoy.event.MessageStatusChangeEvent; +import envoy.event.MessageStatusChange; import envoy.util.EnvoyLog; /** * Project: envoy-client
- * File: MessageStatusChangeEventProcessor.java
+ * File: MessageStatusChangeProcessor.java
* Created: 4 Feb 2020
* * @author Kai S. K. Engelbart * @since Envoy Client v0.3-alpha */ -public class MessageStatusChangeEventProcessor implements Consumer { +public class MessageStatusChangeProcessor implements Consumer { - private static final Logger logger = EnvoyLog.getLogger(MessageStatusChangeEventProcessor.class); + private static final Logger logger = EnvoyLog.getLogger(MessageStatusChangeProcessor.class); /** - * Dispatches a {@link MessageStatusChangeEvent} if the status is + * Dispatches a {@link MessageStatusChange} if the status is * {@code RECEIVED} or {@code READ}. * * @param evt the status change event * @since Envoy Client v0.3-alpha */ @Override - public void accept(MessageStatusChangeEvent evt) { - if (evt.get().ordinal() < MessageStatus.RECEIVED.ordinal()) logger.log(Level.WARNING, "Received invalid message status change " + evt); + public void accept(MessageStatusChange evt) { + if (evt.get().ordinal() < MessageStatus.RECEIVED.ordinal()) logger.warning("Received invalid message status change " + evt); else EventBus.getInstance().dispatch(evt); } } diff --git a/src/main/java/envoy/client/net/WriteProxy.java b/src/main/java/envoy/client/net/WriteProxy.java index ba9c565..2287369 100644 --- a/src/main/java/envoy/client/net/WriteProxy.java +++ b/src/main/java/envoy/client/net/WriteProxy.java @@ -6,12 +6,12 @@ import java.util.logging.Logger; import envoy.client.data.LocalDB; import envoy.data.Message; -import envoy.event.MessageStatusChangeEvent; +import envoy.event.MessageStatusChange; import envoy.util.EnvoyLog; /** * Implements methods to send {@link Message}s and - * {@link MessageStatusChangeEvent}s to the server or cache them inside a + * {@link MessageStatusChange}s to the server or cache them inside a * {@link LocalDB} depending on the online status.
*
* Project: envoy-client
@@ -65,7 +65,7 @@ public class WriteProxy { } /** - * Sends cached {@link Message}s and {@link MessageStatusChangeEvent}s to the + * Sends cached {@link Message}s and {@link MessageStatusChange}s to the * server. * * @since Envoy Client v0.3-alpha @@ -99,7 +99,7 @@ public class WriteProxy { * @throws IOException if the event could not be sent * @since Envoy Client v0.3-alpha */ - public void writeMessageStatusChangeEvent(MessageStatusChangeEvent evt) throws IOException { + public void writeMessageStatusChange(MessageStatusChange evt) throws IOException { if (client.isOnline()) client.sendEvent(evt); else localDB.getStatusCache().accept(evt); } diff --git a/src/main/java/envoy/client/ui/MessageListCell.java b/src/main/java/envoy/client/ui/MessageListCell.java index 95f9ff2..d287e0f 100644 --- a/src/main/java/envoy/client/ui/MessageListCell.java +++ b/src/main/java/envoy/client/ui/MessageListCell.java @@ -1,7 +1,7 @@ package envoy.client.ui; import java.io.IOException; -import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; import java.util.Map; import java.util.logging.Level; @@ -28,7 +28,7 @@ import envoy.util.EnvoyLog; */ public class MessageListCell extends ListCell { - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm"); + private static final DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"); private static Map statusImages; static { diff --git a/src/main/java/envoy/client/ui/Startup.java b/src/main/java/envoy/client/ui/Startup.java index 8f00f74..0812129 100644 --- a/src/main/java/envoy/client/ui/Startup.java +++ b/src/main/java/envoy/client/ui/Startup.java @@ -2,7 +2,6 @@ package envoy.client.ui; import java.io.File; import java.io.IOException; -import java.util.Date; import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; @@ -17,7 +16,7 @@ import envoy.client.net.Client; import envoy.client.ui.SceneContext.SceneInfo; import envoy.client.ui.controller.LoginScene; import envoy.data.Message; -import envoy.event.MessageStatusChangeEvent; +import envoy.event.MessageStatusChange; import envoy.exception.EnvoyException; import envoy.util.EnvoyLog; @@ -34,10 +33,17 @@ import envoy.util.EnvoyLog; */ public final class Startup extends Application { - private LocalDB localDB; - private Client client; - private Cache messageCache; - private Cache messageStatusCache; + /** + * The version of this client. Used to verify compatibility with the server. + * + * @since Envoy Client v0.1-beta + */ + public static final String VERSION = "0.1-beta"; + + private LocalDB localDB; + private Client client; + private Cache messageCache; + private Cache messageStatusCache; private static final ClientConfig config = ClientConfig.getInstance(); private static final Logger logger = EnvoyLog.getLogger(Startup.class); diff --git a/src/main/java/envoy/client/ui/controller/ChatScene.java b/src/main/java/envoy/client/ui/controller/ChatScene.java index 518b290..cd58ecb 100644 --- a/src/main/java/envoy/client/ui/controller/ChatScene.java +++ b/src/main/java/envoy/client/ui/controller/ChatScene.java @@ -25,9 +25,9 @@ import envoy.client.ui.MessageListCell; import envoy.client.ui.SceneContext; import envoy.data.*; import envoy.event.EventBus; -import envoy.event.MessageStatusChangeEvent; -import envoy.event.UserStatusChangeEvent; -import envoy.event.contact.ContactOperationEvent; +import envoy.event.MessageStatusChange; +import envoy.event.UserStatusChange; +import envoy.event.contact.ContactOperation; import envoy.util.EnvoyLog; /** @@ -103,7 +103,7 @@ public final class ChatScene { }); // Listen to message status changes - eventBus.register(MessageStatusChangeEvent.class, e -> localDB.getMessage(e.getID()).ifPresent(message -> { + eventBus.register(MessageStatusChange.class, e -> localDB.getMessage(e.getID()).ifPresent(message -> { message.setStatus(e.get()); // Update UI if in current chat @@ -111,7 +111,7 @@ public final class ChatScene { })); // Listen to user status changes - eventBus.register(UserStatusChangeEvent.class, + eventBus.register(UserStatusChange.class, e -> userList.getItems() .stream() .filter(c -> c.getID() == e.getID()) @@ -119,7 +119,7 @@ public final class ChatScene { .ifPresent(u -> { ((User) u).setStatus(e.get()); Platform.runLater(userList::refresh); })); // Listen to contacts changes - eventBus.register(ContactOperationEvent.class, e -> { + eventBus.register(ContactOperation.class, e -> { final var contact = e.get(); switch (e.getOperationType()) { case ADD: diff --git a/src/main/java/envoy/client/ui/controller/ContactSearchScene.java b/src/main/java/envoy/client/ui/controller/ContactSearchScene.java index f092e6b..54c505c 100644 --- a/src/main/java/envoy/client/ui/controller/ContactSearchScene.java +++ b/src/main/java/envoy/client/ui/controller/ContactSearchScene.java @@ -15,7 +15,7 @@ import envoy.client.ui.SceneContext; import envoy.data.Contact; import envoy.event.ElementOperation; import envoy.event.EventBus; -import envoy.event.contact.ContactOperationEvent; +import envoy.event.contact.ContactOperation; import envoy.event.contact.ContactSearchRequest; import envoy.event.contact.ContactSearchResult; import envoy.util.EnvoyLog; @@ -57,7 +57,7 @@ public class ContactSearchScene { /** * @param sceneContext enables the user to return to the chat scene - * @param localDB the {@link LocalDB} that is used to save contacts + * @param localDB the local database to which new contacts are added * @since Envoy Client v0.1-beta */ public void initializeData(SceneContext sceneContext, LocalDB localDB) { @@ -107,7 +107,7 @@ public class ContactSearchScene { } /** - * Sends an {@link ContactOperationEvent} for every selected contact to the + * Sends an {@link ContactOperation} for every selected contact to the * server. * * @since Envoy Client v0.1-beta @@ -120,7 +120,7 @@ public class ContactSearchScene { alert.setTitle("Add Contact to Contact List"); alert.setHeaderText("Add the user " + contact.getName() + " to your contact list?"); alert.showAndWait().filter(btn -> btn == ButtonType.OK).ifPresent(btn -> { - final var event = new ContactOperationEvent(contact, ElementOperation.ADD); + final var event = new ContactOperation(contact, ElementOperation.ADD); // Sends the event to the server eventBus.dispatch(new SendEvent(event)); // Updates the UI diff --git a/src/main/java/envoy/client/ui/controller/GroupCreationScene.java b/src/main/java/envoy/client/ui/controller/GroupCreationScene.java index a9595ee..ea4a58e 100644 --- a/src/main/java/envoy/client/ui/controller/GroupCreationScene.java +++ b/src/main/java/envoy/client/ui/controller/GroupCreationScene.java @@ -13,7 +13,7 @@ import envoy.client.ui.SceneContext; import envoy.data.Contact; import envoy.data.User; import envoy.event.EventBus; -import envoy.event.GroupCreationEvent; +import envoy.event.GroupCreation; /** * Project: envoy-client
@@ -49,7 +49,8 @@ public class GroupCreationScene { /** * @param sceneContext enables the user to return to the chat scene - * @param localDB the {@link LocalDB} that is used to save contacts + * @param localDB the local database from which potential group members can + * be selected * @since Envoy Client v0.1-beta */ public void initializeData(SceneContext sceneContext, LocalDB localDB) { @@ -63,13 +64,13 @@ public class GroupCreationScene { } /** - * Sends a {@link GroupCreationEvent} to the server. + * Sends a {@link GroupCreation} to the server. * * @since Envoy Client v0.1-beta */ @FXML private void sendGroupObject() { - eventBus.dispatch(new SendEvent(new GroupCreationEvent(groupNameBar.getText(), + eventBus.dispatch(new SendEvent(new GroupCreation(groupNameBar.getText(), contactList.getSelectionModel().getSelectedItems().stream().map(Contact::getID).collect(Collectors.toSet())))); } diff --git a/src/main/java/envoy/client/ui/controller/LoginScene.java b/src/main/java/envoy/client/ui/controller/LoginScene.java index fbd8580..13fc564 100644 --- a/src/main/java/envoy/client/ui/controller/LoginScene.java +++ b/src/main/java/envoy/client/ui/controller/LoginScene.java @@ -16,13 +16,14 @@ import envoy.client.data.ClientConfig; import envoy.client.data.LocalDB; import envoy.client.net.Client; import envoy.client.ui.SceneContext; +import envoy.client.ui.Startup; import envoy.data.LoginCredentials; import envoy.data.Message; import envoy.data.User; import envoy.data.User.UserStatus; import envoy.event.EventBus; -import envoy.event.HandshakeRejectionEvent; -import envoy.event.MessageStatusChangeEvent; +import envoy.event.HandshakeRejection; +import envoy.event.MessageStatusChange; import envoy.exception.EnvoyException; import envoy.util.EnvoyLog; @@ -55,11 +56,11 @@ public final class LoginScene { @FXML private Label connectionLabel; - private Client client; - private LocalDB localDB; - private Cache receivedMessageCache; - private Cache receivedMessageStatusChangeEventCache; - private SceneContext sceneContext; + private Client client; + private LocalDB localDB; + private Cache receivedMessageCache; + private Cache receivedMessageStatusChangeCache; + private SceneContext sceneContext; private static final Logger logger = EnvoyLog.getLogger(LoginScene.class); private static final EventBus eventBus = EventBus.getInstance(); @@ -70,35 +71,36 @@ public final class LoginScene { connectionLabel.setText("Server: " + config.getServer() + ":" + config.getPort()); // Show an alert after an unsuccessful handshake - eventBus.register(HandshakeRejectionEvent.class, + eventBus.register( + HandshakeRejection.class, e -> Platform.runLater(() -> { clearPasswordFields(); new Alert(AlertType.ERROR, e.get()).showAndWait(); })); } /** * Loads the login dialog using the FXML file {@code LoginDialog.fxml}. * - * @param client the client used to perform the - * handshake - * @param localDB the local database used for - * offline login - * @param receivedMessageCache the cache storing messages - * received during - * the handshake - * @param receivedMessageStatusChangeEventCache the cache storing - * messageStatusChangeEvents - * received during handshake - * @param sceneContext the scene context used to - * initialize the chat - * scene + * @param client the client used to perform the + * handshake + * @param localDB the local database used for offline + * login + * @param receivedMessageCache the cache storing messages received + * during + * the handshake + * @param receivedMessageStatusChangeCache the cache storing + * messageStatusChangeEvents received + * during handshake + * @param sceneContext the scene context used to initialize + * the chat + * scene * @since Envoy Client v0.1-beta */ public void initializeData(Client client, LocalDB localDB, Cache receivedMessageCache, - Cache receivedMessageStatusChangeEventCache, SceneContext sceneContext) { - this.client = client; - this.localDB = localDB; - this.receivedMessageCache = receivedMessageCache; - this.receivedMessageStatusChangeEventCache = receivedMessageStatusChangeEventCache; - this.sceneContext = sceneContext; + Cache receivedMessageStatusChangeCache, SceneContext sceneContext) { + this.client = client; + this.localDB = localDB; + this.receivedMessageCache = receivedMessageCache; + this.receivedMessageStatusChangeCache = receivedMessageStatusChangeCache; + this.sceneContext = sceneContext; // Prepare handshake localDB.loadIDGenerator(); @@ -117,12 +119,13 @@ public final class LoginScene { if (registerCheckBox.isSelected() && !passwordField.getText().equals(repeatPasswordField.getText())) { clearPasswordFields(); new Alert(AlertType.ERROR, "The entered password is unequal to the repeated one").showAndWait(); - } else performHandshake(new LoginCredentials(userTextField.getText(), passwordField.getText().toCharArray(), registerCheckBox.isSelected())); + } else performHandshake( + new LoginCredentials(userTextField.getText(), passwordField.getText().toCharArray(), registerCheckBox.isSelected(), Startup.VERSION)); } @FXML private void offlineModeButtonPressed() { - attemptOfflineMode(new LoginCredentials(userTextField.getText(), passwordField.getText().toCharArray(), false)); + attemptOfflineMode(new LoginCredentials(userTextField.getText(), passwordField.getText().toCharArray(), false, Startup.VERSION)); } @FXML @@ -142,9 +145,9 @@ public final class LoginScene { private void performHandshake(LoginCredentials credentials) { try { - client.performHandshake(credentials, receivedMessageCache, receivedMessageStatusChangeEventCache); + client.performHandshake(credentials, receivedMessageCache, receivedMessageStatusChangeCache); if (client.isOnline()) { - client.initReceiver(localDB, receivedMessageCache, receivedMessageStatusChangeEventCache); + client.initReceiver(localDB, receivedMessageCache, receivedMessageStatusChangeCache); loadChatScene(); } } catch (IOException | InterruptedException | TimeoutException e) { @@ -209,7 +212,7 @@ public final class LoginScene { // Relay unread messages from cache if (receivedMessageCache != null && client.isOnline()) receivedMessageCache.relay(); - if (receivedMessageStatusChangeEventCache != null && client.isOnline()) receivedMessageStatusChangeEventCache.relay(); + if (receivedMessageStatusChangeCache != null && client.isOnline()) receivedMessageStatusChangeCache.relay(); } private void clearPasswordFields() {