From 9ba9248ebea1209db2c0f005135fa7bfaf8dedf6 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Sat, 11 Sep 2021 15:58:02 +0300 Subject: Abstracted logic for updating multiple properties with password validation (for each) --- go-src/windowsHelpers.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'go-src/windowsHelpers.go') diff --git a/go-src/windowsHelpers.go b/go-src/windowsHelpers.go index 761e0d2..f59f34f 100644 --- a/go-src/windowsHelpers.go +++ b/go-src/windowsHelpers.go @@ -161,6 +161,42 @@ func formWindow(boxTitle string, backWindow window, formInputs []formInput, curr return } +type multiFormProp struct { + propInd int + editTitle string + formInp formInput + updateF func([]string) bool + postSucUpdateF func([]string) +} + +func validatedMultiForm(input string, returnWindow window, props ...multiFormProp) { + propInd, _ := strconv.Atoi(input) + inputs, triedUpdate, updateSuccessful := []formInput{{currentPasswordInName, inputBackSpec, nil}}, false, false + + for _, v := range props { + if v.propInd == propInd { + triedUpdate = true + + values := formWindow(v.editTitle, returnWindow, append(inputs, v.formInp)) + updateSuccessful = v.updateF(values) + + if updateSuccessful && v.postSucUpdateF != nil { + v.postSucUpdateF(values) + } + break + } + } + + if !triedUpdate { + defer showError(invalidCommand, returnWindow) + } + if !updateSuccessful { + defer showError(invalidArgument, returnWindow) + } else { + defer returnWindow() + } +} + /* Error */ func showError(message string, callback window, callbackData ...string) { -- cgit v1.2.3