diff --git a/client/app/src/main/java/main/MainApplication.java b/client/app/src/main/java/main/MainApplication.java index 6108243..f6987aa 100644 --- a/client/app/src/main/java/main/MainApplication.java +++ b/client/app/src/main/java/main/MainApplication.java @@ -1,10 +1,13 @@ package main; +import config.Config; +import config.ConfigLoader; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.stage.Stage; import res.DataController; +import res.HttpRequest; import java.io.IOException; import java.util.Objects; @@ -12,10 +15,46 @@ import java.util.Objects; public class MainApplication extends Application { @Override public void start(Stage stage) throws IOException { + Config config = ConfigLoader.load(); + if(config == null){ + config = new Config(false, -1, ""); + } System.out.println("Ignore 'Illegal reflective access operation'-Warning. See https://github.com/sshahine/JFoenix/issues/1170"); - // Load login-scene + if( + !config.isLoginSaved() + || new DataController().loginWithToken(config.getId(), config.getToken()) + ){ + // Load login-scene + loadLoginScene(); + } + + if (DataController.USER_ID >= 0) { + if(config.isLoginSaved()){ + config.setId(DataController.USER_ID); + config.setToken(HttpRequest.TOKEN); + } + // Load main-scene + loadMainScene(stage); + + System.out.println("Logged in..."); + } + } + + private void loadMainScene(Stage stage) throws IOException { + FXMLLoader fxmlLoader = new FXMLLoader(MainApplication.class.getResource("main-view.fxml")); + + Scene scene = new Scene(fxmlLoader.load(), 1200, 700); + scene.getStylesheets().add(Objects.requireNonNull( + MainApplication.class.getResource("main-view.css")).toExternalForm() + ); + stage.setTitle("SharePlaner"); + stage.setScene(scene); + stage.show(); + } + + private void loadLoginScene() throws IOException { FXMLLoader fxmlLoaderLogin = new FXMLLoader(MainApplication.class.getResource("../users/login.fxml")); Scene sceneLogin = new Scene(fxmlLoaderLogin.load(), 650, 500); sceneLogin.getStylesheets().add(Objects.requireNonNull( @@ -25,21 +64,6 @@ public class MainApplication extends Application { stageLogin.setTitle("Anmelden"); stageLogin.setScene(sceneLogin); stageLogin.showAndWait(); - - if (DataController.USER_ID >= 0) { - // Load main-scene - FXMLLoader fxmlLoader = new FXMLLoader(MainApplication.class.getResource("main-view.fxml")); - - Scene scene = new Scene(fxmlLoader.load(), 1200, 700); - scene.getStylesheets().add(Objects.requireNonNull( - MainApplication.class.getResource("main-view.css")).toExternalForm() - ); - stage.setTitle("SharePlaner"); - stage.setScene(scene); - stage.show(); - - System.out.println("Logged in..."); - } } public static void main(String[] args) { diff --git a/client/data/src/main/java/config/Config.java b/client/data/src/main/java/config/Config.java new file mode 100644 index 0000000..98401a0 --- /dev/null +++ b/client/data/src/main/java/config/Config.java @@ -0,0 +1,41 @@ +package config; + +public class Config { + private boolean saveLogin; + private long id; + private String token; + + public Config(){ + + } + + public Config(boolean saveLogin, long id, String token) { + this.saveLogin = saveLogin; + this.id = id; + this.token = token; + } + + public boolean isLoginSaved() { + return saveLogin; + } + + public void setSaveLogin(boolean saveLogin) { + this.saveLogin = saveLogin; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } +} diff --git a/client/data/src/main/java/config/ConfigLoader.java b/client/data/src/main/java/config/ConfigLoader.java new file mode 100644 index 0000000..56e195e --- /dev/null +++ b/client/data/src/main/java/config/ConfigLoader.java @@ -0,0 +1,38 @@ +package config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import res.DataController; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; + +public class ConfigLoader { + + public static Config load(){ + try { + String jsonString = Files.readString(Paths.get("config.json")); + + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.findAndRegisterModules(); + return objectMapper.readValue(jsonString, Config.class); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + public static void save(Config config){ + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.findAndRegisterModules(); + + try { + Files.writeString(Paths.get( + "config.json"), + objectMapper.writeValueAsString(config) + ); + } catch (IOException e) { + e.printStackTrace(); + } + } +}