|
|
|
@ -93,8 +93,9 @@ public final class Startup extends Application {
|
|
|
|
|
logger.info("Attempting authentication with token...");
|
|
|
|
|
localDB.initializeUserStorage();
|
|
|
|
|
localDB.loadUserData();
|
|
|
|
|
performHandshake(LoginCredentials.loginWithToken(localDB.getUser().getName(), localDB.getAuthToken(), VERSION, localDB.getLastSync()));
|
|
|
|
|
// TODO: handle unsuccessful handshake
|
|
|
|
|
if (!performHandshake(
|
|
|
|
|
LoginCredentials.loginWithToken(localDB.getUser().getName(), localDB.getAuthToken(), VERSION, localDB.getLastSync())))
|
|
|
|
|
sceneContext.load(SceneInfo.LOGIN_SCENE);
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
// Load login scene
|
|
|
|
@ -106,9 +107,10 @@ public final class Startup extends Application {
|
|
|
|
|
* Tries to perform a Handshake with the server.
|
|
|
|
|
*
|
|
|
|
|
* @param credentials the credentials to use for the handshake
|
|
|
|
|
* @return whether the handshake was successful or offline mode could be entered
|
|
|
|
|
* @since Envoy Client v0.2-beta
|
|
|
|
|
*/
|
|
|
|
|
public static void performHandshake(LoginCredentials credentials) {
|
|
|
|
|
public static boolean performHandshake(LoginCredentials credentials) {
|
|
|
|
|
final var cacheMap = new CacheMap();
|
|
|
|
|
cacheMap.put(Message.class, new Cache<Message>());
|
|
|
|
|
cacheMap.put(GroupMessage.class, new Cache<GroupMessage>());
|
|
|
|
@ -120,10 +122,13 @@ public final class Startup extends Application {
|
|
|
|
|
if (client.isOnline()) {
|
|
|
|
|
loadChatScene();
|
|
|
|
|
client.initReceiver(localDB, cacheMap);
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
} catch (IOException | InterruptedException | TimeoutException e) {
|
|
|
|
|
logger.log(Level.INFO, "Could not connect to server. Entering offline mode...");
|
|
|
|
|
attemptOfflineMode(credentials.getIdentifier());
|
|
|
|
|
return attemptOfflineMode(credentials.getIdentifier());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -132,9 +137,10 @@ public final class Startup extends Application {
|
|
|
|
|
* for a given user.
|
|
|
|
|
*
|
|
|
|
|
* @param identifier the identifier of the user - currently his username
|
|
|
|
|
* @return whether the offline mode could be entered
|
|
|
|
|
* @since Envoy Client v0.2-beta
|
|
|
|
|
*/
|
|
|
|
|
public static void attemptOfflineMode(String identifier) {
|
|
|
|
|
public static boolean attemptOfflineMode(String identifier) {
|
|
|
|
|
try {
|
|
|
|
|
// Try entering offline mode
|
|
|
|
|
localDB.loadUsers();
|
|
|
|
@ -142,10 +148,12 @@ public final class Startup extends Application {
|
|
|
|
|
if (clientUser == null) throw new EnvoyException("Could not enter offline mode: user name unknown");
|
|
|
|
|
client.setSender(clientUser);
|
|
|
|
|
loadChatScene();
|
|
|
|
|
return true;
|
|
|
|
|
} catch (final Exception e) {
|
|
|
|
|
new Alert(AlertType.ERROR, "Client error: " + e).showAndWait();
|
|
|
|
|
logger.log(Level.SEVERE, "Offline mode could not be loaded: ", e);
|
|
|
|
|
System.exit(1);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|