Include tx hash in token event
This commit is contained in:
		
							parent
							
								
									123a79450c
								
							
						
					
					
						commit
						98c65bc1b1
					
				@ -6,9 +6,9 @@ import (
 | 
			
		||||
	"log/slog"
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	"git.grassecon.net/urdt/ussd/common"
 | 
			
		||||
 | 
			
		||||
	geEvent "github.com/grassrootseconomics/eth-tracker/pkg/event"
 | 
			
		||||
 | 
			
		||||
	"git.grassecon.net/urdt/ussd/common"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// TODO: this vocabulary should be public in and provided by the eth-tracker repo
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,9 @@ import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"strconv"
 | 
			
		||||
 | 
			
		||||
	geEvent "github.com/grassrootseconomics/eth-tracker/pkg/event"
 | 
			
		||||
 | 
			
		||||
	"git.defalsify.org/vise.git/db"
 | 
			
		||||
	"git.grassecon.net/urdt/ussd/common"
 | 
			
		||||
@ -12,7 +15,7 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	evTransfer = "TOKEN_TRANSFER"
 | 
			
		||||
	evTokenTransfer = "TOKEN_TRANSFER"
 | 
			
		||||
	// TODO: use export from urdt storage
 | 
			
		||||
	DATATYPE_USERSUB = 64
 | 
			
		||||
)
 | 
			
		||||
@ -24,7 +27,8 @@ func renderTx() {
 | 
			
		||||
type eventTokenTransfer struct {
 | 
			
		||||
	From string
 | 
			
		||||
	To string
 | 
			
		||||
	Value string
 | 
			
		||||
	Value int
 | 
			
		||||
	TxHash string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func updateTokenTransferList(ctx context.Context, api remote.AccountServiceInterface, store common.UserDataStore, identity lookup.Identity) error {
 | 
			
		||||
@ -95,6 +99,10 @@ func updateDefaultToken(ctx context.Context, store *common.UserDataStore, identi
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func updateWait(ctx context.Context, api remote.AccountServiceInterface) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func updateToken(ctx context.Context, store *common.UserDataStore, identity lookup.Identity) error {
 | 
			
		||||
	var api remote.AccountService
 | 
			
		||||
 | 
			
		||||
@ -128,6 +136,43 @@ func updateToken(ctx context.Context, store *common.UserDataStore, identity look
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func asTokenTransferEvent(gev *geEvent.Event) (*eventTokenTransfer, bool) {
 | 
			
		||||
	var err error
 | 
			
		||||
	var ok bool
 | 
			
		||||
	var ev eventTokenTransfer
 | 
			
		||||
 | 
			
		||||
	if gev.TxType != evTokenTransfer {
 | 
			
		||||
		return nil, false
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pl := gev.Payload
 | 
			
		||||
	// assuming from and to are checksum addresses
 | 
			
		||||
	ev.From, ok = pl["from"].(string)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return nil, false
 | 
			
		||||
	}
 | 
			
		||||
	ev.To, ok = pl["to"].(string)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return nil, false
 | 
			
		||||
	}
 | 
			
		||||
	ev.TxHash, err = common.NormalizeHex(gev.TxHash)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logg.Error("could not decode tx hash", "tx", gev.TxHash, "err", err)
 | 
			
		||||
		return nil, false
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	value, ok := pl["value"].(string)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return nil, false
 | 
			
		||||
	}
 | 
			
		||||
	ev.Value, err = strconv.Atoi(value)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logg.Error("could not decode value", "value", value, "err", err)
 | 
			
		||||
		return nil, false
 | 
			
		||||
	}
 | 
			
		||||
	return &ev, true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func handleTokenTransfer(ctx context.Context, store *common.UserDataStore, ev *eventTokenTransfer) error {
 | 
			
		||||
	identity, err := lookup.IdentityFromAddress(ctx, store, ev.From)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user