diff --git a/indexedDb/channels/handlers.go b/indexedDb/channels/handlers.go index fd962afb2df8b058c2ead5ee831ba851920b710e..5fefb65e791446fa4052c33779adb8178aaccc33 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 005bd3fb330d8b0e7af5d58370407c538860759e..f26265bc7f379ea60c56b1adcbf8cadca49c607e 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 f97e2b4a0c06d0c9463550efe86c4cc566ae97c0..9ecc16cc9203b19e274c12b9dd9d569852f16bc0 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 2afdde6b2c8331d297623651a12f55056907cecb..b2a580ba3eb8edb6061c5da57595faaae50d061d 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 0250d66bf71e57de34204119dbf9d9f3fbac5960..bde56cede34f3cf97f108d26d7c7f14e027c498d 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 a86041748fab9b80e08a10f6382c520f2b9f6f2c..ceeb884e9643f5d93f11448ab1b0672824e5ea5d 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 4a1fb1290a4632b3d2ddff6b1ff94c8aa456e9f4..664a1cc663ddef38016359067b8dd2e527da24aa 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 161ba06a31f68b6c52f0f5e652d5b9db25e7e647..ae2469e06b9dab9d434f9c49926749ded122d879 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 c162c01b02c3d21b2086a1e6ea7bfc1c1bafabb7..12af524cceb1e4cc8f00f947e127f1f3e8b728f5 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: