From 72b2ab22089e76c973d805cab55c23ca37f2a59f Mon Sep 17 00:00:00 2001
From: Jono Wenger <jono@elixxir.io>
Date: Thu, 5 Jan 2023 13:51:57 -0800
Subject: [PATCH] Add info about handler return types to docstring

---
 indexedDb/channels/handlers.go       | 45 ++++++++++++++++++----------
 indexedDb/channels/implementation.go |  2 +-
 indexedDb/channels/init.go           | 13 --------
 indexedDb/dm/handlers.go             | 30 ++++++++++++-------
 indexedDb/dm/implementation.go       |  2 +-
 indexedDb/dm/init.go                 | 17 ++---------
 indexedDb/utils.go                   |  2 +-
 indexedDbWorker/channels/init.go     |  4 +--
 indexedDbWorker/dm/init.go           |  4 +--
 9 files changed, 55 insertions(+), 64 deletions(-)

diff --git a/indexedDb/channels/handlers.go b/indexedDb/channels/handlers.go
index fd962afb..5fefb65e 100644
--- a/indexedDb/channels/handlers.go
+++ b/indexedDb/channels/handlers.go
@@ -50,14 +50,15 @@ func (m *manager) RegisterHandlers() {
 	m.mh.RegisterHandler(indexedDbWorker.DeleteMessageTag, m.deleteMessageHandler)
 }
 
-// newWASMEventModelHandler is the handler for NewWASMEventModel.
+// newWASMEventModelHandler is the handler for NewWASMEventModel. Returns nil on
+// success or an error message on failure.
 func (m *manager) newWASMEventModelHandler(data []byte) []byte {
 	var msg mChannels.NewWASMEventModelMessage
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		jww.ERROR.Printf("Could not JSON unmarshal "+
 			"NewWASMEventModelMessage from main thread: %+v", err)
-		return []byte{}
+		return nil
 	}
 
 	// Create new encryption cipher
@@ -67,7 +68,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) []byte {
 	if err != nil {
 		jww.ERROR.Printf("Could not JSON unmarshal channel cipher from "+
 			"main thread: %+v", err)
-		return []byte{}
+		return nil
 	}
 
 	m.model, err = NewWASMEventModel(msg.Path, encryption,
@@ -75,7 +76,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) []byte {
 	if err != nil {
 		return []byte(err.Error())
 	}
-	return []byte{}
+	return nil
 }
 
 // messageReceivedCallback sends calls to the MessageReceivedCallback in the
@@ -98,7 +99,8 @@ func (m *manager) messageReceivedCallback(
 	}
 
 	// Send it to the main thread
-	m.mh.SendResponse(indexedDbWorker.GetMessageTag, indexedDbWorker.InitID, data)
+	m.mh.SendResponse(
+		indexedDbWorker.GetMessageTag, indexedDbWorker.InitID, data)
 }
 
 // storeEncryptionStatus augments the functionality of
@@ -152,7 +154,8 @@ func (m *manager) storeEncryptionStatus(
 	return response.EncryptionStatus, nil
 }
 
