added a mapping to replace invalid characters on voucher symbols

This commit is contained in:
Alfred Kamanda 2025-10-03 16:56:48 +03:00
parent 2cd875eb4d
commit 8585203c0a

View File

@ -15,6 +15,11 @@ var (
logg = logging.NewVanilla().WithDomain("vouchers").WithContextKey("SessionId") logg = logging.NewVanilla().WithDomain("vouchers").WithContextKey("SessionId")
) )
// symbolReplacements holds mappings of invalid symbols → valid ones
var symbolReplacements = map[string]string{
"USD₮": "USDT",
}
// VoucherMetadata helps organize data fields // VoucherMetadata helps organize data fields
type VoucherMetadata struct { type VoucherMetadata struct {
Symbols string Symbols string
@ -23,13 +28,24 @@ type VoucherMetadata struct {
Addresses string Addresses string
} }
// sanitizeSymbol replaces known invalid token symbols with normalized ones
func sanitizeSymbol(symbol string) string {
if replacement, ok := symbolReplacements[symbol]; ok {
return replacement
}
return symbol
}
// ProcessVouchers converts holdings into formatted strings // ProcessVouchers converts holdings into formatted strings
func ProcessVouchers(holdings []dataserviceapi.TokenHoldings) VoucherMetadata { func ProcessVouchers(holdings []dataserviceapi.TokenHoldings) VoucherMetadata {
var data VoucherMetadata var data VoucherMetadata
var symbols, balances, decimals, addresses []string var symbols, balances, decimals, addresses []string
for i, h := range holdings { for i, h := range holdings {
symbols = append(symbols, fmt.Sprintf("%d:%s", i+1, h.TokenSymbol)) // normalize token symbol before use
cleanSymbol := sanitizeSymbol(h.TokenSymbol)
symbols = append(symbols, fmt.Sprintf("%d:%s", i+1, cleanSymbol))
// Scale down the balance // Scale down the balance
scaledBalance := ScaleDownBalance(h.Balance, h.TokenDecimals) scaledBalance := ScaleDownBalance(h.Balance, h.TokenDecimals)