diff --git a/.gitignore b/.gitignore index 69e9a58..aee3707 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ id_* *.gdbm *.log user-data +**/*/vise-asm diff --git a/handlers/application/send.go b/handlers/application/send.go index 538f977..bbcea64 100644 --- a/handlers/application/send.go +++ b/handlers/application/send.go @@ -258,6 +258,7 @@ func (h *MenuHandlers) TransactionReset(ctx context.Context, sym string, input [ flag_invalid_recipient, _ := h.flagManager.GetFlag("flag_invalid_recipient") flag_invalid_recipient_with_invite, _ := h.flagManager.GetFlag("flag_invalid_recipient_with_invite") + store := h.userdataStore err = store.WriteEntry(ctx, sessionId, storedb.DATA_AMOUNT, []byte("")) if err != nil { @@ -336,28 +337,13 @@ func (h *MenuHandlers) MaxAmount(ctx context.Context, sym string, input []byte) // Format the active balance amount to 2 decimal places formattedBalance, _ := store.TruncateDecimalString(string(activeBal), 2) - // If normal transaction, or if the sym is send_max_amount, return balance - if string(transactionType) == "normal" || sym == "send_max_amount" { + // If normal transaction return balance + if string(transactionType) == "normal" { res.FlagReset = append(res.FlagReset, flag_swap_transaction) - res.Content = l.Get("Maximum amount: %s %s\nEnter amount:", formattedBalance, string(activeSym)) - return res, nil } - res.FlagSet = append(res.FlagSet, flag_swap_transaction) - - // Get the recipient's phone number to read other data items - recipientPhoneNumber, err := userStore.ReadEntry(ctx, sessionId, storedb.DATA_RECIPIENT_PHONE_NUMBER) - if err != nil { - // invalid state - return res, err - } - recipientActiveSym, recipientActiveAddress, recipientActiveDecimal, err := h.getRecipientData(ctx, string(recipientPhoneNumber)) - if err != nil { - return res, err - } - // Resolve active pool address activePoolAddress, err := h.resolveActivePoolAddress(ctx, sessionId) if err != nil { @@ -372,16 +358,31 @@ func (h *MenuHandlers) MaxAmount(ctx context.Context, sym string, input []byte) logg.ErrorCtxf(ctx, "failed on CheckTokenInPool", "error", err) return res, nil } + res.FlagReset = append(res.FlagReset, flag_swap_transaction) res.Content = l.Get("Maximum amount: %s %s\nEnter amount:", formattedBalance, string(activeSym)) return res, nil } + // Get the recipient's phone number to read other data items + recipientPhoneNumber, err := userStore.ReadEntry(ctx, sessionId, storedb.DATA_RECIPIENT_PHONE_NUMBER) + if err != nil { + // invalid state + return res, err + } + recipientActiveSym, recipientActiveAddress, recipientActiveDecimal, err := h.getRecipientData(ctx, string(recipientPhoneNumber)) + if err != nil { + return res, err + } + // retrieve the max credit send amounts maxSAT, maxRAT, err := h.calculateSendCreditLimits(ctx, activePoolAddress, activeAddress, recipientActiveAddress, publicKey, activeDecimal, recipientActiveDecimal) if err != nil { - res.FlagSet = append(res.FlagSet, flag_api_call_error) + // if an error (such as Swap rates not found for the speficied pool and tokens), fall back to a normal transaction logg.ErrorCtxf(ctx, "failed on calculateSendCreditLimits", "error", err) + res.FlagReset = append(res.FlagReset, flag_swap_transaction) + res.Content = l.Get("Maximum amount: %s %s\nEnter amount:", formattedBalance, string(activeSym)) + return res, nil } @@ -413,6 +414,9 @@ func (h *MenuHandlers) MaxAmount(ctx context.Context, sym string, input []byte) return res, err } + // only set the flag once all checks pass + res.FlagSet = append(res.FlagSet, flag_swap_transaction) + res.Content = l.Get( "Credit Available: %s %s\n(You can swap up to %s %s -> %s %s).\nEnter %s amount:", maxRAT, diff --git a/services/registration/credit_amount.vis b/services/registration/credit_amount.vis index f0f716f..1e402b3 100644 --- a/services/registration/credit_amount.vis +++ b/services/registration/credit_amount.vis @@ -1,4 +1,5 @@ LOAD reset_transaction_amount 10 +RELOAD reset_transaction_amount LOAD credit_max_amount 160 RELOAD credit_max_amount CATCH api_failure flag_api_call_error 1 @@ -10,7 +11,6 @@ RELOAD clear_trans_type_flag CATCH transaction_swap flag_swap_transaction 1 LOAD validate_amount 64 RELOAD validate_amount -CATCH api_failure flag_api_call_error 1 CATCH invalid_amount flag_invalid_amount 1 INCMP _ 0 LOAD get_recipient 0 diff --git a/services/registration/credit_send_menu b/services/registration/credit_send_menu deleted file mode 100644 index 4362df7..0000000 --- a/services/registration/credit_send_menu +++ /dev/null @@ -1 +0,0 @@ -Credit-Send \ No newline at end of file diff --git a/services/registration/credit_send_menu_swa b/services/registration/credit_send_menu_swa deleted file mode 100644 index 2d8f3c2..0000000 --- a/services/registration/credit_send_menu_swa +++ /dev/null @@ -1 +0,0 @@ -Tuma-Mkopo \ No newline at end of file diff --git a/services/registration/main.vis b/services/registration/main.vis index b585d2f..f210214 100644 --- a/services/registration/main.vis +++ b/services/registration/main.vis @@ -7,22 +7,20 @@ LOAD check_balance 128 RELOAD check_balance MAP check_balance MOUT send 1 -MOUT credit_send 2 -MOUT swap 3 -MOUT vouchers 4 -MOUT select_pool 5 -MOUT mpesa 6 -MOUT account 7 -MOUT help 8 +MOUT swap 2 +MOUT vouchers 3 +MOUT select_pool 4 +MOUT mpesa 5 +MOUT account 6 +MOUT help 7 MOUT quit 9 HALT -INCMP send 1 -INCMP credit_send 2 -INCMP swap_to_list 3 -INCMP my_vouchers 4 -INCMP select_pool 5 -INCMP mpesa 6 -INCMP my_account 7 -INCMP help 8 +INCMP credit_send 1 +INCMP swap_to_list 2 +INCMP my_vouchers 3 +INCMP select_pool 4 +INCMP mpesa 5 +INCMP my_account 6 +INCMP help 7 INCMP quit 9 INCMP . * diff --git a/services/registration/send b/services/registration/send deleted file mode 100644 index 306466c..0000000 --- a/services/registration/send +++ /dev/null @@ -1 +0,0 @@ -Enter recipient's phone number/address/alias: \ No newline at end of file diff --git a/services/registration/send.vis b/services/registration/send.vis deleted file mode 100644 index dfdcd70..0000000 --- a/services/registration/send.vis +++ /dev/null @@ -1,12 +0,0 @@ -LOAD transaction_reset 0 -RELOAD transaction_reset -CATCH no_voucher flag_no_active_voucher 1 -MOUT back 0 -HALT -LOAD validate_recipient 50 -RELOAD validate_recipient -CATCH api_failure flag_api_call_error 1 -CATCH invalid_recipient flag_invalid_recipient 1 -CATCH invite_recipient flag_invalid_recipient_with_invite 1 -INCMP _ 0 -INCMP amount * diff --git a/services/registration/send_swa b/services/registration/send_swa deleted file mode 100644 index 5deea97..0000000 --- a/services/registration/send_swa +++ /dev/null @@ -1 +0,0 @@ -Weka nambari ya simu/Anwani/Lakabu: \ No newline at end of file