Compare commits
46 Commits
v1.3.0-rc.
...
alfred/poo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d60f5461e6 | ||
|
|
35d562ffdd
|
||
|
|
7d8631fa87
|
||
|
|
c8159113f0
|
||
|
|
126415050c
|
||
|
|
5b989d83e1
|
||
|
|
7199d0f3e0
|
||
|
|
feea74c2c9
|
||
|
|
b6dcf65ea3
|
||
|
|
da7b6e93e1
|
||
|
|
97be43b9ec
|
||
|
|
a9ecb1bbae
|
||
|
|
7e2e3c3722
|
||
|
|
724d11b4db
|
||
|
|
2ace3606bc
|
||
|
|
ab5299fae2
|
||
|
|
c407dd1702
|
||
|
|
9729a6442b
|
||
|
|
fd0c9cbc68
|
||
|
|
2eef202a1a
|
||
|
|
1df102db9f
|
||
|
|
8292f76334
|
||
|
|
ec8dc2fb1d
|
||
|
|
6a91049ffb
|
||
|
|
d13d24f032
|
||
|
|
46d5c2f035
|
||
|
|
69ea52d91c
|
||
|
|
450cba07c7
|
||
|
|
16380dbe49
|
||
|
|
2a46de9a6f
|
||
|
|
baff75da50
|
||
|
|
d6047827a4
|
||
|
|
6642fc0137
|
||
|
|
c367984930
|
||
|
|
21922e2b62
|
||
|
|
a21186bd59
|
||
|
|
28eefb6197
|
||
|
|
3e9a67b34e
|
||
|
|
2a2d43c279
|
||
|
|
a1f0e4dcfe
|
||
|
|
ee07bf11f8
|
||
|
|
cb1d129eda
|
||
|
|
e8978413a5
|
||
|
|
566503956d
|
||
|
|
c5dbe966c4
|
||
|
|
1221372424
|
@@ -21,11 +21,3 @@ LANGUAGES=eng, swa
|
||||
|
||||
#Alias search domains
|
||||
ALIAS_SEARCH_DOMAINS=sarafu.local, sarafu.eth
|
||||
|
||||
#Pool swap
|
||||
DEFAULT_POOL_NAME="Kenya ROLA Pool"
|
||||
DEFAULT_POOL_SYMBOL=ROLA
|
||||
DEFAULT_POOL_CONTRACT_ADDRESS=0x48a953cA5cf5298bc6f6Af3C608351f537AAcb9e
|
||||
DEFAULT_LIMITER_ADDRESS=
|
||||
DEFAULT_VOUCHER_REGISTRY=
|
||||
INCLUDE_STABLES_PARAM=false
|
||||
|
||||
@@ -25,7 +25,7 @@ const (
|
||||
defaultSSHHost string = "127.0.0.1"
|
||||
defaultSSHPort uint = 7122
|
||||
defaultHTTPHost string = "127.0.0.1"
|
||||
defaultHTTPPort uint = 7123
|
||||
defaultHTTPPort uint = 7123
|
||||
defaultDomain = "sarafu.local"
|
||||
)
|
||||
|
||||
@@ -52,6 +52,7 @@ func SearchDomains() []string {
|
||||
return ParsedDomains
|
||||
}
|
||||
|
||||
|
||||
func Language() string {
|
||||
return viseconfig.DefaultLanguage
|
||||
}
|
||||
@@ -75,15 +76,3 @@ func PortSSH() uint {
|
||||
func ATEndpoint() string {
|
||||
return env.GetEnv("AT_ENDPOINT", "/")
|
||||
}
|
||||
|
||||
func DefaultPoolAddress() string {
|
||||
return env.GetEnv("DEFAULT_POOL_CONTRACT_ADDRESS", "")
|
||||
}
|
||||
|
||||
func DefaultPoolName() string {
|
||||
return env.GetEnv("DEFAULT_POOL_NAME", "")
|
||||
}
|
||||
|
||||
func DefaultPoolSymbol() string {
|
||||
return env.GetEnv("DEFAULT_POOL_SYMBOL", "")
|
||||
}
|
||||
|
||||
4
go.mod
4
go.mod
@@ -5,12 +5,12 @@ go 1.23.4
|
||||
require (
|
||||
git.defalsify.org/vise.git v0.3.2-0.20250507172020-cb22240f1cb9
|
||||
git.grassecon.net/grassrootseconomics/common v0.9.0-beta.1.0.20250417111317-2953f4c2f32e
|
||||
git.grassecon.net/grassrootseconomics/sarafu-api v0.9.0-beta.1.0.20250521141246-6c3719e3b652
|
||||
git.grassecon.net/grassrootseconomics/sarafu-api v0.9.0-beta.1.0.20250517114512-050998ff82b1
|
||||
git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.2.0.20250408094335-e2d1f65bb306
|
||||
git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694
|
||||
github.com/alecthomas/assert/v2 v2.2.2
|
||||
github.com/gofrs/uuid v4.4.0+incompatible
|
||||
github.com/grassrootseconomics/ussd-data-service v1.4.7-beta
|
||||
github.com/grassrootseconomics/ussd-data-service v1.4.4-beta
|
||||
github.com/jackc/pgx/v5 v5.7.1
|
||||
github.com/peteole/testdata-loader v0.3.0
|
||||
github.com/stretchr/testify v1.9.0
|
||||
|
||||
8
go.sum
8
go.sum
@@ -12,12 +12,6 @@ git.grassecon.net/grassrootseconomics/sarafu-api v0.9.0-beta.1.0.20250517113706-
|
||||
git.grassecon.net/grassrootseconomics/sarafu-api v0.9.0-beta.1.0.20250517113706-ee434dba6980/go.mod h1:K/TPgZ4OhPHBQq2X0ab3JZs4YjiexzSURZcfHLs9Pf4=
|
||||
git.grassecon.net/grassrootseconomics/sarafu-api v0.9.0-beta.1.0.20250517114512-050998ff82b1 h1:0hvILlGkZnXO8o7nZth4xu77vAS4zVQ6Ae0rb5x/Idg=
|
||||
git.grassecon.net/grassrootseconomics/sarafu-api v0.9.0-beta.1.0.20250517114512-050998ff82b1/go.mod h1:K/TPgZ4OhPHBQq2X0ab3JZs4YjiexzSURZcfHLs9Pf4=
|
||||
git.grassecon.net/grassrootseconomics/sarafu-api v0.9.0-beta.1.0.20250520125035-81fbc2574c30 h1:iZVmR/4xSoxahtkMBXs/z1HUSSnr+x1m+9AxXIgTvb0=
|
||||
git.grassecon.net/grassrootseconomics/sarafu-api v0.9.0-beta.1.0.20250520125035-81fbc2574c30/go.mod h1:R7+mt27mhm4/LCutAHHv87pOsLxXEPO93KXnhP8H6W0=
|
||||
git.grassecon.net/grassrootseconomics/sarafu-api v0.9.0-beta.1.0.20250521124206-343d30a2f27c h1:c2cA5hcYnLgs7kR4fF5tp42W6VQClTukbfKoaeskZu0=
|
||||
git.grassecon.net/grassrootseconomics/sarafu-api v0.9.0-beta.1.0.20250521124206-343d30a2f27c/go.mod h1:R7+mt27mhm4/LCutAHHv87pOsLxXEPO93KXnhP8H6W0=
|
||||
git.grassecon.net/grassrootseconomics/sarafu-api v0.9.0-beta.1.0.20250521141246-6c3719e3b652 h1:MmUQRL6Fjq/jlL53h+cUbJ7WwQ+q/yNy/zT05c7bgNg=
|
||||
git.grassecon.net/grassrootseconomics/sarafu-api v0.9.0-beta.1.0.20250521141246-6c3719e3b652/go.mod h1:wKHPy1mpOCr9ahkRltwm1yi9qH/3m9xb8hMCX5C0L1o=
|
||||
git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.2.0.20250408094335-e2d1f65bb306 h1:Jo+yWysWw/N5BJQtAyEMN8ePVvAyPHv+JG4lQti+1N4=
|
||||
git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.2.0.20250408094335-e2d1f65bb306/go.mod h1:FdLwYtzsjOIcDiW4uDgDYnB4Wdzq12uJUe0QHSSPbSo=
|
||||
git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694 h1:DjJlBSz0S13acft5XZDWk7ZYnzElym0xLMYEVgyNJ+E=
|
||||
@@ -80,8 +74,6 @@ github.com/grassrootseconomics/ussd-data-service v1.4.0-beta h1:4fMd/3h2ZIhRg4Gd
|
||||
github.com/grassrootseconomics/ussd-data-service v1.4.0-beta/go.mod h1:9sGnorpKaK76FmOGXoh/xv7x5siSFNYdXxQo9BKW4DI=
|
||||
github.com/grassrootseconomics/ussd-data-service v1.4.4-beta h1:turlyo0i3OLj29mWpWNoB/3Qao8qEngT/5d1jDWTZE4=
|
||||
github.com/grassrootseconomics/ussd-data-service v1.4.4-beta/go.mod h1:9sGnorpKaK76FmOGXoh/xv7x5siSFNYdXxQo9BKW4DI=
|
||||
github.com/grassrootseconomics/ussd-data-service v1.4.7-beta h1:yAe1YaOBsdxW2m20jnVU4F0kLmFr+mK/gHCWEdHmE90=
|
||||
github.com/grassrootseconomics/ussd-data-service v1.4.7-beta/go.mod h1:9sGnorpKaK76FmOGXoh/xv7x5siSFNYdXxQo9BKW4DI=
|
||||
github.com/graygnuorg/go-gdbm v0.0.0-20220711140707-71387d66dce4 h1:U4kkNYryi/qfbBF8gh7Vsbuz+cVmhf5kt6pE9bYYyLo=
|
||||
github.com/graygnuorg/go-gdbm v0.0.0-20220711140707-71387d66dce4/go.mod h1:zpZDgZFzeq9s0MIeB1P50NIEWDFFHSFBohI/NbaTD/Y=
|
||||
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
|
||||
|
||||
@@ -2707,6 +2707,11 @@ func (h *MenuHandlers) LoadSwapToList(ctx context.Context, sym string, input []b
|
||||
}
|
||||
|
||||
userStore := h.userdataStore
|
||||
publicKey, err := userStore.ReadEntry(ctx, sessionId, storedb.DATA_PUBLIC_KEY)
|
||||
if err != nil {
|
||||
logg.ErrorCtxf(ctx, "failed to read publicKey entry with", "key", storedb.DATA_PUBLIC_KEY, "error", err)
|
||||
return res, err
|
||||
}
|
||||
|
||||
// get the active address and symbol
|
||||
activeAddress, err := userStore.ReadEntry(ctx, sessionId, storedb.DATA_ACTIVE_ADDRESS)
|
||||
@@ -2733,9 +2738,9 @@ func (h *MenuHandlers) LoadSwapToList(ctx context.Context, sym string, input []b
|
||||
}
|
||||
|
||||
defaultPool := dataserviceapi.PoolDetails{
|
||||
PoolName: config.DefaultPoolName(),
|
||||
PoolSymbol: config.DefaultPoolSymbol(),
|
||||
PoolContractAdrress: config.DefaultPoolAddress(),
|
||||
PoolName: "Kenya ROLA Pool",
|
||||
PoolSymbol: "ROLA",
|
||||
PoolContractAdrress: "0x48a953cA5cf5298bc6f6Af3C608351f537AAcb9e",
|
||||
LimiterAddress: "",
|
||||
VoucherRegistry: "",
|
||||
}
|
||||
@@ -2757,22 +2762,19 @@ func (h *MenuHandlers) LoadSwapToList(ctx context.Context, sym string, input []b
|
||||
return res, err
|
||||
}
|
||||
|
||||
logg.InfoCtxf(ctx, "CheckTokenInPool", "response", r, "active_pool_address", activePoolAddress, "address", activeAddress)
|
||||
|
||||
if !r.CanSwapFrom {
|
||||
res.FlagSet = append(res.FlagSet, flag_incorrect_voucher)
|
||||
res.Content = l.Get(
|
||||
"%s is not in %s. Please update your voucher and try again.",
|
||||
"%s is not in the KENYA ROLA POOL. Please update your voucher and try again.",
|
||||
activeSym,
|
||||
config.DefaultPoolName(),
|
||||
)
|
||||
return res, nil
|
||||
}
|
||||
|
||||
res.FlagReset = append(res.FlagReset, flag_incorrect_voucher)
|
||||
|
||||
// call the api using the activePoolAddress to get a list of SwapToSymbolsData
|
||||
swapToList, err := h.accountService.GetPoolSwappableVouchers(ctx, string(activePoolAddress))
|
||||
// call the api using the activePoolAddress and publicKey to get a list of SwapToSymbolsData
|
||||
swapToList, err := h.accountService.GetPoolSwappableVouchers(ctx, string(activePoolAddress), string(publicKey))
|
||||
if err != nil {
|
||||
res.FlagSet = append(res.FlagSet, flag_api_error)
|
||||
logg.ErrorCtxf(ctx, "failed on FetchTransactions", "error", err)
|
||||
@@ -2784,11 +2786,12 @@ func (h *MenuHandlers) LoadSwapToList(ctx context.Context, sym string, input []b
|
||||
return res, nil
|
||||
}
|
||||
|
||||
data := store.ProcessTokens(swapToList)
|
||||
data := store.ProcessVouchers(swapToList)
|
||||
|
||||
// Store all swap_to tokens data
|
||||
// Store all to list voucher data
|
||||
dataMap := map[storedb.DataTyp]string{
|
||||
storedb.DATA_POOL_TO_SYMBOLS: data.Symbols,
|
||||
storedb.DATA_POOL_TO_BALANCES: data.Balances,
|
||||
storedb.DATA_POOL_TO_DECIMALS: data.Decimals,
|
||||
storedb.DATA_POOL_TO_ADDRESSES: data.Addresses,
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
Your request failed. Please try again later.
|
||||
Failed to connect to the custodial service. Please try again.
|
||||
@@ -1 +1 @@
|
||||
Ombi lako halikufaulu. Tafadhali jaribu tena baadaye.
|
||||
Imeshindwa kuunganisha kwenye huduma ya uangalizi. Tafadhali jaribu tena.
|
||||
@@ -37,5 +37,5 @@ msgstr "Ombi lako limetumwa. Utapokea SMS wakati %s %s yako itakapobadilishwa ku
|
||||
msgid "%s balance: %s\n"
|
||||
msgstr "%s salio: %s\n"
|
||||
|
||||
msgid "%s is not in %s. Please update your voucher and try again."
|
||||
msgstr "%s haipo kwenye %s. Tafadhali badilisha sarafu yako na ujaribu tena."
|
||||
msgid "%s is not in the KENYA ROLA POOL. Please update your voucher and try again."
|
||||
msgstr "%s haipo kwenye BWAWA LA KENYA ROLA. Tafadhali badilisha sarafu yako na ujaribu tena."
|
||||
@@ -1,5 +1,4 @@
|
||||
RELOAD swap_max_limit
|
||||
CATCH api_failure flag_api_call_error 1
|
||||
MAP swap_max_limit
|
||||
MOUT back 0
|
||||
HALT
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
LOAD swap_preview 0
|
||||
MAP swap_preview
|
||||
CATCH api_failure flag_api_call_error 1
|
||||
MOUT back 0
|
||||
MOUT quit 9
|
||||
LOAD authorize_account 6
|
||||
|
||||
@@ -5,7 +5,6 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strconv"
|
||||
|
||||
storedb "git.grassecon.net/grassrootseconomics/sarafu-vise/store/db"
|
||||
dataserviceapi "github.com/grassrootseconomics/ussd-data-service/pkg/api"
|
||||
@@ -130,8 +129,8 @@ func GetSwapFromVoucherData(ctx context.Context, store DataStore, sessionId stri
|
||||
}, nil
|
||||
}
|
||||
|
||||
// GetSwapToVoucherData retrieves and matches token data
|
||||
func GetSwapToVoucherData(ctx context.Context, store DataStore, sessionId string, input string) (*dataserviceapi.TokenDetails, error) {
|
||||
// GetSwapToVoucherData retrieves and matches voucher data
|
||||
func GetSwapToVoucherData(ctx context.Context, store DataStore, sessionId string, input string) (*dataserviceapi.TokenHoldings, error) {
|
||||
keys := []storedb.DataTyp{
|
||||
storedb.DATA_POOL_TO_SYMBOLS,
|
||||
storedb.DATA_POOL_TO_BALANCES,
|
||||
@@ -148,7 +147,7 @@ func GetSwapToVoucherData(ctx context.Context, store DataStore, sessionId string
|
||||
data[key] = string(value)
|
||||
}
|
||||
|
||||
symbol, _, decimal, address := MatchVoucher(input,
|
||||
symbol, balance, decimal, address := MatchVoucher(input,
|
||||
data[storedb.DATA_POOL_TO_SYMBOLS],
|
||||
data[storedb.DATA_POOL_TO_BALANCES],
|
||||
data[storedb.DATA_POOL_TO_DECIMALS],
|
||||
@@ -159,27 +158,22 @@ func GetSwapToVoucherData(ctx context.Context, store DataStore, sessionId string
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
decimalInt, err := strconv.ParseUint(decimal, 0, 64)
|
||||
if err != nil {
|
||||
logg.ErrorCtxf(ctx, "Failed to parse decimal to Uint:", "sessionId", sessionId, "decimal", decimal, "error", err)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
return &dataserviceapi.TokenDetails{
|
||||
TokenSymbol: string(symbol),
|
||||
TokenDecimals: uint8(decimalInt),
|
||||
TokenAddress: string(address),
|
||||
return &dataserviceapi.TokenHoldings{
|
||||
TokenSymbol: string(symbol),
|
||||
Balance: string(balance),
|
||||
TokenDecimals: string(decimal),
|
||||
ContractAddress: string(address),
|
||||
}, nil
|
||||
}
|
||||
|
||||
// UpdateSwapToVoucherData updates the active swap to voucher data in the DataStore.
|
||||
func UpdateSwapToVoucherData(ctx context.Context, store DataStore, sessionId string, data *dataserviceapi.TokenDetails) error {
|
||||
logg.TraceCtxf(ctx, "UpdateSwapToVoucherData", "data", data)
|
||||
func UpdateSwapToVoucherData(ctx context.Context, store DataStore, sessionId string, data *dataserviceapi.TokenHoldings) error {
|
||||
logg.TraceCtxf(ctx, "dtal", "data", data)
|
||||
// Active swap to voucher data entries
|
||||
activeEntries := map[storedb.DataTyp][]byte{
|
||||
storedb.DATA_ACTIVE_SWAP_TO_SYM: []byte(data.TokenSymbol),
|
||||
storedb.DATA_ACTIVE_SWAP_TO_DECIMAL: []byte{data.TokenDecimals},
|
||||
storedb.DATA_ACTIVE_SWAP_TO_ADDRESS: []byte(data.TokenAddress),
|
||||
storedb.DATA_ACTIVE_SWAP_TO_DECIMAL: []byte(data.TokenDecimals),
|
||||
storedb.DATA_ACTIVE_SWAP_TO_ADDRESS: []byte(data.ContractAddress),
|
||||
}
|
||||
|
||||
// Write active data
|
||||
|
||||
@@ -47,24 +47,6 @@ func ProcessVouchers(holdings []dataserviceapi.TokenHoldings) VoucherMetadata {
|
||||
return data
|
||||
}
|
||||
|
||||
// ProcessTokens converts swappable tokens into formatted strings
|
||||
func ProcessTokens(holdings []dataserviceapi.TokenDetails) VoucherMetadata {
|
||||
var data VoucherMetadata
|
||||
var symbols, decimals, addresses []string
|
||||
|
||||
for i, h := range holdings {
|
||||
symbols = append(symbols, fmt.Sprintf("%d:%s", i+1, h.TokenSymbol))
|
||||
decimals = append(decimals, fmt.Sprintf("%d:%d", i+1, h.TokenDecimals))
|
||||
addresses = append(addresses, fmt.Sprintf("%d:%s", i+1, h.TokenAddress))
|
||||
}
|
||||
|
||||
data.Symbols = strings.Join(symbols, "\n")
|
||||
data.Decimals = strings.Join(decimals, "\n")
|
||||
data.Addresses = strings.Join(addresses, "\n")
|
||||
|
||||
return data
|
||||
}
|
||||
|
||||
func ScaleDownBalance(balance, decimals string) string {
|
||||
// Convert balance and decimals to big.Float
|
||||
bal := new(big.Float)
|
||||
|
||||
Reference in New Issue
Block a user