[SDK] Add sendAsync & dump to wasm (#346)

* use bitcoin receivers

* add sendAsync to wasm

* add dump() to wasm
This commit is contained in:
João Bordalo
2024-10-09 17:53:58 +02:00
committed by GitHub
parent bc8df6802e
commit ea5fa22023
2 changed files with 41 additions and 2 deletions

View File

@@ -30,11 +30,13 @@ func init() {
js.Global().Set("receive", ReceiveWrapper())
js.Global().Set("sendOnChain", SendOnChainWrapper())
js.Global().Set("sendOffChain", SendOffChainWrapper())
js.Global().Set("sendAsync", SendAsyncWrapper())
js.Global().Set("claim", ClaimWrapper())
js.Global().Set("unilateralRedeem", UnilateralRedeemWrapper())
js.Global().Set("collaborativeRedeem", CollaborativeRedeemWrapper())
js.Global().Set("getTransactionHistory", GetTransactionHistoryWrapper())
js.Global().Set("log", LogWrapper())
js.Global().Set("dump", DumpWrapper())
js.Global().Set("getAspUrl", GetAspUrlWrapper())
js.Global().Set("getAspPubKeyHex", GetAspPubkeyWrapper())

View File

@@ -164,6 +164,19 @@ func ReceiveWrapper() js.Func {
})
}
func DumpWrapper() js.Func {
return JSPromise(func(args []js.Value) (interface{}, error) {
if arkSdkClient == nil {
return nil, errors.New("ARK SDK client is not initialized")
}
seed, err := arkSdkClient.Dump(context.Background())
if err != nil {
return nil, err
}
return js.ValueOf(seed), nil
})
}
func SendOnChainWrapper() js.Func {
return JSPromise(func(args []js.Value) (interface{}, error) {
if len(args) != 1 {
@@ -172,7 +185,7 @@ func SendOnChainWrapper() js.Func {
receivers := make([]arksdk.Receiver, args[0].Length())
for i := 0; i < args[0].Length(); i++ {
receiver := args[0].Index(i)
receivers[i] = arksdk.NewLiquidReceiver(
receivers[i] = arksdk.NewBitcoinReceiver(
receiver.Get("To").String(), uint64(receiver.Get("Amount").Int()),
)
}
@@ -196,7 +209,7 @@ func SendOffChainWrapper() js.Func {
receivers := make([]arksdk.Receiver, args[1].Length())
for i := 0; i < args[1].Length(); i++ {
receiver := args[1].Index(i)
receivers[i] = arksdk.NewLiquidReceiver(
receivers[i] = arksdk.NewBitcoinReceiver(
receiver.Get("To").String(), uint64(receiver.Get("Amount").Int()),
)
}
@@ -211,6 +224,30 @@ func SendOffChainWrapper() js.Func {
})
}
func SendAsyncWrapper() js.Func {
return JSPromise(func(args []js.Value) (interface{}, error) {
if len(args) != 2 {
return nil, errors.New("invalid number of args")
}
withExpiryCoinselect := args[0].Bool()
receivers := make([]arksdk.Receiver, args[1].Length())
for i := 0; i < args[1].Length(); i++ {
receiver := args[1].Index(i)
receivers[i] = arksdk.NewBitcoinReceiver(
receiver.Get("To").String(), uint64(receiver.Get("Amount").Int()),
)
}
txID, err := arkSdkClient.SendAsync(
context.Background(), withExpiryCoinselect, receivers,
)
if err != nil {
return nil, err
}
return js.ValueOf(txID), nil
})
}
func ClaimWrapper() js.Func {
return JSPromise(func(args []js.Value) (interface{}, error) {
if len(args) != 0 {