diff --git a/indexedDb/channels/handlers.go b/indexedDb/channels/handlers.go index d9feece8492cc8beaca31c25404a6f8ea10c2c5b..fd962afb2df8b058c2ead5ee831ba851920b710e 100644 --- a/indexedDb/channels/handlers.go +++ b/indexedDb/channels/handlers.go @@ -30,7 +30,7 @@ import ( // manager handles the event model and the message handler, which is used to // send information between the event model and the main thread. type manager struct { - mh *indexedDb2.MessageHandler + mh *indexedDb.MessageHandler model channels.EventModel } @@ -38,16 +38,16 @@ type manager struct { // the main thread for the channels.EventModel. func (m *manager) RegisterHandlers() { - m.mh.RegisterHandler(indexedDb.NewWASMEventModelTag, m.newWASMEventModelHandler) - m.mh.RegisterHandler(indexedDb.JoinChannelTag, m.joinChannelHandler) - m.mh.RegisterHandler(indexedDb.LeaveChannelTag, m.leaveChannelHandler) - m.mh.RegisterHandler(indexedDb.ReceiveMessageTag, m.receiveMessageHandler) - m.mh.RegisterHandler(indexedDb.ReceiveReplyTag, m.receiveReplyHandler) - m.mh.RegisterHandler(indexedDb.ReceiveReactionTag, m.receiveReactionHandler) - m.mh.RegisterHandler(indexedDb.UpdateFromUUIDTag, m.updateFromUUIDHandler) - m.mh.RegisterHandler(indexedDb.UpdateFromMessageIDTag, m.updateFromMessageIDHandler) - m.mh.RegisterHandler(indexedDb.GetMessageTag, m.getMessageHandler) - m.mh.RegisterHandler(indexedDb.DeleteMessageTag, m.deleteMessageHandler) + m.mh.RegisterHandler(indexedDbWorker.NewWASMEventModelTag, m.newWASMEventModelHandler) + m.mh.RegisterHandler(indexedDbWorker.JoinChannelTag, m.joinChannelHandler) + m.mh.RegisterHandler(indexedDbWorker.LeaveChannelTag, m.leaveChannelHandler) + m.mh.RegisterHandler(indexedDbWorker.ReceiveMessageTag, m.receiveMessageHandler) + m.mh.RegisterHandler(indexedDbWorker.ReceiveReplyTag, m.receiveReplyHandler) + m.mh.RegisterHandler(indexedDbWorker.ReceiveReactionTag, m.receiveReactionHandler) + m.mh.RegisterHandler(indexedDbWorker.UpdateFromUUIDTag, m.updateFromUUIDHandler) + m.mh.RegisterHandler(indexedDbWorker.UpdateFromMessageIDTag, m.updateFromMessageIDHandler) + m.mh.RegisterHandler(indexedDbWorker.GetMessageTag, m.getMessageHandler) + m.mh.RegisterHandler(indexedDbWorker.DeleteMessageTag, m.deleteMessageHandler) } // newWASMEventModelHandler is the handler for NewWASMEventModel. @@ -81,7 +81,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) []byte { // messageReceivedCallback sends calls to the MessageReceivedCallback in the // main thread. // -// storeEncryptionStatus adhere to the indexedDbWorker.MessageReceivedCallback type. +// storeEncryptionStatus adhere to the MessageReceivedCallback type. func (m *manager) messageReceivedCallback( uuid uint64, channelID *id.ID, update bool) { // Package parameters for sending @@ -98,7 +98,7 @@ func (m *manager) messageReceivedCallback( } // Send it to the main thread - m.mh.SendResponse(indexedDb.GetMessageTag, indexedDb.InitID, data) + m.mh.SendResponse(indexedDbWorker.GetMessageTag, indexedDbWorker.InitID, data) } // storeEncryptionStatus augments the functionality of @@ -120,14 +120,15 @@ func (m *manager) storeEncryptionStatus( // Register response handler with channel that will wait for the response responseChan := make(chan []byte) - m.mh.RegisterHandler(indexedDb.EncryptionStatusTag, + m.mh.RegisterHandler(indexedDbWorker.EncryptionStatusTag, func(data []byte) []byte { responseChan <- data return nil }) // Send encryption status to main thread - m.mh.SendResponse(indexedDb.EncryptionStatusTag, indexedDb.InitID, data) + m.mh.SendResponse( + indexedDbWorker.EncryptionStatusTag, indexedDbWorker.InitID, data) // Wait for response var response mChannels.EncryptionStatusReply @@ -136,10 +137,10 @@ func (m *manager) storeEncryptionStatus( if err = json.Unmarshal(responseData, &response); err != nil { return false, err } - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): return false, errors.Errorf("timed out after %s waiting for "+ "response about the database encryption status from local "+ - "storage in the main thread", indexedDb.ResponseTimeout) + "storage in the main thread", indexedDbWorker.ResponseTimeout) } // If the response contain an error, return it diff --git a/indexedDb/channels/implementation.go b/indexedDb/channels/implementation.go index a971ec9e537621371945e29fa87180b7e479b777..005bd3fb330d8b0e7af5d58370407c538860759e 100644 --- a/indexedDb/channels/implementation.go +++ b/indexedDb/channels/implementation.go @@ -67,7 +67,7 @@ func (w *wasmModel) JoinChannel(channel *cryptoBroadcast.Channel) { return } - _, err = indexedDb2.Put(w.db, channelsStoreName, channelObj) + _, err = indexedDb.Put(w.db, channelsStoreName, channelObj) if err != nil { jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr, "Unable to put Channel: %+v", err)) @@ -79,7 +79,7 @@ func (w *wasmModel) LeaveChannel(channelID *id.ID) { parentErr := errors.New("failed to LeaveChannel") // Delete the channel from storage - err := indexedDb2.Delete(w.db, channelsStoreName, + err := indexedDb.Delete(w.db, channelsStoreName, js.ValueOf(channelID.String())) if err != nil { jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr, @@ -126,7 +126,7 @@ func (w *wasmModel) deleteMsgByChannel(channelID *id.ID) error { if err != nil { return errors.WithMessagef(parentErr, "Unable to open Cursor: %+v", err) } - ctx, cancel := indexedDb2.NewContext() + ctx, cancel := indexedDb.NewContext() err = cursorRequest.Iter(ctx, func(cursor *idb.CursorWithValue) error { _, err := cursor.Delete() @@ -266,7 +266,7 @@ func (w *wasmModel) UpdateFromUUID(uuid uint64, messageID *message.ID, key := js.ValueOf(uuid) // Use the key to get the existing Message - currentMsg, err := indexedDb2.Get(w.db, messageStoreName, key) + currentMsg, err := indexedDb.Get(w.db, messageStoreName, key) if err != nil { jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr, "Unable to get message: %+v", err)) @@ -302,7 +302,7 @@ func (w *wasmModel) UpdateFromMessageID(messageID message.ID, defer w.updateMux.Unlock() msgIDStr := base64.StdEncoding.EncodeToString(messageID.Marshal()) - currentMsgObj, err := indexedDb2.GetIndex(w.db, messageStoreName, + currentMsgObj, err := indexedDb.GetIndex(w.db, messageStoreName, messageStoreMessageIndex, js.ValueOf(msgIDStr)) if err != nil { jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr, @@ -417,7 +417,7 @@ func (w *wasmModel) receiveHelper( } // Store message to database - result, err := indexedDb2.Put(w.db, messageStoreName, messageObj) + result, err := indexedDb.Put(w.db, messageStoreName, messageObj) if err != nil && !strings.Contains(err.Error(), "at least one key does not satisfy the uniqueness requirements") { // Only return non-unique constraint errors so that the case @@ -488,14 +488,14 @@ func (w *wasmModel) GetMessage( // DeleteMessage removes a message with the given messageID from storage. func (w *wasmModel) DeleteMessage(messageID message.ID) error { msgId := js.ValueOf(base64.StdEncoding.EncodeToString(messageID.Bytes())) - return indexedDb2.DeleteIndex(w.db, messageStoreName, + return indexedDb.DeleteIndex(w.db, messageStoreName, messageStoreMessageIndex, pkeyName, msgId) } // msgIDLookup gets the UUID of the Message with the given messageID. func (w *wasmModel) msgIDLookup(messageID message.ID) (*Message, error) { msgIDStr := js.ValueOf(base64.StdEncoding.EncodeToString(messageID.Bytes())) - resultObj, err := indexedDb2.GetIndex(w.db, messageStoreName, + resultObj, err := indexedDb.GetIndex(w.db, messageStoreName, messageStoreMessageIndex, msgIDStr) if err != nil { return nil, err diff --git a/indexedDb/channels/implementation_test.go b/indexedDb/channels/implementation_test.go index 22e59146634d68fadf9c6b808bb0cd406eb38caa..39b49a4a143dd7b20b4294d3dfd174a9f9c76406 100644 --- a/indexedDb/channels/implementation_test.go +++ b/indexedDb/channels/implementation_test.go @@ -107,7 +107,7 @@ func TestWasmModel_DeleteMessage(t *testing.T) { } // Check the resulting status - results, err := indexedDb2.Dump(eventModel.db, messageStoreName) + results, err := indexedDb.Dump(eventModel.db, messageStoreName) if err != nil { t.Fatalf("%+v", err) } @@ -122,7 +122,7 @@ func TestWasmModel_DeleteMessage(t *testing.T) { } // Check the resulting status - results, err = indexedDb2.Dump(eventModel.db, messageStoreName) + results, err = indexedDb.Dump(eventModel.db, messageStoreName) if err != nil { t.Fatalf("%+v", err) } @@ -164,7 +164,7 @@ func Test_wasmModel_UpdateSentStatus(t *testing.T) { } // Ensure one message is stored - results, err := indexedDb2.Dump(eventModel.db, messageStoreName) + results, err := indexedDb.Dump(eventModel.db, messageStoreName) if err != nil { t.Fatalf("%+v", err) } @@ -178,7 +178,7 @@ func Test_wasmModel_UpdateSentStatus(t *testing.T) { uuid, nil, nil, nil, nil, nil, &expectedStatus) // Check the resulting status - results, err = indexedDb2.Dump(eventModel.db, messageStoreName) + results, err = indexedDb.Dump(eventModel.db, messageStoreName) if err != nil { t.Fatalf("%+v", err) } @@ -236,7 +236,7 @@ func Test_wasmModel_JoinChannel_LeaveChannel(t *testing.T) { } eventModel.JoinChannel(testChannel) eventModel.JoinChannel(testChannel2) - results, err := indexedDb2.Dump(eventModel.db, channelsStoreName) + results, err := indexedDb.Dump(eventModel.db, channelsStoreName) if err != nil { t.Fatalf("%+v", err) } @@ -244,7 +244,7 @@ func Test_wasmModel_JoinChannel_LeaveChannel(t *testing.T) { t.Fatalf("Expected 2 channels to exist") } eventModel.LeaveChannel(testChannel.ReceptionID) - results, err = indexedDb2.Dump(eventModel.db, channelsStoreName) + results, err = indexedDb.Dump(eventModel.db, channelsStoreName) if err != nil { t.Fatalf("%+v", err) } @@ -396,7 +396,7 @@ func Test_wasmModel_deleteMsgByChannel(t *testing.T) { } // Check pre-results - result, err := indexedDb2.Dump(eventModel.db, messageStoreName) + result, err := indexedDb.Dump(eventModel.db, messageStoreName) if err != nil { t.Fatalf("%+v", err) } @@ -411,7 +411,7 @@ func Test_wasmModel_deleteMsgByChannel(t *testing.T) { } // Check final results - result, err = indexedDb2.Dump(eventModel.db, messageStoreName) + result, err = indexedDb.Dump(eventModel.db, messageStoreName) if err != nil { t.Fatalf("%+v", err) } diff --git a/indexedDb/channels/init.go b/indexedDb/channels/init.go index b9f63e391bbe9409312922ed9a8a621e7d0577db..f97e2b4a0c06d0c9463550efe86c4cc566ae97c0 100644 --- a/indexedDb/channels/init.go +++ b/indexedDb/channels/init.go @@ -15,8 +15,8 @@ import ( jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/v4/channels" cryptoChannel "gitlab.com/elixxir/crypto/channel" - "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker" "gitlab.com/elixxir/xxdk-wasm/indexedDb" + "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker" "gitlab.com/xx_network/primitives/id" "syscall/js" "time" @@ -56,7 +56,7 @@ func newWASMModel(databaseName string, encryption cryptoChannel.Cipher, cb MessageReceivedCallback, storeEncryptionStatus storeEncryptionStatusFn) ( *wasmModel, error) { // Attempt to open database object - ctx, cancel := indexedDb2.NewContext() + ctx, cancel := indexedDb.NewContext() defer cancel() openRequest, err := idb.Global().Open(ctx, databaseName, currentVersion, func(db *idb.Database, oldVersion, newVersion uint) error { @@ -204,7 +204,7 @@ func (w *wasmModel) hackTestDb() error { if helper != nil { return helper } - result, err := indexedDb2.Get(w.db, messageStoreName, js.ValueOf(msgId)) + result, err := indexedDb.Get(w.db, messageStoreName, js.ValueOf(msgId)) if err != nil { return err } @@ -229,14 +229,15 @@ var storeDatabaseName = func(databaseName string) error { return nil } func RegisterDatabaseNameStore(m *manager) { storeDatabaseNameResponseChan := make(chan []byte) // Register handler - m.mh.RegisterHandler(indexedDb.StoreDatabaseNameTag, func(data []byte) []byte { - storeDatabaseNameResponseChan <- data - return nil - }) + m.mh.RegisterHandler(indexedDbWorker.StoreDatabaseNameTag, + func(data []byte) []byte { + storeDatabaseNameResponseChan <- data + return nil + }) storeDatabaseName = func(databaseName string) error { - m.mh.SendResponse(indexedDb.StoreDatabaseNameTag, indexedDb.InitID, - []byte(databaseName)) + m.mh.SendResponse(indexedDbWorker.StoreDatabaseNameTag, + indexedDbWorker.InitID, []byte(databaseName)) // Wait for response select { @@ -244,10 +245,10 @@ func RegisterDatabaseNameStore(m *manager) { if len(response) > 0 { return errors.New(string(response)) } - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): return errors.Errorf("timed out after %s waiting for "+ "response about storing the database name in local "+ - "storage in the main thread", indexedDb.ResponseTimeout) + "storage in the main thread", indexedDbWorker.ResponseTimeout) } return nil } diff --git a/indexedDb/channels/main.go b/indexedDb/channels/main.go index ebe19df08514fc82ebb0543253b51e78435887ab..c4e951ed44dcdb6292c1a7ea2e8f70401cd4f642 100644 --- a/indexedDb/channels/main.go +++ b/indexedDb/channels/main.go @@ -17,7 +17,7 @@ import ( func main() { fmt.Println("Starting xxDK WebAssembly Database Worker.") - m := &manager{mh: indexedDb2.NewMessageHandler()} + m := &manager{mh: indexedDb.NewMessageHandler()} RegisterDatabaseNameStore(m) m.RegisterHandlers() m.mh.SignalReady() diff --git a/indexedDb/dm/handlers.go b/indexedDb/dm/handlers.go index 9dbec0990fd1b59bfe0dc0405a323992495c6c0f..2afdde6b2c8331d297623651a12f55056907cecb 100644 --- a/indexedDb/dm/handlers.go +++ b/indexedDb/dm/handlers.go @@ -17,10 +17,10 @@ import ( "gitlab.com/elixxir/client/v4/dm" cryptoChannel "gitlab.com/elixxir/crypto/channel" "gitlab.com/elixxir/crypto/fastRNG" + "gitlab.com/elixxir/xxdk-wasm/indexedDb" "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker" mChannels "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker/channels" mDm "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker/dm" - "gitlab.com/elixxir/xxdk-wasm/indexedDb" "gitlab.com/xx_network/crypto/csprng" "time" ) @@ -28,7 +28,7 @@ import ( // manager handles the event model and the message handler, which is used to // send information between the event model and the main thread. type manager struct { - mh *indexedDb2.MessageHandler + mh *indexedDb.MessageHandler model dm.EventModel } @@ -36,12 +36,12 @@ type manager struct { // the main thread for the channels.EventModel. func (m *manager) RegisterHandlers() { - m.mh.RegisterHandler(indexedDb.NewWASMEventModelTag, m.newWASMEventModelHandler) - m.mh.RegisterHandler(indexedDb.ReceiveTag, m.receiveHandler) - m.mh.RegisterHandler(indexedDb.ReceiveTextTag, m.receiveTextHandler) - m.mh.RegisterHandler(indexedDb.ReceiveReplyTag, m.receiveReplyHandler) - m.mh.RegisterHandler(indexedDb.ReceiveReactionTag, m.receiveReactionHandler) - m.mh.RegisterHandler(indexedDb.UpdateSentStatusTag, m.updateSentStatusHandler) + m.mh.RegisterHandler(indexedDbWorker.NewWASMEventModelTag, m.newWASMEventModelHandler) + m.mh.RegisterHandler(indexedDbWorker.ReceiveTag, m.receiveHandler) + m.mh.RegisterHandler(indexedDbWorker.ReceiveTextTag, m.receiveTextHandler) + m.mh.RegisterHandler(indexedDbWorker.ReceiveReplyTag, m.receiveReplyHandler) + m.mh.RegisterHandler(indexedDbWorker.ReceiveReactionTag, m.receiveReactionHandler) + m.mh.RegisterHandler(indexedDbWorker.UpdateSentStatusTag, m.updateSentStatusHandler) } // newWASMEventModelHandler is the handler for NewWASMEventModel. @@ -92,7 +92,7 @@ func (m *manager) messageReceivedCallback( } // Send it to the main thread - m.mh.SendResponse(indexedDb.GetMessageTag, indexedDb.InitID, data) + m.mh.SendResponse(indexedDbWorker.GetMessageTag, indexedDbWorker.InitID, data) } // storeEncryptionStatus augments the functionality of @@ -114,14 +114,14 @@ func (m *manager) storeEncryptionStatus( // Register response handler with channel that will wait for the response responseChan := make(chan []byte) - m.mh.RegisterHandler(indexedDb.EncryptionStatusTag, + m.mh.RegisterHandler(indexedDbWorker.EncryptionStatusTag, func(data []byte) []byte { responseChan <- data return nil }) // Send encryption status to main thread - m.mh.SendResponse(indexedDb.EncryptionStatusTag, indexedDb.InitID, data) + m.mh.SendResponse(indexedDbWorker.EncryptionStatusTag, indexedDbWorker.InitID, data) // Wait for response var response mChannels.EncryptionStatusReply @@ -130,10 +130,10 @@ func (m *manager) storeEncryptionStatus( if err = json.Unmarshal(responseData, &response); err != nil { return false, err } - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): return false, errors.Errorf("timed out after %s waiting for "+ "response about the database encryption status from local "+ - "storage in the main thread", indexedDb.ResponseTimeout) + "storage in the main thread", indexedDbWorker.ResponseTimeout) } // If the response contain an error, return it diff --git a/indexedDb/dm/implementation.go b/indexedDb/dm/implementation.go index 7cd2f00e0bad630e3f331a1a6f66657cd6cdb77c..0250d66bf71e57de34204119dbf9d9f3fbac5960 100644 --- a/indexedDb/dm/implementation.go +++ b/indexedDb/dm/implementation.go @@ -65,7 +65,7 @@ func (w *wasmModel) joinConversation(nickname string, "Unable to marshal Conversation: %+v", err) } - _, err = indexedDb2.Put(w.db, conversationStoreName, convoObj) + _, err = indexedDb.Put(w.db, conversationStoreName, convoObj) if err != nil { return errors.WithMessagef(parentErr, "Unable to put Conversation: %+v", err) @@ -100,10 +100,10 @@ func (w *wasmModel) Receive(messageID message.ID, nickname string, text []byte, parentErr := errors.New("failed to Receive") // If there is no extant Conversation, create one. - _, err := indexedDb2.Get( + _, err := indexedDb.Get( w.db, conversationStoreName, utils.CopyBytesToJS(pubKey)) if err != nil { - if strings.Contains(err.Error(), indexedDb2.ErrDoesNotExist) { + if strings.Contains(err.Error(), indexedDb.ErrDoesNotExist) { err = w.joinConversation(nickname, pubKey, dmToken, codeset) if err != nil { jww.ERROR.Printf("%+v", err) @@ -143,10 +143,10 @@ func (w *wasmModel) ReceiveText(messageID message.ID, nickname, text string, parentErr := errors.New("failed to ReceiveText") // If there is no extant Conversation, create one. - _, err := indexedDb2.Get( + _, err := indexedDb.Get( w.db, conversationStoreName, utils.CopyBytesToJS(pubKey)) if err != nil { - if strings.Contains(err.Error(), indexedDb2.ErrDoesNotExist) { + if strings.Contains(err.Error(), indexedDb.ErrDoesNotExist) { err = w.joinConversation(nickname, pubKey, dmToken, codeset) if err != nil { jww.ERROR.Printf("%+v", err) @@ -188,10 +188,10 @@ func (w *wasmModel) ReceiveReply(messageID, reactionTo message.ID, nickname, parentErr := errors.New("failed to ReceiveReply") // If there is no extant Conversation, create one. - _, err := indexedDb2.Get( + _, err := indexedDb.Get( w.db, conversationStoreName, utils.CopyBytesToJS(pubKey)) if err != nil { - if strings.Contains(err.Error(), indexedDb2.ErrDoesNotExist) { + if strings.Contains(err.Error(), indexedDb.ErrDoesNotExist) { err = w.joinConversation(nickname, pubKey, dmToken, codeset) if err != nil { jww.ERROR.Printf("%+v", err) @@ -233,10 +233,10 @@ func (w *wasmModel) ReceiveReaction(messageID, _ message.ID, nickname, parentErr := errors.New("failed to ReceiveText") // If there is no extant Conversation, create one. - _, err := indexedDb2.Get( + _, err := indexedDb.Get( w.db, conversationStoreName, utils.CopyBytesToJS(pubKey)) if err != nil { - if strings.Contains(err.Error(), indexedDb2.ErrDoesNotExist) { + if strings.Contains(err.Error(), indexedDb.ErrDoesNotExist) { err = w.joinConversation(nickname, pubKey, dmToken, codeset) if err != nil { jww.ERROR.Printf("%+v", err) @@ -286,7 +286,7 @@ func (w *wasmModel) UpdateSentStatus(uuid uint64, messageID message.ID, key := js.ValueOf(uuid) // Use the key to get the existing Message - currentMsg, err := indexedDb2.Get(w.db, messageStoreName, key) + currentMsg, err := indexedDb.Get(w.db, messageStoreName, key) if err != nil { jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr, "Unable to get message: %+v", err)) @@ -343,7 +343,7 @@ func (w *wasmModel) receiveHelper( } // Store message to database - result, err := indexedDb2.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) } @@ -367,7 +367,7 @@ func (w *wasmModel) receiveHelper( // msgIDLookup gets the UUID of the Message with the given messageID. func (w *wasmModel) msgIDLookup(messageID message.ID) (uint64, error) { - resultObj, err := indexedDb2.GetIndex(w.db, messageStoreName, + resultObj, err := indexedDb.GetIndex(w.db, messageStoreName, messageStoreMessageIndex, utils.CopyBytesToJS(messageID.Marshal())) if err != nil { return 0, err diff --git a/indexedDb/dm/init.go b/indexedDb/dm/init.go index 66c9c34a68d8940faf14aa87a1f3b2ba2e020cc9..a86041748fab9b80e08a10f6382c520f2b9f6f2c 100644 --- a/indexedDb/dm/init.go +++ b/indexedDb/dm/init.go @@ -11,8 +11,8 @@ package main import ( "crypto/ed25519" - "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker" "gitlab.com/elixxir/xxdk-wasm/indexedDb" + "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker" "syscall/js" "time" @@ -58,7 +58,7 @@ func newWASMModel(databaseName string, encryption cryptoChannel.Cipher, cb MessageReceivedCallback, storeEncryptionStatus storeEncryptionStatusFn) ( *wasmModel, error) { // Attempt to open database object - ctx, cancel := indexedDb2.NewContext() + ctx, cancel := indexedDb.NewContext() defer cancel() openRequest, err := idb.Global().Open(ctx, databaseName, currentVersion, func(db *idb.Database, oldVersion, newVersion uint) error { @@ -205,14 +205,15 @@ var storeDatabaseName = func(databaseName string) error { return nil } func RegisterDatabaseNameStore(m *manager) { storeDatabaseNameResponseChan := make(chan []byte) // Register handler - m.mh.RegisterHandler(indexedDb.StoreDatabaseNameTag, func(data []byte) []byte { - storeDatabaseNameResponseChan <- data - return nil - }) + m.mh.RegisterHandler(indexedDbWorker.StoreDatabaseNameTag, + func(data []byte) []byte { + storeDatabaseNameResponseChan <- data + return nil + }) storeDatabaseName = func(databaseName string) error { - m.mh.SendResponse(indexedDb.StoreDatabaseNameTag, indexedDb.InitID, - []byte(databaseName)) + m.mh.SendResponse(indexedDbWorker.StoreDatabaseNameTag, + indexedDbWorker.InitID, []byte(databaseName)) // Wait for response select { @@ -220,10 +221,10 @@ func RegisterDatabaseNameStore(m *manager) { if len(response) > 0 { return errors.New(string(response)) } - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): return errors.Errorf("timed out after %s waiting for "+ "response about storing the database name in local "+ - "storage in the main thread", indexedDb.ResponseTimeout) + "storage in the main thread", indexedDbWorker.ResponseTimeout) } return nil } diff --git a/indexedDb/dm/main.go b/indexedDb/dm/main.go index 5f0d16dc868a7f8fd1bf67158ec3b9f8e5ffbd90..1b6a0f482dc5ae912f4fb4aa3d3f32e3cd1e5b3e 100644 --- a/indexedDb/dm/main.go +++ b/indexedDb/dm/main.go @@ -17,7 +17,7 @@ import ( func main() { fmt.Println("Starting xxDK WebAssembly Database Worker.") - m := &manager{mh: indexedDb2.NewMessageHandler()} + m := &manager{mh: indexedDb.NewMessageHandler()} m.RegisterHandlers() RegisterDatabaseNameStore(m) m.mh.SignalReady() diff --git a/indexedDb/messageHandler.go b/indexedDb/messageHandler.go index ad729ee8cf9c43116903f5cb4727e48724b78a56..aa515ef2c9188e469a6ecfdf928641b00b366b8d 100644 --- a/indexedDb/messageHandler.go +++ b/indexedDb/messageHandler.go @@ -7,7 +7,7 @@ //go:build js && wasm -package indexedDb2 +package indexedDb import ( "encoding/json" @@ -30,7 +30,7 @@ type MessageHandler struct { // handlers is a list of functions to handle messages that come from the // main thread keyed on the handler tag. - handlers map[indexedDb.Tag]HandlerFn + handlers map[indexedDbWorker.Tag]HandlerFn mux sync.Mutex } @@ -39,7 +39,7 @@ type MessageHandler struct { func NewMessageHandler() *MessageHandler { mh := &MessageHandler{ messages: make(chan js.Value, 100), - handlers: make(map[indexedDb.Tag]HandlerFn), + handlers: make(map[indexedDbWorker.Tag]HandlerFn), } mh.addEventListeners() @@ -51,12 +51,13 @@ func NewMessageHandler() *MessageHandler { // ready. Once the main thread receives this, it will initiate communication. // Therefore, this should only be run once all listeners are ready. func (mh *MessageHandler) SignalReady() { - mh.SendResponse(indexedDb.ReadyTag, indexedDb.InitID, nil) + mh.SendResponse(indexedDbWorker.ReadyTag, indexedDbWorker.InitID, nil) } // SendResponse sends a reply to the main thread with the given tag and ID, -func (mh *MessageHandler) SendResponse(tag indexedDb.Tag, id uint64, data []byte) { - message := indexedDb.WorkerMessage{ +func (mh *MessageHandler) SendResponse( + tag indexedDbWorker.Tag, id uint64, data []byte) { + message := indexedDbWorker.WorkerMessage{ Tag: tag, ID: id, Data: data, @@ -75,7 +76,7 @@ func (mh *MessageHandler) SendResponse(tag indexedDb.Tag, id uint64, data []byte // everytime a message from the main thread is received. If the registered // handler returns a response, it is sent to the main thread. func (mh *MessageHandler) receiveMessage(data []byte) error { - var message indexedDb.WorkerMessage + var message indexedDbWorker.WorkerMessage err := json.Unmarshal(data, &message) if err != nil { return err @@ -103,7 +104,7 @@ func (mh *MessageHandler) receiveMessage(data []byte) error { // previous registered handler with the same tag. This function is thread safe. // // If the handler returns anything but nil, it will be returned as a response. -func (mh *MessageHandler) RegisterHandler(tag indexedDb.Tag, handler HandlerFn) { +func (mh *MessageHandler) RegisterHandler(tag indexedDbWorker.Tag, handler HandlerFn) { mh.mux.Lock() mh.handlers[tag] = handler mh.mux.Unlock() diff --git a/indexedDb/utils.go b/indexedDb/utils.go index 87696d0f8be15f8584d7c1dbf45a215767e63467..4a1fb1290a4632b3d2ddff6b1ff94c8aa456e9f4 100644 --- a/indexedDb/utils.go +++ b/indexedDb/utils.go @@ -10,7 +10,7 @@ // This file contains several generic IndexedDB helper functions that // may be useful for any IndexedDB implementations. -package indexedDb2 +package indexedDb import ( "context" diff --git a/indexedDb/utils_test.go b/indexedDb/utils_test.go index 279a33f9f86cfcaed014a9fe0c64db34d4a5cbac..1c657ebd5dbb4607c977323dc8883042989f05f9 100644 --- a/indexedDb/utils_test.go +++ b/indexedDb/utils_test.go @@ -7,7 +7,7 @@ //go:build js && wasm -package indexedDb2 +package indexedDb import ( "github.com/hack-pad/go-indexeddb/idb" diff --git a/indexedDbWorker/channels/implementation.go b/indexedDbWorker/channels/implementation.go index fd7e13000c496a25d8bb1b226efa9490e526ee55..5c6032109b946c22868f58409551371332e27f87 100644 --- a/indexedDbWorker/channels/implementation.go +++ b/indexedDbWorker/channels/implementation.go @@ -30,7 +30,7 @@ import ( // system passed an object that adheres to in order to get events on the // channel. type wasmModel struct { - wh *indexedDb.WorkerHandler + wh *indexedDbWorker.WorkerHandler } // JoinChannel is called whenever a channel is joined locally. @@ -41,12 +41,12 @@ func (w *wasmModel) JoinChannel(channel *cryptoBroadcast.Channel) { return } - w.wh.SendMessage(indexedDb.JoinChannelTag, data, nil) + w.wh.SendMessage(indexedDbWorker.JoinChannelTag, data, nil) } // LeaveChannel is called whenever a channel is left locally. func (w *wasmModel) LeaveChannel(channelID *id.ID) { - w.wh.SendMessage(indexedDb.LeaveChannelTag, channelID.Marshal(), nil) + w.wh.SendMessage(indexedDbWorker.LeaveChannelTag, channelID.Marshal(), nil) } // ReceiveMessage is called whenever a message is received on a given channel. @@ -82,7 +82,7 @@ func (w *wasmModel) ReceiveMessage(channelID *id.ID, messageID message.ID, } uuidChan := make(chan uint64) - w.wh.SendMessage(indexedDb.ReceiveMessageTag, data, func(data []byte) { + w.wh.SendMessage(indexedDbWorker.ReceiveMessageTag, data, func(data []byte) { var uuid uint64 err = json.Unmarshal(data, &uuid) if err != nil { @@ -96,9 +96,9 @@ func (w *wasmModel) ReceiveMessage(channelID *id.ID, messageID message.ID, select { case uuid := <-uuidChan: return uuid - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): jww.ERROR.Printf("Timed out after %s waiting for response from the "+ - "worker about ReceiveMessage", indexedDb.ResponseTimeout) + "worker about ReceiveMessage", indexedDbWorker.ResponseTimeout) } return 0 @@ -150,7 +150,7 @@ func (w *wasmModel) ReceiveReply(channelID *id.ID, messageID, } uuidChan := make(chan uint64) - w.wh.SendMessage(indexedDb.ReceiveReplyTag, data, func(data []byte) { + w.wh.SendMessage(indexedDbWorker.ReceiveReplyTag, data, func(data []byte) { var uuid uint64 err = json.Unmarshal(data, &uuid) if err != nil { @@ -164,9 +164,9 @@ func (w *wasmModel) ReceiveReply(channelID *id.ID, messageID, select { case uuid := <-uuidChan: return uuid - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): jww.ERROR.Printf("Timed out after %s waiting for response from the "+ - "worker about ReceiveReply", indexedDb.ResponseTimeout) + "worker about ReceiveReply", indexedDbWorker.ResponseTimeout) } return 0 @@ -212,7 +212,7 @@ func (w *wasmModel) ReceiveReaction(channelID *id.ID, messageID, } uuidChan := make(chan uint64) - w.wh.SendMessage(indexedDb.ReceiveReactionTag, data, func(data []byte) { + w.wh.SendMessage(indexedDbWorker.ReceiveReactionTag, data, func(data []byte) { var uuid uint64 err = json.Unmarshal(data, &uuid) if err != nil { @@ -226,9 +226,9 @@ func (w *wasmModel) ReceiveReaction(channelID *id.ID, messageID, select { case uuid := <-uuidChan: return uuid - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): jww.ERROR.Printf("Timed out after %s waiting for response from the "+ - "worker about ReceiveReply", indexedDb.ResponseTimeout) + "worker about ReceiveReply", indexedDbWorker.ResponseTimeout) } return 0 @@ -299,7 +299,7 @@ func (w *wasmModel) UpdateFromUUID(uuid uint64, messageID *message.ID, return } - w.wh.SendMessage(indexedDb.UpdateFromUUIDTag, data, nil) + w.wh.SendMessage(indexedDbWorker.UpdateFromUUIDTag, data, nil) } // UpdateFromMessageID is called whenever a message with the message ID is @@ -345,23 +345,24 @@ func (w *wasmModel) UpdateFromMessageID(messageID message.ID, } uuidChan := make(chan uint64) - w.wh.SendMessage(indexedDb.UpdateFromMessageIDTag, data, func(data []byte) { - var uuid uint64 - err = json.Unmarshal(data, &uuid) - if err != nil { - jww.ERROR.Printf( - "Could not JSON unmarshal response to UpdateFromMessageID: %+v", err) - uuidChan <- 0 - } - uuidChan <- uuid - }) + w.wh.SendMessage(indexedDbWorker.UpdateFromMessageIDTag, data, + func(data []byte) { + var uuid uint64 + err = json.Unmarshal(data, &uuid) + if err != nil { + jww.ERROR.Printf("Could not JSON unmarshal response to "+ + "UpdateFromMessageID: %+v", err) + uuidChan <- 0 + } + uuidChan <- uuid + }) select { case uuid := <-uuidChan: return uuid - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): jww.ERROR.Printf("Timed out after %s waiting for response from the "+ - "worker about ReceiveReply", indexedDb.ResponseTimeout) + "worker about ReceiveReply", indexedDbWorker.ResponseTimeout) } return 0 @@ -378,15 +379,16 @@ type GetMessageMessage struct { func (w *wasmModel) GetMessage( messageID message.ID) (channels.ModelMessage, error) { msgChan := make(chan GetMessageMessage) - w.wh.SendMessage(indexedDb.GetMessageTag, messageID.Marshal(), func(data []byte) { - var msg GetMessageMessage - err := json.Unmarshal(data, &msg) - if err != nil { - jww.ERROR.Printf( - "Could not JSON unmarshal response to GetMessage: %+v", err) - } - msgChan <- msg - }) + w.wh.SendMessage(indexedDbWorker.GetMessageTag, messageID.Marshal(), + func(data []byte) { + var msg GetMessageMessage + err := json.Unmarshal(data, &msg) + if err != nil { + jww.ERROR.Printf( + "Could not JSON unmarshal response to GetMessage: %+v", err) + } + msgChan <- msg + }) select { case msg := <-msgChan: @@ -394,29 +396,30 @@ func (w *wasmModel) GetMessage( return channels.ModelMessage{}, errors.New(msg.Error) } return msg.Message, nil - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): return channels.ModelMessage{}, errors.Errorf("timed out after %s "+ "waiting for response from the worker about GetMessage", - indexedDb.ResponseTimeout) + indexedDbWorker.ResponseTimeout) } } // DeleteMessage removes a message with the given messageID from storage. func (w *wasmModel) DeleteMessage(messageID message.ID) error { errChan := make(chan error) - w.wh.SendMessage(indexedDb.DeleteMessageTag, messageID.Marshal(), func(data []byte) { - if data != nil { - errChan <- errors.New(string(data)) - } else { - errChan <- nil - } - }) + w.wh.SendMessage(indexedDbWorker.DeleteMessageTag, messageID.Marshal(), + func(data []byte) { + if data != nil { + errChan <- errors.New(string(data)) + } else { + errChan <- nil + } + }) select { case err := <-errChan: return err - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): return errors.Errorf("timed out after %s waiting for response from "+ - "the worker about DeleteMessage", indexedDb.ResponseTimeout) + "the worker about DeleteMessage", indexedDbWorker.ResponseTimeout) } } diff --git a/indexedDbWorker/channels/init.go b/indexedDbWorker/channels/init.go index a1bc72917e6dac1fb1ec6c7543c5c797f2e625eb..161ba06a31f68b6c52f0f5e652d5b9db25e7e647 100644 --- a/indexedDbWorker/channels/init.go +++ b/indexedDbWorker/channels/init.go @@ -54,19 +54,19 @@ func NewWASMEventModel(path string, encryption cryptoChannel.Cipher, cb MessageReceivedCallback) (channels.EventModel, error) { // TODO: bring in URL and name from caller - wh, err := indexedDb.NewWorkerHandler( + wh, err := indexedDbWorker.NewWorkerHandler( WorkerJavascriptFileURL, "channelsIndexedDb") if err != nil { return nil, err } // Register handler to manage messages for the MessageReceivedCallback - wh.RegisterHandler(indexedDb.GetMessageTag, indexedDb.InitID, false, - messageReceivedCallbackHandler(cb)) + wh.RegisterHandler(indexedDbWorker.GetMessageTag, indexedDbWorker.InitID, + false, messageReceivedCallbackHandler(cb)) // Register handler to manage checking encryption status from local storage - wh.RegisterHandler(indexedDb.EncryptionStatusTag, indexedDb.InitID, false, - checkDbEncryptionStatusHandler(wh)) + wh.RegisterHandler(indexedDbWorker.EncryptionStatusTag, + indexedDbWorker.InitID, false, checkDbEncryptionStatusHandler(wh)) encryptionJSON, err := json.Marshal(encryption) if err != nil { @@ -84,18 +84,19 @@ func NewWASMEventModel(path string, encryption cryptoChannel.Cipher, } errChan := make(chan string) - wh.SendMessage(indexedDb.NewWASMEventModelTag, payload, func(data []byte) { - errChan <- string(data) - }) + wh.SendMessage(indexedDbWorker.NewWASMEventModelTag, payload, + func(data []byte) { + errChan <- string(data) + }) select { case workerErr := <-errChan: if workerErr != "" { return nil, errors.New(workerErr) } - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): return nil, errors.Errorf("timed out after %s waiting for indexedDB "+ - "database in worker to intialize", indexedDb.ResponseTimeout) + "database in worker to intialize", indexedDbWorker.ResponseTimeout) } return &wasmModel{wh}, nil @@ -140,7 +141,8 @@ type EncryptionStatusReply struct { // checkDbEncryptionStatusHandler returns a handler to manage checking // encryption status from local storage. -func checkDbEncryptionStatusHandler(wh *indexedDb.WorkerHandler) func(data []byte) { +func checkDbEncryptionStatusHandler( + wh *indexedDbWorker.WorkerHandler) func(data []byte) { return func(data []byte) { // Unmarshal received message var msg EncryptionStatusMessage @@ -169,6 +171,6 @@ func checkDbEncryptionStatusHandler(wh *indexedDb.WorkerHandler) func(data []byt return } - wh.SendMessage(indexedDb.EncryptionStatusTag, statusData, nil) + wh.SendMessage(indexedDbWorker.EncryptionStatusTag, statusData, nil) } } diff --git a/indexedDbWorker/dm/implementation.go b/indexedDbWorker/dm/implementation.go index 0bbdcfd77ad0d53294c7d7ed27c5dde4c14cdd63..fba5c296cbd9f69bd6da60e9c82bf80bc00e9c54 100644 --- a/indexedDbWorker/dm/implementation.go +++ b/indexedDbWorker/dm/implementation.go @@ -12,19 +12,19 @@ package channelEventModel import ( "crypto/ed25519" "encoding/json" + "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker" "time" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/v4/cmix/rounds" "gitlab.com/elixxir/client/v4/dm" "gitlab.com/elixxir/crypto/message" - "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker" ) // wasmModel implements dm.EventModel interface, which uses the channels system // passed an object that adheres to in order to get events on the channel. type wasmModel struct { - wh *indexedDb.WorkerHandler + wh *indexedDbWorker.WorkerHandler } // TransferMessage is JSON marshalled and sent to the worker. @@ -67,7 +67,7 @@ func (w *wasmModel) Receive(messageID message.ID, nickname string, text []byte, } uuidChan := make(chan uint64) - w.wh.SendMessage(indexedDb.ReceiveTag, data, func(data []byte) { + w.wh.SendMessage(indexedDbWorker.ReceiveTag, data, func(data []byte) { var uuid uint64 err = json.Unmarshal(data, &uuid) if err != nil { @@ -81,9 +81,9 @@ func (w *wasmModel) Receive(messageID message.ID, nickname string, text []byte, select { case uuid := <-uuidChan: return uuid - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): jww.ERROR.Printf("Timed out after %s waiting for response from the "+ - "worker about Receive", indexedDb.ResponseTimeout) + "worker about Receive", indexedDbWorker.ResponseTimeout) } return 0 @@ -112,7 +112,7 @@ func (w *wasmModel) ReceiveText(messageID message.ID, nickname, text string, } uuidChan := make(chan uint64) - w.wh.SendMessage(indexedDb.ReceiveTextTag, data, func(data []byte) { + w.wh.SendMessage(indexedDbWorker.ReceiveTextTag, data, func(data []byte) { var uuid uint64 err = json.Unmarshal(data, &uuid) if err != nil { @@ -126,9 +126,9 @@ func (w *wasmModel) ReceiveText(messageID message.ID, nickname, text string, select { case uuid := <-uuidChan: return uuid - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): jww.ERROR.Printf("Timed out after %s waiting for response from the "+ - "worker about ReceiveText", indexedDb.ResponseTimeout) + "worker about ReceiveText", indexedDbWorker.ResponseTimeout) } return 0 @@ -158,7 +158,7 @@ func (w *wasmModel) ReceiveReply(messageID, reactionTo message.ID, nickname, } uuidChan := make(chan uint64) - w.wh.SendMessage(indexedDb.ReceiveReplyTag, data, func(data []byte) { + w.wh.SendMessage(indexedDbWorker.ReceiveReplyTag, data, func(data []byte) { var uuid uint64 err = json.Unmarshal(data, &uuid) if err != nil { @@ -172,9 +172,9 @@ func (w *wasmModel) ReceiveReply(messageID, reactionTo message.ID, nickname, select { case uuid := <-uuidChan: return uuid - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): jww.ERROR.Printf("Timed out after %s waiting for response from the "+ - "worker about ReceiveReply", indexedDb.ResponseTimeout) + "worker about ReceiveReply", indexedDbWorker.ResponseTimeout) } return 0 @@ -204,7 +204,7 @@ func (w *wasmModel) ReceiveReaction(messageID, reactionTo message.ID, nickname, } uuidChan := make(chan uint64) - w.wh.SendMessage(indexedDb.ReceiveReactionTag, data, func(data []byte) { + w.wh.SendMessage(indexedDbWorker.ReceiveReactionTag, data, func(data []byte) { var uuid uint64 err = json.Unmarshal(data, &uuid) if err != nil { @@ -218,9 +218,9 @@ func (w *wasmModel) ReceiveReaction(messageID, reactionTo message.ID, nickname, select { case uuid := <-uuidChan: return uuid - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): jww.ERROR.Printf("Timed out after %s waiting for response from the "+ - "worker about ReceiveReaction", indexedDb.ResponseTimeout) + "worker about ReceiveReaction", indexedDbWorker.ResponseTimeout) } return 0 @@ -242,5 +242,5 @@ func (w *wasmModel) UpdateSentStatus(uuid uint64, messageID message.ID, "Could not JSON marshal payload for TransferMessage: %+v", err) } - w.wh.SendMessage(indexedDb.UpdateSentStatusTag, data, nil) + w.wh.SendMessage(indexedDbWorker.UpdateSentStatusTag, data, nil) } diff --git a/indexedDbWorker/dm/init.go b/indexedDbWorker/dm/init.go index 269d7d135ca87331516c364ef2983240d076e552..c162c01b02c3d21b2086a1e6ea7bfc1c1bafabb7 100644 --- a/indexedDbWorker/dm/init.go +++ b/indexedDbWorker/dm/init.go @@ -12,13 +12,13 @@ package channelEventModel import ( "crypto/ed25519" "encoding/json" + "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker" "time" "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/v4/dm" cryptoChannel "gitlab.com/elixxir/crypto/channel" - "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker" "gitlab.com/elixxir/xxdk-wasm/storage" ) @@ -45,19 +45,19 @@ func NewWASMEventModel(path string, encryption cryptoChannel.Cipher, cb MessageReceivedCallback) (dm.EventModel, error) { // TODO: bring in URL and name from caller - wh, err := indexedDb.NewWorkerHandler( + wh, err := indexedDbWorker.NewWorkerHandler( WorkerJavascriptFileURL, "dmIndexedDb") if err != nil { return nil, err } // Register handler to manage messages for the MessageReceivedCallback - wh.RegisterHandler(indexedDb.GetMessageTag, indexedDb.InitID, false, - messageReceivedCallbackHandler(cb)) + wh.RegisterHandler(indexedDbWorker.GetMessageTag, indexedDbWorker.InitID, + false, messageReceivedCallbackHandler(cb)) // Register handler to manage checking encryption status from local storage - wh.RegisterHandler(indexedDb.EncryptionStatusTag, indexedDb.InitID, false, - checkDbEncryptionStatusHandler(wh)) + wh.RegisterHandler(indexedDbWorker.EncryptionStatusTag, + indexedDbWorker.InitID, false, checkDbEncryptionStatusHandler(wh)) encryptionJSON, err := json.Marshal(encryption) if err != nil { @@ -75,18 +75,19 @@ func NewWASMEventModel(path string, encryption cryptoChannel.Cipher, } errChan := make(chan string) - wh.SendMessage(indexedDb.NewWASMEventModelTag, payload, func(data []byte) { - errChan <- string(data) - }) + wh.SendMessage(indexedDbWorker.NewWASMEventModelTag, payload, + func(data []byte) { + errChan <- string(data) + }) select { case workerErr := <-errChan: if workerErr != "" { return nil, errors.New(workerErr) } - case <-time.After(indexedDb.ResponseTimeout): + case <-time.After(indexedDbWorker.ResponseTimeout): return nil, errors.Errorf("timed out after %s waiting for indexedDB "+ - "database in worker to intialize", indexedDb.ResponseTimeout) + "database in worker to intialize", indexedDbWorker.ResponseTimeout) } return &wasmModel{wh}, nil @@ -131,7 +132,8 @@ type EncryptionStatusReply struct { // checkDbEncryptionStatusHandler returns a handler to manage checking // encryption status from local storage. -func checkDbEncryptionStatusHandler(wh *indexedDb.WorkerHandler) func(data []byte) { +func checkDbEncryptionStatusHandler( + wh *indexedDbWorker.WorkerHandler) func(data []byte) { return func(data []byte) { // Unmarshal received message var msg EncryptionStatusMessage @@ -160,6 +162,6 @@ func checkDbEncryptionStatusHandler(wh *indexedDb.WorkerHandler) func(data []byt return } - wh.SendMessage(indexedDb.EncryptionStatusTag, statusData, nil) + wh.SendMessage(indexedDbWorker.EncryptionStatusTag, statusData, nil) } } diff --git a/indexedDbWorker/tag.go b/indexedDbWorker/tag.go index f89763702620a140f0a014032131770c50ce5d5e..fafc17535360076b646dc7de8fada1b54a0e5b67 100644 --- a/indexedDbWorker/tag.go +++ b/indexedDbWorker/tag.go @@ -7,7 +7,7 @@ //go:build js && wasm -package indexedDb +package indexedDbWorker // Tag describes how a message sent to or from the worker should be handled. type Tag string diff --git a/indexedDbWorker/worker.go b/indexedDbWorker/worker.go index 2b40fdf24f4ef69d39847aee8fb86f2714c0cde0..5f161856b203ad3e7a00aac973d06889119de84f 100644 --- a/indexedDbWorker/worker.go +++ b/indexedDbWorker/worker.go @@ -7,7 +7,7 @@ //go:build js && wasm -package indexedDb +package indexedDbWorker import ( "encoding/json"