From 1a89f853db7f8e2151495905c76d93acf3290308 Mon Sep 17 00:00:00 2001
From: Jake Taylor <jake@elixxir.io>
Date: Thu, 22 Dec 2022 11:31:37 -0600
Subject: [PATCH] simplify put function

---
 indexedDb/channels/implementation.go | 10 +++-------
 indexedDb/dm/implementation.go       | 10 +++-------
 indexedDb/utils.go                   | 14 +++++++-------
 3 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/indexedDb/channels/implementation.go b/indexedDb/channels/implementation.go
index cf64d77f..6bb3916f 100644
--- a/indexedDb/channels/implementation.go
+++ b/indexedDb/channels/implementation.go
@@ -377,18 +377,14 @@ func (w *wasmModel) receiveHelper(newMessage *Message, isUpdate bool) (uint64,
 	}
 
 	// Store message to database
-	addReq, err := indexedDb.Put(w.db, messageStoreName, messageObj)
+	result, err := indexedDb.Put(w.db, messageStoreName, messageObj)
 	if err != nil {
 		return 0, errors.Errorf("Unable to put Message: %+v", err)
 	}
-	res, err := addReq.Result()
-	if err != nil {
-		return 0, errors.Errorf("Unable to get Message result: %+v", err)
-	}
 
 	// NOTE: Sometimes the insert fails to return an error but hits a duplicate
 	//  insert, so this fallthrough returns the UUID entry in that case.
-	if res.IsUndefined() {
+	if result.IsUndefined() {
 		msgID := message.ID{}
 		copy(msgID[:], newMessage.MessageID)
 		uuid, errLookup := w.msgIDLookup(msgID)
@@ -397,7 +393,7 @@ func (w *wasmModel) receiveHelper(newMessage *Message, isUpdate bool) (uint64,
 		}
 		return 0, errors.Errorf("uuid lookup failure: %+v", err)
 	}
-	uuid := uint64(res.Int())
+	uuid := uint64(result.Int())
 	jww.DEBUG.Printf("Successfully stored message %d", uuid)
 
 	return uuid, nil
diff --git a/indexedDb/dm/implementation.go b/indexedDb/dm/implementation.go
index 6324aecf..0b5e812d 100644
--- a/indexedDb/dm/implementation.go
+++ b/indexedDb/dm/implementation.go
@@ -341,18 +341,14 @@ func (w *wasmModel) receiveHelper(newMessage *Message, isUpdate bool) (uint64,
 	}
 
 	// Store message to database
-	addReq, err := indexedDb.Put(w.db, messageStoreName, messageObj)
+	result, err := indexedDb.Put(w.db, messageStoreName, messageObj)
 	if err != nil {
 		return 0, errors.Errorf("Unable to put Message: %+v", err)
 	}
-	res, err := addReq.Result()
-	if err != nil {
-		return 0, errors.Errorf("Unable to get Message result: %+v", err)
-	}
 
 	// NOTE: Sometimes the insert fails to return an error but hits a duplicate
 	//  insert, so this fallthrough returns the UUID entry in that case.
-	if res.IsUndefined() {
+	if result.IsUndefined() {
 		msgID := message.ID{}
 		copy(msgID[:], newMessage.MessageID)
 		uuid, errLookup := w.msgIDLookup(msgID)
@@ -361,7 +357,7 @@ func (w *wasmModel) receiveHelper(newMessage *Message, isUpdate bool) (uint64,
 		}
 		return 0, errors.Errorf("uuid lookup failure: %+v", err)
 	}
-	uuid := uint64(res.Int())
+	uuid := uint64(result.Int())
 	jww.DEBUG.Printf("Successfully stored message %d", uuid)
 
 	return uuid, nil
diff --git a/indexedDb/utils.go b/indexedDb/utils.go
index a8e7fd8e..5af14e99 100644
--- a/indexedDb/utils.go
+++ b/indexedDb/utils.go
@@ -127,33 +127,33 @@ func GetIndex(db *idb.Database, objectStoreName string,
 
 // Put is a generic helper for putting values into the given [idb.ObjectStore].
 // Equivalent to insert if not exists else update.
-func Put(db *idb.Database, objectStoreName string, value js.Value) (*idb.Request, error) {
+func Put(db *idb.Database, objectStoreName string, value js.Value) (js.Value, error) {
 	// Prepare the Transaction
 	txn, err := db.Transaction(idb.TransactionReadWrite, objectStoreName)
 	if err != nil {
-		return nil, errors.Errorf("Unable to create Transaction: %+v", err)
+		return js.Undefined(), errors.Errorf("Unable to create Transaction: %+v", err)
 	}
 	store, err := txn.ObjectStore(objectStoreName)
 	if err != nil {
-		return nil, errors.Errorf("Unable to get ObjectStore: %+v", err)
+		return js.Undefined(), errors.Errorf("Unable to get ObjectStore: %+v", err)
 	}
 
 	// Perform the operation
 	request, err := store.Put(value)
 	if err != nil {
-		return nil, errors.Errorf("Unable to Put: %+v", err)
+		return js.Undefined(), errors.Errorf("Unable to Put: %+v", err)
 	}
 
 	// Wait for the operation to return
 	ctx, cancel := NewContext()
-	err = txn.Await(ctx)
+	result, err := request.Await(ctx)
 	cancel()
 	if err != nil {
-		return nil, errors.Errorf("Putting value failed: %+v", err)
+		return js.Undefined(), errors.Errorf("Putting value failed: %+v", err)
 	}
 	jww.DEBUG.Printf("Successfully put value in %s: %v",
 		objectStoreName, utils.JsToJson(value))
-	return request, nil
+	return result, nil
 }
 
 // Delete is a generic helper for removing values from the given [idb.ObjectStore].
-- 
GitLab