mirror of
https://github.com/grassrootseconomics/cic-custodial.git
synced 2025-04-09 03:21:02 +02:00
77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
package server
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/grassrootseconomics/cic-custodial/internal/tasker/client"
|
|
"github.com/hibiken/asynq"
|
|
)
|
|
|
|
func (tp *TaskerProcessor) setNewAccountNonce(ctx context.Context, t *asynq.Task) error {
|
|
var (
|
|
p client.RegistrationPayload
|
|
)
|
|
|
|
if err := json.Unmarshal(t.Payload(), &p); err != nil {
|
|
return fmt.Errorf("json.Unmarshal failed: %v: %w", err, asynq.SkipRetry)
|
|
}
|
|
|
|
if err := tp.ActionsProvider.SetNewAccountNonce(ctx, p.PublicKey); err != nil {
|
|
return err
|
|
}
|
|
|
|
_, err := tp.TaskerClient.CreateRegistrationTask(p, client.GiftGasTask)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (tp *TaskerProcessor) giftGasProcessor(ctx context.Context, t *asynq.Task) error {
|
|
var (
|
|
p client.RegistrationPayload
|
|
)
|
|
|
|
if err := json.Unmarshal(t.Payload(), &p); err != nil {
|
|
return fmt.Errorf("json.Unmarshal failed: %v: %w", err, asynq.SkipRetry)
|
|
}
|
|
|
|
signedTx, err := tp.ActionsProvider.SignGiftGasTx(ctx, p.PublicKey)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
_, err = tp.TaskerClient.CreateTxDispatchTask(client.TxPayload{
|
|
Tx: signedTx,
|
|
}, client.TxDispatchTask)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
_, err = tp.TaskerClient.CreateRegistrationTask(p, client.ActivateAccountTask)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (tp *TaskerProcessor) activateAccountProcessor(ctx context.Context, t *asynq.Task) error {
|
|
var (
|
|
p client.RegistrationPayload
|
|
)
|
|
|
|
if err := json.Unmarshal(t.Payload(), &p); err != nil {
|
|
return fmt.Errorf("json.Unmarshal failed: %v: %w", err, asynq.SkipRetry)
|
|
}
|
|
|
|
if err := tp.ActionsProvider.ActivateCustodialAccount(ctx, p.PublicKey); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|