From ab6433168a2c4d73e316b98129e91200788c8478 Mon Sep 17 00:00:00 2001 From: alfred-mk Date: Tue, 3 Sep 2024 15:02:31 +0300 Subject: [PATCH 1/2] Resolve bug on transaction confirmation PIN --- internal/handlers/ussd/menuhandler.go | 3 ++- services/registration/transaction_initiated.vis | 4 +++- services/registration/transaction_pin.vis | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/internal/handlers/ussd/menuhandler.go b/internal/handlers/ussd/menuhandler.go index cb2a913..2491d5f 100644 --- a/internal/handlers/ussd/menuhandler.go +++ b/internal/handlers/ussd/menuhandler.go @@ -837,9 +837,10 @@ func (h *Handlers) InitiateTransaction(ctx context.Context, sym string, input [] account_authorized_flag, err := h.parser.GetFlag("flag_account_authorized") if err != nil { - res.FlagReset = append(res.FlagReset, account_authorized_flag) + return res, nil } + res.FlagReset = append(res.FlagReset, account_authorized_flag) return res, nil } diff --git a/services/registration/transaction_initiated.vis b/services/registration/transaction_initiated.vis index b1042f5..3b8b9f6 100644 --- a/services/registration/transaction_initiated.vis +++ b/services/registration/transaction_initiated.vis @@ -1,4 +1,6 @@ -LOAD reset_incorrect 0 +LOAD reset_incorrect 6 +CATCH incorrect_pin flag_incorrect_pin 1 +CATCH _ flag_account_authorized 0 LOAD get_amount 10 MAP get_amount RELOAD get_recipient diff --git a/services/registration/transaction_pin.vis b/services/registration/transaction_pin.vis index 878104c..cadbdcf 100644 --- a/services/registration/transaction_pin.vis +++ b/services/registration/transaction_pin.vis @@ -6,7 +6,7 @@ MAP get_sender MOUT back 0 MOUT quit 9 HALT -LOAD authorize_account 1 +LOAD authorize_account 6 RELOAD authorize_account CATCH incorrect_pin flag_incorrect_pin 1 INCMP _ 0 From f90fde90fb70b3352f5bd5d5a110149f064c2ecc Mon Sep 17 00:00:00 2001 From: alfred-mk Date: Tue, 3 Sep 2024 15:04:09 +0300 Subject: [PATCH 2/2] Register flags in debugger from the csv --- cmd/main.go | 60 ++++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index ea38272..a696850 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -2,12 +2,14 @@ package main import ( "context" + "encoding/csv" "flag" "fmt" + "io" "os" "path" + "strconv" - "git.defalsify.org/vise.git/asm" "git.defalsify.org/vise.git/cache" "git.defalsify.org/vise.git/engine" "git.defalsify.org/vise.git/persist" @@ -36,44 +38,40 @@ func main() { st := state.NewState(16) st.UseDebug() - // Initialize the FlagParser pfp := path.Join(scriptDir, "pp.csv") - parser := asm.NewFlagParser() - - // Load flags from the pp.csv file - _, err := parser.Load(pfp) + file, err := os.Open(pfp) if err != nil { - fmt.Fprintf(os.Stderr, "Failed to load flags: %v\n", err) + fmt.Fprintf(os.Stderr, "Failed to open CSV file: %v\n", err) os.Exit(1) } + defer file.Close() + reader := csv.NewReader(file) - // Register all flags loaded from pp.csv - flagKeys := []string{ - "flag_language_set", - "flag_account_created", - "flag_account_creation_failed", - "flag_account_pending", - "flag_account_success", - "flag_pin_mismatch", - "flag_pin_set", - "flag_account_authorized", - "flag_invalid_recipient", - "flag_invalid_recipient_with_invite", - "flag_invalid_amount", - "flag_incorrect_pin", - "flag_valid_pin", - "flag_allow_update", - "flag_single_edit", - "flag_incorrect_date_format", - } - - for _, key := range flagKeys { - id, err := parser.GetFlag(key) + // Iterate through the CSV records and register the flags + for { + record, err := reader.Read() if err != nil { - fmt.Fprintf(os.Stderr, "Failed to get flag %s: %v\n", key, err) + if err == io.EOF { + break + } + fmt.Fprintf(os.Stderr, "Error reading CSV file: %v\n", err) + os.Exit(1) + } + + // Ensure the record starts with "flag" and has at least 3 columns + if len(record) < 3 || record[0] != "flag" { continue } - state.FlagDebugger.Register(id, key) + + flagName := record[1] + flagValue, err := strconv.Atoi(record[2]) + if err != nil { + fmt.Fprintf(os.Stderr, "Failed to convert flag value %s to integer: %v\n", record[2], err) + continue + } + + // Register the flag + state.FlagDebugger.Register(uint32(flagValue), flagName) } rfs := resource.NewFsResource(scriptDir)