diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-09-11 15:58:02 +0300 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-09-11 15:58:02 +0300 |
| commit | 9ba9248ebea1209db2c0f005135fa7bfaf8dedf6 (patch) | |
| tree | 9d9ea802f1e9d4cef4b96f46f83b6f3b165165ff /go-src/windowsHelpers.go | |
| parent | 636ba9a01f7f4c7bbd4c40f65d2d8d00d27d3564 (diff) | |
| download | ctfc-9ba9248ebea1209db2c0f005135fa7bfaf8dedf6.tar ctfc-9ba9248ebea1209db2c0f005135fa7bfaf8dedf6.tar.gz ctfc-9ba9248ebea1209db2c0f005135fa7bfaf8dedf6.zip | |
Abstracted logic for updating multiple properties with password validation (for each)
Diffstat (limited to 'go-src/windowsHelpers.go')
| -rw-r--r-- | go-src/windowsHelpers.go | 36 |
1 files changed, 36 insertions, 0 deletions
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) { |
