From a91fa10f703fbcf9b758ced4e1c492ed1ab3815f Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Tue, 22 Dec 2020 11:33:02 +0100
Subject: [PATCH] #562 - button to test remote connection now shows toast on
 success or error

---
 .../settings/SettingsController.java          | 24 +++++++++++++++----
 .../resources/languages/base_de.properties    |  2 ++
 .../resources/languages/base_en.properties    |  2 ++
 src/main/resources/static/js/settings.js      | 11 +++++----
 .../resources/templates/helpers/sendData.ftl  |  1 +
 5 files changed, 30 insertions(+), 10 deletions(-)
 create mode 100644 src/main/resources/templates/helpers/sendData.ftl

diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
index da04c1e39..24243f30b 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
@@ -1,10 +1,14 @@
 package de.deadlocker8.budgetmaster.settings;
 
+import com.google.gson.JsonObject;
 import de.deadlocker8.budgetmaster.Build;
 import de.deadlocker8.budgetmaster.accounts.AccountService;
 import de.deadlocker8.budgetmaster.authentication.User;
 import de.deadlocker8.budgetmaster.authentication.UserRepository;
-import de.deadlocker8.budgetmaster.backup.*;
+import de.deadlocker8.budgetmaster.backup.AutoBackupStrategy;
+import de.deadlocker8.budgetmaster.backup.AutoBackupTime;
+import de.deadlocker8.budgetmaster.backup.BackupService;
+import de.deadlocker8.budgetmaster.backup.GitHelper;
 import de.deadlocker8.budgetmaster.categories.CategoryService;
 import de.deadlocker8.budgetmaster.categories.CategoryType;
 import de.deadlocker8.budgetmaster.controller.BaseController;
@@ -12,7 +16,6 @@ import de.deadlocker8.budgetmaster.database.Database;
 import de.deadlocker8.budgetmaster.database.DatabaseParser;
 import de.deadlocker8.budgetmaster.database.DatabaseService;
 import de.deadlocker8.budgetmaster.database.accountmatches.AccountMatchList;
-import de.deadlocker8.budgetmaster.backup.BackupService;
 import de.deadlocker8.budgetmaster.services.ImportService;
 import de.deadlocker8.budgetmaster.update.BudgetMasterUpdateService;
 import de.deadlocker8.budgetmaster.utils.LanguageType;
@@ -361,14 +364,25 @@ public class SettingsController extends BaseController
 	}
 
 	@PostMapping("/git/test")
-	public String testGit(@RequestParam(value = "autoBackupGitUrl") String autoBackupGitUrl,
+	public String testGit(Model model,
+						  @RequestParam(value = "autoBackupGitUrl") String autoBackupGitUrl,
 						  @RequestParam(value = "autoBackupGitUserName") String autoBackupGitUserName,
 						  @RequestParam(value = "autoBackupGitPassword") String autoBackupGitPassword)
 	{
 		final CredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(autoBackupGitUserName, autoBackupGitPassword);
 		final boolean isValidConnection = GitHelper.checkConnection(autoBackupGitUrl, credentialsProvider);
 
-		// TODO: return isValidConnection or json
-		return "1234";
+		String localizedMessage = Localization.getString("settings.backup.auto.git.test.fail");
+		if(isValidConnection)
+		{
+			localizedMessage = Localization.getString("settings.backup.auto.git.test.success");
+		}
+
+		final JsonObject data = new JsonObject();
+		data.addProperty("isValidConnection", isValidConnection);
+		data.addProperty("localizedMessage", localizedMessage);
+
+		model.addAttribute("data", data.toString());
+		return "helpers/sendData";
 	}
 }
\ No newline at end of file
diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties
index 53365a79e..a9cb8a5c4 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -212,6 +212,8 @@ settings.backup.auto.git.url=Adresse des Git-Servers
 settings.backup.auto.git.user.name=Git Nutzername
 settings.backup.auto.git.password=Git Passwort
 settings.backup.auto.git.test=Verbindung testen
+settings.backup.auto.git.test.success=Verbindung erfolgreich!
+settings.backup.auto.git.test.fail=Verbindung fehlgeschlagen!
 
 settings.database.import=Importieren
 settings.database.export=Exportieren
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index b7055ddc0..84dbe5cb7 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -212,6 +212,8 @@ settings.backup.auto.git.url=Git server address
 settings.backup.auto.git.user.name=Git user name
 settings.backup.auto.git.password=Git password
 settings.backup.auto.git.test=Test connection
+settings.backup.auto.git.test.success=Connection successful!
+settings.backup.auto.git.test.fail=Connection failed!
 
 settings.database.import=Import
 settings.database.export=Export
diff --git a/src/main/resources/static/js/settings.js b/src/main/resources/static/js/settings.js
index 62be0a988..525315df5 100644
--- a/src/main/resources/static/js/settings.js
+++ b/src/main/resources/static/js/settings.js
@@ -35,11 +35,12 @@ $(document).ready(function()
             },
             success: function(data)
             {
-                M.toast({html: data});
-            },
-            error: function(data)
-            {
-                console.log(data);
+                let parsedData = JSON.parse(data);
+                let isValidConnection = parsedData['isValidConnection']
+                M.toast({
+                    html: parsedData['localizedMessage'],
+                    classes: isValidConnection ? 'green': 'red'
+                });
             }
         });
     });
diff --git a/src/main/resources/templates/helpers/sendData.ftl b/src/main/resources/templates/helpers/sendData.ftl
new file mode 100644
index 000000000..db9fd7bdd
--- /dev/null
+++ b/src/main/resources/templates/helpers/sendData.ftl
@@ -0,0 +1 @@
+${data}
-- 
GitLab