From ea5fa220239883108d8bb872b400986f6e65ff02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Bordalo?= Date: Wed, 9 Oct 2024 17:53:58 +0200 Subject: [PATCH] [SDK] Add sendAsync & dump to wasm (#346) * use bitcoin receivers * add sendAsync to wasm * add dump() to wasm --- pkg/client-sdk/wasm/browser/exports.go | 2 ++ pkg/client-sdk/wasm/browser/wrappers.go | 41 +++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/pkg/client-sdk/wasm/browser/exports.go b/pkg/client-sdk/wasm/browser/exports.go index 6c8d3c1..348857c 100644 --- a/pkg/client-sdk/wasm/browser/exports.go +++ b/pkg/client-sdk/wasm/browser/exports.go @@ -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()) diff --git a/pkg/client-sdk/wasm/browser/wrappers.go b/pkg/client-sdk/wasm/browser/wrappers.go index 752ed12..741f7c5 100644 --- a/pkg/client-sdk/wasm/browser/wrappers.go +++ b/pkg/client-sdk/wasm/browser/wrappers.go @@ -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 {