|
|
|
@ -10,7 +10,6 @@ import (
|
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
|
|
"git.defalsify.org/vise.git/asm"
|
|
|
|
|
"github.com/grassrootseconomics/eth-custodial/pkg/api"
|
|
|
|
|
|
|
|
|
|
"git.defalsify.org/vise.git/cache"
|
|
|
|
|
"git.defalsify.org/vise.git/db"
|
|
|
|
@ -25,14 +24,13 @@ import (
|
|
|
|
|
"gopkg.in/leonelquinteros/gotext.v1"
|
|
|
|
|
|
|
|
|
|
"git.grassecon.net/urdt/ussd/internal/storage"
|
|
|
|
|
dataserviceapi "github.com/grassrootseconomics/ussd-data-service/pkg/api"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
logg = logging.NewVanilla().WithDomain("ussdmenuhandler")
|
|
|
|
|
scriptDir = path.Join("services", "registration")
|
|
|
|
|
translationDir = path.Join(scriptDir, "locale")
|
|
|
|
|
okResponse *api.OKResponse
|
|
|
|
|
errResponse *api.ErrResponse
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Define the regex patterns as constants
|
|
|
|
@ -114,6 +112,9 @@ func (h *Handlers) Init(ctx context.Context, sym string, input []byte) (resource
|
|
|
|
|
logg.WarnCtxf(ctx, "handler init called before it is ready or more than once", "state", h.st, "cache", h.ca)
|
|
|
|
|
return r, nil
|
|
|
|
|
}
|
|
|
|
|
defer func() {
|
|
|
|
|
h.pe = nil
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
h.st = h.pe.GetState()
|
|
|
|
|
h.ca = h.pe.GetMemory()
|
|
|
|
@ -133,7 +134,6 @@ func (h *Handlers) Init(ctx context.Context, sym string, input []byte) (resource
|
|
|
|
|
logg.ErrorCtxf(ctx, "perister fail in handler", "state", h.st, "cache", h.ca)
|
|
|
|
|
return r, fmt.Errorf("cannot get state and memory for handler")
|
|
|
|
|
}
|
|
|
|
|
h.pe = nil
|
|
|
|
|
|
|
|
|
|
logg.DebugCtxf(ctx, "handler has been initialized", "state", h.st, "cache", h.ca)
|
|
|
|
|
|
|
|
|
@ -1548,6 +1548,38 @@ func (h *Handlers) CheckVouchers(ctx context.Context, sym string, input []byte)
|
|
|
|
|
return res, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// check the current active sym and update the data
|
|
|
|
|
activeSym, _ := store.ReadEntry(ctx, sessionId, common.DATA_ACTIVE_SYM)
|
|
|
|
|
if activeSym != nil {
|
|
|
|
|
activeSymStr := string(activeSym)
|
|
|
|
|
|
|
|
|
|
// Find the matching voucher data
|
|
|
|
|
var activeData *dataserviceapi.TokenHoldings
|
|
|
|
|
for _, voucher := range vouchersResp {
|
|
|
|
|
if voucher.TokenSymbol == activeSymStr {
|
|
|
|
|
activeData = &voucher
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if activeData == nil {
|
|
|
|
|
logg.ErrorCtxf(ctx, "activeSym not found in vouchers", "activeSym", activeSymStr)
|
|
|
|
|
return res, fmt.Errorf("activeSym %s not found in vouchers", activeSymStr)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Scale down the balance
|
|
|
|
|
scaledBalance := common.ScaleDownBalance(activeData.Balance, activeData.TokenDecimals)
|
|
|
|
|
|
|
|
|
|
// Update the balance field with the scaled value
|
|
|
|
|
activeData.Balance = scaledBalance
|
|
|
|
|
|
|
|
|
|
// Pass the matching voucher data to UpdateVoucherData
|
|
|
|
|
if err := common.UpdateVoucherData(ctx, h.userdataStore, sessionId, activeData); err != nil {
|
|
|
|
|
logg.ErrorCtxf(ctx, "failed on UpdateVoucherData", "error", err)
|
|
|
|
|
return res, err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
data := common.ProcessVouchers(vouchersResp)
|
|
|
|
|
|
|
|
|
|
// Store all voucher data
|
|
|
|
|