-// joinChannelHandler is the handler for wasmModel.JoinChannel.
+// joinChannelHandler is the handler for wasmModel.JoinChannel. Always returns
+// nil; meaning, no response is supplied (or expected).
 func (m *manager) joinChannelHandler(data []byte) []byte {
 	var channel cryptoBroadcast.Channel
 	err := json.Unmarshal(data, &channel)
@@ -166,7 +169,8 @@ func (m *manager) joinChannelHandler(data []byte) []byte {
 	return nil
 }
 
-// leaveChannelHandler is the handler for wasmModel.LeaveChannel.
+// leaveChannelHandler is the handler for wasmModel.LeaveChannel. Always returns
+// nil; meaning, no response is supplied (or expected).
 func (m *manager) leaveChannelHandler(data []byte) []byte {
 	channelID, err := id.Unmarshal(data)
 	if err != nil {
@@ -179,7 +183,8 @@ func (m *manager) leaveChannelHandler(data []byte) []byte {
 	return nil
 }
 
-// receiveMessageHandler is the handler for wasmModel.ReceiveMessage.
+// receiveMessageHandler is the handler for wasmModel.ReceiveMessage. Returns
+// nil on error or the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveMessageHandler(data []byte) []byte {
 	var msg channels.ModelMessage
 	err := json.Unmarshal(data, &msg)
@@ -203,7 +208,8 @@ func (m *manager) receiveMessageHandler(data []byte) []byte {
 	return uuidData
 }
 
-// receiveReplyHandler is the handler for wasmModel.ReceiveReply.
+// receiveReplyHandler is the handler for wasmModel.ReceiveReply. Returns
+// nil on error or the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveReplyHandler(data []byte) []byte {
 	var msg mChannels.ReceiveReplyMessage
 	err := json.Unmarshal(data, &msg)
@@ -227,7 +233,8 @@ func (m *manager) receiveReplyHandler(data []byte) []byte {
 	return uuidData
 }
 
-// receiveReactionHandler is the handler for wasmModel.ReceiveReaction.
+// receiveReactionHandler is the handler for wasmModel.ReceiveReaction. Returns
+// nil on error or the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveReactionHandler(data []byte) []byte {
 	var msg mChannels.ReceiveReplyMessage
 	err := json.Unmarshal(data, &msg)
@@ -251,7 +258,8 @@ func (m *manager) receiveReactionHandler(data []byte) []byte {
 	return uuidData
 }
 
-// updateFromUUIDHandler is the handler for wasmModel.UpdateFromUUID.
+// updateFromUUIDHandler is the handler for wasmModel.UpdateFromUUID. Always
+// returns nil; meaning, no response is supplied (or expected).
 func (m *manager) updateFromUUIDHandler(data []byte) []byte {
 	var msg mChannels.MessageUpdateInfo
 	err := json.Unmarshal(data, &msg)
@@ -290,6 +298,7 @@ func (m *manager) updateFromUUIDHandler(data []byte) []byte {
 }
 
 // updateFromMessageIDHandler is the handler for wasmModel.UpdateFromMessageID.
+// Always returns nil; meaning, no response is supplied (or expected).
 func (m *manager) updateFromMessageIDHandler(data []byte) []byte {
 	var msg mChannels.MessageUpdateInfo
 	err := json.Unmarshal(data, &msg)
@@ -330,7 +339,10 @@ func (m *manager) updateFromMessageIDHandler(data []byte) []byte {
 	return uuidData
 }
 
-// getMessageHandler is the handler for wasmModel.GetMessage.
+// getMessageHandler is the handler for wasmModel.GetMessage. Returns JSON
+// marshalled channels.GetMessageMessage. If an error occurs, then Error will
+// be set with the error message. Otherwise, Message will be set. Only one field
+// will be set.
 func (m *manager) getMessageHandler(data []byte) []byte {
 	messageID, err := message.UnmarshalID(data)
 	if err != nil {
@@ -348,16 +360,17 @@ func (m *manager) getMessageHandler(data []byte) []byte {
 		reply.Message = msg
 	}
 
-	messageData, err := json.Marshal(msg)
+	messageData, err := json.Marshal(reply)
 	if err != nil {
-		jww.ERROR.Printf(
-			"Could not JSON marshal UUID from ReceiveReaction: %+v", err)
+		jww.ERROR.Printf("Could not JSON marshal GetMessageMessage for "+
+			"GetMessage reply: %+v", err)
 		return nil
 	}
 	return messageData
 }
 
-// deleteMessageHandler is the handler for wasmModel.DeleteMessage.
+// deleteMessageHandler is the handler for wasmModel.DeleteMessage. Always
+// returns nil; meaning, no response is supplied (or expected).
 func (m *manager) deleteMessageHandler(data []byte) []byte {
 	messageID, err := message.UnmarshalID(data)
 	if err != nil {
diff --git a/indexedDb/channels/implementation.go b/indexedDb/channels/implementation.go
index 005bd3fb..f26265bc 100644
--- a/indexedDb/channels/implementation.go
+++ b/indexedDb/channels/implementation.go
@@ -13,7 +13,6 @@ import (
 	"crypto/ed25519"
 	"encoding/base64"
 	"encoding/json"
-	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
 	"strings"
 	"sync"
 	"syscall/js"
@@ -28,6 +27,7 @@ import (
 	cryptoBroadcast "gitlab.com/elixxir/crypto/broadcast"
 	cryptoChannel "gitlab.com/elixxir/crypto/channel"
 	"gitlab.com/elixxir/crypto/message"
+	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
 	"gitlab.com/elixxir/xxdk-wasm/utils"
 	"gitlab.com/xx_network/primitives/id"
 )
diff --git a/indexedDb/channels/init.go b/indexedDb/channels/init.go
index f97e2b4a..9ecc16cc 100644
--- a/indexedDb/channels/init.go
+++ b/indexedDb/channels/init.go
@@ -106,19 +106,6 @@ func newWASMModel(databaseName string, encryption cryptoChannel.Cipher,
 		jww.WARN.Printf("IndexedDb encryption disabled!")
 	}
 
-	// Attempt to ensure the database has been properly initialized
-	openRequest, err = idb.Global().Open(ctx, databaseName, currentVersion,
-		func(db *idb.Database, oldVersion, newVersion uint) error {
-			return nil
-		})
-	if err != nil {
-		return nil, err
-	}
-	// Wait for database open to finish
-	db, err = openRequest.Await(ctx)
-	if err != nil {
-		return nil, err
-	}
 	wrapper := &wasmModel{db: db, receivedMessageCB: cb, cipher: encryption}
 
 	return wrapper, nil
diff --git a/indexedDb/dm/handlers.go b/indexedDb/dm/handlers.go
index 2afdde6b..b2a580ba 100644
--- a/indexedDb/dm/handlers.go
+++ b/indexedDb/dm/handlers.go
@@ -44,14 +44,15 @@ func (m *manager) RegisterHandlers() {
 	m.mh.RegisterHandler(indexedDbWorker.UpdateSentStatusTag, m.updateSentStatusHandler)
 }
 
-// newWASMEventModelHandler is the handler for NewWASMEventModel.
+// newWASMEventModelHandler is the handler for NewWASMEventModel. Returns nil on
+// success or an error message on failure.
 func (m *manager) newWASMEventModelHandler(data []byte) []byte {
 	var msg mChannels.NewWASMEventModelMessage
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		jww.ERROR.Printf("Could not JSON unmarshal NewWASMEventModelMessage "+
 			"from NewWASMEventModel in main thread: %+v", err)
-		return []byte{}
+		return nil
 	}
 
 	// Create new encryption cipher
@@ -61,7 +62,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) []byte {
 	if err != nil {
 		jww.ERROR.Printf("Could not JSON unmarshal channel cipher from "+
 			"main thread: %+v", err)
-		return []byte{}
+		return nil
 	}
 
 	m.model, err = NewWASMEventModel(msg.Path, encryption,
@@ -69,7 +70,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) []byte {
 	if err != nil {
 		return []byte(err.Error())
 	}
-	return []byte{}
+	return nil
 }
 
 // messageReceivedCallback sends calls to the MessageReceivedCallback in the
@@ -92,7 +93,8 @@ func (m *manager) messageReceivedCallback(
 	}
 
 	// Send it to the main thread
-	m.mh.SendResponse(indexedDbWorker.GetMessageTag, indexedDbWorker.InitID, data)
+	m.mh.SendResponse(
+		indexedDbWorker.GetMessageTag, indexedDbWorker.InitID, data)
 }
 
 // storeEncryptionStatus augments the functionality of
@@ -121,7 +123,8 @@ func (m *manager) storeEncryptionStatus(
 		})
 
 	// Send encryption status to main thread
-	m.mh.SendResponse(indexedDbWorker.EncryptionStatusTag, indexedDbWorker.InitID, data)
+	m.mh.SendResponse(
+		indexedDbWorker.EncryptionStatusTag, indexedDbWorker.InitID, data)
 
 	// Wait for response
 	var response mChannels.EncryptionStatusReply
@@ -145,7 +148,8 @@ func (m *manager) storeEncryptionStatus(
 	return response.EncryptionStatus, nil
 }
 
-// receiveHandler is the handler for wasmModel.Receive.
+// receiveHandler is the handler for wasmModel.Receive. Returns nil on error or
+// the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveHandler(data []byte) []byte {
 	var msg mDm.TransferMessage
 	err := json.Unmarshal(data, &msg)
@@ -168,7 +172,8 @@ func (m *manager) receiveHandler(data []byte) []byte {
 	return uuidData
 }
 
-// receiveTextHandler is the handler for wasmModel.ReceiveText.
+// receiveTextHandler is the handler for wasmModel.ReceiveText. Returns nil on
+// error or the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveTextHandler(data []byte) []byte {
 	var msg mDm.TransferMessage
 	err := json.Unmarshal(data, &msg)
@@ -191,7 +196,8 @@ func (m *manager) receiveTextHandler(data []byte) []byte {
 	return uuidData
 }
 
-// receiveReplyHandler is the handler for wasmModel.ReceiveReply.
+// receiveReplyHandler is the handler for wasmModel.ReceiveReply. Returns nil on
+// error or the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveReplyHandler(data []byte) []byte {
 	var msg mDm.TransferMessage
 	err := json.Unmarshal(data, &msg)
@@ -214,7 +220,8 @@ func (m *manager) receiveReplyHandler(data []byte) []byte {
 	return uuidData
 }
 
-// receiveReactionHandler is the handler for wasmModel.ReceiveReaction.
+// receiveReactionHandler is the handler for wasmModel.ReceiveReaction. Returns
+// nil on error or the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveReactionHandler(data []byte) []byte {
 	var msg mDm.TransferMessage
 	err := json.Unmarshal(data, &msg)
@@ -237,7 +244,8 @@ func (m *manager) receiveReactionHandler(data []byte) []byte {
 	return uuidData
 }
 
-// updateSentStatusHandler is the handler for wasmModel.UpdateSentStatus.
+// updateSentStatusHandler is the handler for wasmModel.UpdateSentStatus. Always
+// returns nil; meaning, no response is supplied (or expected).
 func (m *manager) updateSentStatusHandler(data []byte) []byte {
 	var msg mDm.TransferMessage
 	err := json.Unmarshal(data, &msg)
diff --git a/indexedDb/dm/implementation.go b/indexedDb/dm/implementation.go
index 0250d66b..bde56ced 100644
--- a/indexedDb/dm/implementation.go
+++ b/indexedDb/dm/implementation.go
@@ -12,7 +12,6 @@ package main
 import (
 	"crypto/ed25519"
 	"encoding/json"
-	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
 	"strings"
 	"sync"
 	"syscall/js"
@@ -22,6 +21,7 @@ import (
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/v4/cmix/rounds"
 	"gitlab.com/elixxir/client/v4/dm"
+	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
 	"gitlab.com/elixxir/xxdk-wasm/utils"
 	"gitlab.com/xx_network/primitives/id"
 
diff --git a/indexedDb/dm/init.go b/indexedDb/dm/init.go
index a8604174..ceeb884e 100644
--- a/indexedDb/dm/init.go
+++ b/indexedDb/dm/init.go
@@ -11,8 +11,6 @@ package main
 
 import (
 	"crypto/ed25519"
-	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
-	"gitlab.com/elixxir/xxdk-wasm/indexedDbWorker"
 	"syscall/js"
 	"time"
 
@@ -21,6 +19,8 @@ import (
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/v4/dm"
 	cryptoChannel "gitlab.com/elixxir/crypto/channel"
+	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
+	"gitlab.com/elixxir/xxdk-wasm/indexedDbWorker"
 )
 
 const (
@@ -108,19 +108,6 @@ func newWASMModel(databaseName string, encryption cryptoChannel.Cipher,
 		jww.WARN.Printf("IndexedDb encryption disabled!")
 	}
 
-	// Attempt to ensure the database has been properly initialized
-	openRequest, err = idb.Global().Open(ctx, databaseName, currentVersion,
-		func(db *idb.Database, oldVersion, newVersion uint) error {
-			return nil
-		})
-	if err != nil {
-		return nil, err
-	}
-	// Wait for database open to finish
-	db, err = openRequest.Await(ctx)
-	if err != nil {
-		return nil, err
-	}
 	wrapper := &wasmModel{db: db, receivedMessageCB: cb, cipher: encryption}
 
 	return wrapper, nil
diff --git a/indexedDb/utils.go b/indexedDb/utils.go
index 4a1fb129..664a1cc6 100644
--- a/indexedDb/utils.go
+++ b/indexedDb/utils.go
@@ -31,7 +31,7 @@ const (
 	ErrDoesNotExist = "result is undefined"
 )
 
-// NewContext builds a context for indexedDbWorker operations.
+// NewContext builds a context for indexedDb operations.
 func NewContext() (context.Context, context.CancelFunc) {
 	return context.WithTimeout(context.Background(), dbTimeout)
 }
diff --git a/indexedDbWorker/channels/init.go b/indexedDbWorker/channels/init.go
index 161ba06a..ae2469e0 100644
--- a/indexedDbWorker/channels/init.go
+++ b/indexedDbWorker/channels/init.go
@@ -85,9 +85,7 @@ func NewWASMEventModel(path string, encryption cryptoChannel.Cipher,
 
 	errChan := make(chan string)
 	wh.SendMessage(indexedDbWorker.NewWASMEventModelTag, payload,
-		func(data []byte) {
-			errChan <- string(data)
-		})
+		func(data []byte) { errChan <- string(data) })
 
 	select {
 	case workerErr := <-errChan:
diff --git a/indexedDbWorker/dm/init.go b/indexedDbWorker/dm/init.go
index c162c01b..12af524c 100644
--- a/indexedDbWorker/dm/init.go
+++ b/indexedDbWorker/dm/init.go
@@ -76,9 +76,7 @@ func NewWASMEventModel(path string, encryption cryptoChannel.Cipher,
 
 	errChan := make(chan string)
 	wh.SendMessage(indexedDbWorker.NewWASMEventModelTag, payload,
-		func(data []byte) {
-			errChan <- string(data)
-		})
+		func(data []byte) { errChan <- string(data) })
 
 	select {
 	case workerErr := <-errChan:
-- 
GitLab