From bd713556b54df9a69273f603e60067f4b5ff5fbe Mon Sep 17 00:00:00 2001
From: "Richard T. Carback III" <rick.carback@gmail.com>
Date: Tue, 20 Jun 2023 17:52:57 +0000
Subject: [PATCH] Convert blocking functions to promises

---
 wasm/dm.go | 28 ++++++++++++++++++++++------
 1 file changed, 22 insertions(+), 6 deletions(-)

diff --git a/wasm/dm.go b/wasm/dm.go
index 92f47125..e993aa28 100644
--- a/wasm/dm.go
+++ b/wasm/dm.go
@@ -397,10 +397,15 @@ func (dmc *DMClient) SetNickname(_ js.Value, args []js.Value) any {
 //
 // Parameters:
 //   - args[0] - The partner's [ed25519.PublicKey] key to block (Uint8Array).
+//
+// Returns a promise that exits upon completion.
 func (dmc *DMClient) BlockPartner(_ js.Value, args []js.Value) any {
 	partnerPubKey := utils.CopyBytesToGo(args[0])
-	dmc.api.BlockPartner(partnerPubKey)
-	return nil
+	promiseFn := func(resolve, reject func(args ...any) js.Value) {
+		dmc.api.BlockPartner(partnerPubKey)
+		resolve()
+	}
+	return utils.CreatePromise(promiseFn)
 }
 
 // UnblockPartner unblocks a blocked partner to allow DM messages.
@@ -409,8 +414,11 @@ func (dmc *DMClient) BlockPartner(_ js.Value, args []js.Value) any {
 //   - args[0] - The partner's [ed25519.PublicKey] to unblock (Uint8Array).
 func (dmc *DMClient) UnblockPartner(_ js.Value, args []js.Value) any {
 	partnerPubKey := utils.CopyBytesToGo(args[0])
-	dmc.api.UnblockPartner(partnerPubKey)
-	return nil
+	promiseFn := func(resolve, reject func(args ...any) js.Value) {
+		dmc.api.UnblockPartner(partnerPubKey)
+		resolve()
+	}
+	return utils.CreatePromise(promiseFn)
 }
 
 // IsBlocked indicates if the given partner is blocked.
@@ -423,7 +431,11 @@ func (dmc *DMClient) UnblockPartner(_ js.Value, args []js.Value) any {
 //   - boolean
 func (dmc *DMClient) IsBlocked(_ js.Value, args []js.Value) any {
 	partnerPubKey := utils.CopyBytesToGo(args[0])
-	return dmc.api.IsBlocked(partnerPubKey)
+	promiseFn := func(resolve, reject func(args ...any) js.Value) {
+		isBlocked := dmc.api.IsBlocked(partnerPubKey)
+		resolve(isBlocked)
+	}
+	return utils.CreatePromise(promiseFn)
 }
 
 // GetBlockedPartners returns all partners who are blocked by this user.
@@ -439,7 +451,11 @@ func (dmc *DMClient) IsBlocked(_ js.Value, args []js.Value) any {
 //	  "CWDqF1bnhulW2pko+zgmbDZNaKkmNtFdUgY4bTm2DhA="
 //	]
 func (dmc *DMClient) GetBlockedPartners(js.Value, []js.Value) any {
-	return utils.CopyBytesToJS(dmc.api.GetBlockedPartners())
+	promiseFn := func(resolve, reject func(args ...any) js.Value) {
+		blocked := utils.CopyBytesToJS(dmc.api.GetBlockedPartners())
+		resolve(blocked)
+	}
+	return utils.CreatePromise(promiseFn)
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-- 
GitLab