From 9b14feb133a8e8c1c7e151646b5b6e706a6cc7d1 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Mon, 1 Mar 2021 21:01:54 +0100 Subject: [PATCH] #583 - show feedback after saving settings, searching for update and deleting database --- .../settings/SettingsController.java | 30 +++++++++++++++---- .../resources/languages/base_de.properties | 3 ++ .../resources/languages/base_en.properties | 3 ++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java index ccfa4d3ee..9825de028 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java @@ -13,11 +13,16 @@ 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.services.ImportEntityType; import de.deadlocker8.budgetmaster.services.ImportService; +import de.deadlocker8.budgetmaster.services.UpdateCheckService; import de.deadlocker8.budgetmaster.update.BudgetMasterUpdateService; import de.deadlocker8.budgetmaster.utils.LanguageType; import de.deadlocker8.budgetmaster.utils.Mappings; import de.deadlocker8.budgetmaster.utils.Strings; +import de.deadlocker8.budgetmaster.utils.WebRequestUtils; +import de.deadlocker8.budgetmaster.utils.notification.Notification; +import de.deadlocker8.budgetmaster.utils.notification.NotificationType; import de.thecodelabs.utils.util.Localization; import de.thecodelabs.utils.util.RandomUtils; import de.thecodelabs.versionizer.UpdateItem; @@ -43,6 +48,7 @@ import java.nio.charset.StandardCharsets; import java.text.MessageFormat; import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.Optional; @@ -58,12 +64,13 @@ public class SettingsController extends BaseController private final CategoryService categoryService; private final ImportService importService; private final BudgetMasterUpdateService budgetMasterUpdateService; + private final UpdateCheckService updateCheckService; private final BackupService scheduleTaskService; private final List<Integer> SEARCH_RESULTS_PER_PAGE_OPTIONS = Arrays.asList(10, 20, 25, 30, 50, 100); @Autowired - public SettingsController(SettingsService settingsService, UserRepository userRepository, DatabaseService databaseService, AccountService accountService, CategoryService categoryService, ImportService importService, BudgetMasterUpdateService budgetMasterUpdateService, BackupService scheduleTaskService) + public SettingsController(SettingsService settingsService, UserRepository userRepository, DatabaseService databaseService, AccountService accountService, CategoryService categoryService, ImportService importService, BudgetMasterUpdateService budgetMasterUpdateService, UpdateCheckService updateCheckService, BackupService scheduleTaskService) { this.settingsService = settingsService; this.userRepository = userRepository; @@ -72,6 +79,7 @@ public class SettingsController extends BaseController this.categoryService = categoryService; this.importService = importService; this.budgetMasterUpdateService = budgetMasterUpdateService; + this.updateCheckService = updateCheckService; this.scheduleTaskService = scheduleTaskService; } @@ -84,7 +92,8 @@ public class SettingsController extends BaseController } @PostMapping(value = "/save") - public String post(Model model, @ModelAttribute("Settings") Settings settings, BindingResult bindingResult, + public String post(WebRequest request, Model model, + @ModelAttribute("Settings") Settings settings, BindingResult bindingResult, @RequestParam(value = "password") String password, @RequestParam(value = "passwordConfirmation") String passwordConfirmation, @RequestParam(value = "languageType") String languageType, @@ -159,6 +168,8 @@ public class SettingsController extends BaseController Localization.load(); categoryService.localizeDefaultCategories(); + WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.settings.saved"), NotificationType.SUCCESS)); + return "redirect:/settings"; } @@ -225,7 +236,7 @@ public class SettingsController extends BaseController } @PostMapping(value = "/database/delete") - public String deleteDatabase(Model model, @RequestParam("verificationCode") String verificationCode, + public String deleteDatabase(WebRequest request, @RequestParam("verificationCode") String verificationCode, @RequestParam("verificationUserInput") String verificationUserInput) { if(verificationUserInput.equals(verificationCode)) @@ -233,13 +244,15 @@ public class SettingsController extends BaseController LOGGER.info("Deleting database..."); databaseService.reset(); LOGGER.info("Deleting database DONE."); + + WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.settings.database.delete.success"), NotificationType.SUCCESS)); + + return "redirect:/settings"; } else { return "redirect:/settings/database/requestDelete"; } - - return "redirect:/settings"; } @GetMapping("/database/requestImport") @@ -296,9 +309,14 @@ public class SettingsController extends BaseController } @GetMapping("/updateSearch") - public String updateSearch() + public String updateSearch(WebRequest request) { budgetMasterUpdateService.getUpdateService().fetchCurrentVersion(); + + if(updateCheckService.isUpdateAvailable()) + { + WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.settings.update.available", updateCheckService.getAvailableVersionString()), NotificationType.INFO)); + } return "redirect:/settings"; } diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index 09e9ad708..ccaf51da5 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -135,6 +135,9 @@ info.text.update=Es ist ein Update für BudgetMaster verfügbar<br><br>Installie info.title.backup.reminder=Zeit für ein Backup info.text.backup.reminder=Schon mal über ein Backup nachgedacht?<br>Du solltest deine BudgetMaster Datenbank regelmäßig sichern.<br>Dies geht besonders einfach in den Einstellungen.<br>Du kannst auch ein automatisches Backup konfigurieren.<br><br>(Du wilst diese Erinnerung nicht jeden Monat sehen? Dann deaktiviere die Backuperinnerung in den Einstellungen.) info.button.backup.reminder=Zu den Einstellungen +notification.settings.saved=Einstellungen gespeichert +notification.settings.update.available=BudgetMaster Update "{0}" verfügbar +notification.settings.database.delete.success=Datenbank erfolgreich gelöscht # WARNING warning.text.account.delete=Das Konto "{0}" kann nicht gelöscht werden, da mindestens ein Konto existieren muss. Um dieses Konto zu löschen musst du zuerst ein neues anlegen. diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index f1c559a2d..56dfcb497 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -135,6 +135,9 @@ info.text.update=An update for BudgetMaster is available<br><br>Installed: v{0}< info.title.backup.reminder=Time for a backup info.text.backup.reminder=Have you ever thought about a backup?<br>You should back up your BudgetMaster database regularly.<br>This can be done on the settings page.<br>You can also enable an automatic backup.<br><br>(You don''t want to see this reminder every month? Disable the backup reminder in the settings.) info.button.backup.reminder=To the settings +notification.settings.saved=Settings saved +notification.settings.update.available=BudgetMaster update "{0}" available +notification.settings.database.delete.success=Successfully deleted database # WARNING warning.text.account.delete=The account "{0}" could not be deleted, because at least one account must exist at all time. You have to create a new account in order to delete this one. -- GitLab