diff --git a/indexedDb/channels/channelsIndexedDbWorker.js b/indexedDb/impl/channels/channelsIndexedDbWorker.js similarity index 100% rename from indexedDb/channels/channelsIndexedDbWorker.js rename to indexedDb/impl/channels/channelsIndexedDbWorker.js diff --git a/indexedDb/channels/handlers.go b/indexedDb/impl/channels/handlers.go similarity index 89% rename from indexedDb/channels/handlers.go rename to indexedDb/impl/channels/handlers.go index 0a56d9584b939cb1f82d759a1e30acacd00bc604..2e9ec98ab2fb4eeea71695f1ac5f107d07fe0e24 100644 --- a/indexedDb/channels/handlers.go +++ b/indexedDb/impl/channels/handlers.go @@ -19,7 +19,7 @@ import ( cryptoChannel "gitlab.com/elixxir/crypto/channel" "gitlab.com/elixxir/crypto/fastRNG" "gitlab.com/elixxir/crypto/message" - mChannels "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker/channels" + wChannels "gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/channels" "gitlab.com/elixxir/xxdk-wasm/worker" "gitlab.com/xx_network/crypto/csprng" "gitlab.com/xx_network/primitives/id" @@ -38,22 +38,22 @@ type manager struct { // RegisterHandlers registers all the reception handlers to manage messages from // the main thread for the channels.EventModel. func (m *manager) RegisterHandlers() { - m.mh.RegisterCallback(mChannels.NewWASMEventModelTag, m.newWASMEventModelHandler) - m.mh.RegisterCallback(mChannels.JoinChannelTag, m.joinChannelHandler) - m.mh.RegisterCallback(mChannels.LeaveChannelTag, m.leaveChannelHandler) - m.mh.RegisterCallback(mChannels.ReceiveMessageTag, m.receiveMessageHandler) - m.mh.RegisterCallback(mChannels.ReceiveReplyTag, m.receiveReplyHandler) - m.mh.RegisterCallback(mChannels.ReceiveReactionTag, m.receiveReactionHandler) - m.mh.RegisterCallback(mChannels.UpdateFromUUIDTag, m.updateFromUUIDHandler) - m.mh.RegisterCallback(mChannels.UpdateFromMessageIDTag, m.updateFromMessageIDHandler) - m.mh.RegisterCallback(mChannels.GetMessageTag, m.getMessageHandler) - m.mh.RegisterCallback(mChannels.DeleteMessageTag, m.deleteMessageHandler) + m.mh.RegisterCallback(wChannels.NewWASMEventModelTag, m.newWASMEventModelHandler) + m.mh.RegisterCallback(wChannels.JoinChannelTag, m.joinChannelHandler) + m.mh.RegisterCallback(wChannels.LeaveChannelTag, m.leaveChannelHandler) + m.mh.RegisterCallback(wChannels.ReceiveMessageTag, m.receiveMessageHandler) + m.mh.RegisterCallback(wChannels.ReceiveReplyTag, m.receiveReplyHandler) + m.mh.RegisterCallback(wChannels.ReceiveReactionTag, m.receiveReactionHandler) + m.mh.RegisterCallback(wChannels.UpdateFromUUIDTag, m.updateFromUUIDHandler) + m.mh.RegisterCallback(wChannels.UpdateFromMessageIDTag, m.updateFromMessageIDHandler) + m.mh.RegisterCallback(wChannels.GetMessageTag, m.getMessageHandler) + m.mh.RegisterCallback(wChannels.DeleteMessageTag, m.deleteMessageHandler) } // newWASMEventModelHandler is the handler for NewWASMEventModel. Returns an // empty slice on success or an error message on failure. func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) { - var msg mChannels.NewWASMEventModelMessage + var msg wChannels.NewWASMEventModelMessage err := json.Unmarshal(data, &msg) if err != nil { return []byte{}, errors.Errorf( @@ -84,7 +84,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) { func (m *manager) messageReceivedCallback( uuid uint64, channelID *id.ID, update bool) { // Package parameters for sending - msg := &mChannels.MessageReceivedCallbackMessage{ + msg := &wChannels.MessageReceivedCallbackMessage{ UUID: uuid, ChannelID: channelID, Update: update, @@ -97,7 +97,7 @@ func (m *manager) messageReceivedCallback( } // Send it to the main thread - m.mh.SendMessage(mChannels.MessageReceivedCallbackTag, data) + m.mh.SendMessage(wChannels.MessageReceivedCallbackTag, data) } // storeDatabaseName sends the database name to the main thread and waits for @@ -107,14 +107,14 @@ func (m *manager) messageReceivedCallback( func (m *manager) storeDatabaseName(databaseName string) error { // Register response handler with channel that will wait for the response responseChan := make(chan []byte) - m.mh.RegisterCallback(mChannels.StoreDatabaseNameTag, + m.mh.RegisterCallback(wChannels.StoreDatabaseNameTag, func(data []byte) ([]byte, error) { responseChan <- data return nil, nil }) // Send encryption status to main thread - m.mh.SendMessage(mChannels.StoreDatabaseNameTag, []byte(databaseName)) + m.mh.SendMessage(wChannels.StoreDatabaseNameTag, []byte(databaseName)) // Wait for response select { @@ -140,7 +140,7 @@ func (m *manager) storeDatabaseName(databaseName string) error { func (m *manager) storeEncryptionStatus( databaseName string, encryption bool) (bool, error) { // Package parameters for sending - msg := &mChannels.EncryptionStatusMessage{ + msg := &wChannels.EncryptionStatusMessage{ DatabaseName: databaseName, EncryptionStatus: encryption, } @@ -151,17 +151,17 @@ func (m *manager) storeEncryptionStatus( // Register response handler with channel that will wait for the response responseChan := make(chan []byte) - m.mh.RegisterCallback(mChannels.EncryptionStatusTag, + m.mh.RegisterCallback(wChannels.EncryptionStatusTag, func(data []byte) ([]byte, error) { responseChan <- data return nil, nil }) // Send encryption status to main thread - m.mh.SendMessage(mChannels.EncryptionStatusTag, data) + m.mh.SendMessage(wChannels.EncryptionStatusTag, data) // Wait for response - var response mChannels.EncryptionStatusReply + var response wChannels.EncryptionStatusReply select { case responseData := <-responseChan: if err = json.Unmarshal(responseData, &response); err != nil { @@ -234,7 +234,7 @@ func (m *manager) receiveMessageHandler(data []byte) ([]byte, error) { // receiveReplyHandler is the handler for wasmModel.ReceiveReply. Returns a UUID // of 0 on error or the JSON marshalled UUID (uint64) on success. func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) { - var msg mChannels.ReceiveReplyMessage + var msg wChannels.ReceiveReplyMessage err := json.Unmarshal(data, &msg) if err != nil { return zeroUUID, errors.Errorf( @@ -256,7 +256,7 @@ func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) { // receiveReactionHandler is the handler for wasmModel.ReceiveReaction. Returns // a UUID of 0 on error or the JSON marshalled UUID (uint64) on success. func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) { - var msg mChannels.ReceiveReplyMessage + var msg wChannels.ReceiveReplyMessage err := json.Unmarshal(data, &msg) if err != nil { return zeroUUID, errors.Errorf( @@ -278,7 +278,7 @@ func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) { // updateFromUUIDHandler is the handler for wasmModel.UpdateFromUUID. Always // returns nil; meaning, no response is supplied (or expected). func (m *manager) updateFromUUIDHandler(data []byte) ([]byte, error) { - var msg mChannels.MessageUpdateInfo + var msg wChannels.MessageUpdateInfo err := json.Unmarshal(data, &msg) if err != nil { return nil, errors.Errorf( @@ -316,7 +316,7 @@ func (m *manager) updateFromUUIDHandler(data []byte) ([]byte, error) { // updateFromMessageIDHandler is the handler for wasmModel.UpdateFromMessageID. // Always returns nil; meaning, no response is supplied (or expected). func (m *manager) updateFromMessageIDHandler(data []byte) ([]byte, error) { - var msg mChannels.MessageUpdateInfo + var msg wChannels.MessageUpdateInfo err := json.Unmarshal(data, &msg) if err != nil { return nil, errors.Errorf( @@ -364,7 +364,7 @@ func (m *manager) getMessageHandler(data []byte) ([]byte, error) { "failed to JSON unmarshal %T from main thread: %+v", messageID, err) } - reply := mChannels.GetMessageMessage{} + reply := wChannels.GetMessageMessage{} msg, err := m.model.GetMessage(messageID) if err != nil { diff --git a/indexedDb/channels/implementation.go b/indexedDb/impl/channels/implementation.go similarity index 97% rename from indexedDb/channels/implementation.go rename to indexedDb/impl/channels/implementation.go index f26265bc7f379ea60c56b1adcbf8cadca49c607e..40fbb264e4fc5f3ae507feec0b728bc30276fd19 100644 --- a/indexedDb/channels/implementation.go +++ b/indexedDb/impl/channels/implementation.go @@ -13,6 +13,7 @@ import ( "crypto/ed25519" "encoding/base64" "encoding/json" + "gitlab.com/elixxir/xxdk-wasm/indexedDb/impl" "strings" "sync" "syscall/js" @@ -27,7 +28,6 @@ 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" ) @@ -67,7 +67,7 @@ func (w *wasmModel) JoinChannel(channel *cryptoBroadcast.Channel) { return } - _, err = indexedDb.Put(w.db, channelsStoreName, channelObj) + _, err = impl.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 := indexedDb.Delete(w.db, channelsStoreName, + err := impl.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 := indexedDb.NewContext() + ctx, cancel := impl.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 := indexedDb.Get(w.db, messageStoreName, key) + currentMsg, err := impl.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 := indexedDb.GetIndex(w.db, messageStoreName, + currentMsgObj, err := impl.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 := indexedDb.Put(w.db, messageStoreName, messageObj) + result, err := impl.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 indexedDb.DeleteIndex(w.db, messageStoreName, + return impl.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 := indexedDb.GetIndex(w.db, messageStoreName, + resultObj, err := impl.GetIndex(w.db, messageStoreName, messageStoreMessageIndex, msgIDStr) if err != nil { return nil, err diff --git a/indexedDb/channels/implementation_test.go b/indexedDb/impl/channels/implementation_test.go similarity index 96% rename from indexedDb/channels/implementation_test.go rename to indexedDb/impl/channels/implementation_test.go index 3bb61bc4f0c143844e12b1a1d7c1bb0c70381711..8642dc927d085d125ca669a9c9b67a9c144fcece 100644 --- a/indexedDb/channels/implementation_test.go +++ b/indexedDb/impl/channels/implementation_test.go @@ -14,7 +14,7 @@ import ( "fmt" "github.com/hack-pad/go-indexeddb/idb" "gitlab.com/elixxir/crypto/message" - "gitlab.com/elixxir/xxdk-wasm/indexedDb" + "gitlab.com/elixxir/xxdk-wasm/indexedDb/impl" "gitlab.com/elixxir/xxdk-wasm/storage" "gitlab.com/xx_network/crypto/csprng" "gitlab.com/xx_network/primitives/netTime" @@ -112,7 +112,7 @@ func TestWasmModel_DeleteMessage(t *testing.T) { } // Check the resulting status - results, err := indexedDb.Dump(eventModel.db, messageStoreName) + results, err := impl.Dump(eventModel.db, messageStoreName) if err != nil { t.Fatal(err) } @@ -127,7 +127,7 @@ func TestWasmModel_DeleteMessage(t *testing.T) { } // Check the resulting status - results, err = indexedDb.Dump(eventModel.db, messageStoreName) + results, err = impl.Dump(eventModel.db, messageStoreName) if err != nil { t.Fatal(err) } @@ -169,7 +169,7 @@ func Test_wasmModel_UpdateSentStatus(t *testing.T) { } // Ensure one message is stored - results, err2 := indexedDb.Dump(eventModel.db, messageStoreName) + results, err2 := impl.Dump(eventModel.db, messageStoreName) if err2 != nil { t.Fatal(err2) } @@ -183,7 +183,7 @@ func Test_wasmModel_UpdateSentStatus(t *testing.T) { uuid, nil, nil, nil, nil, nil, &expectedStatus) // Check the resulting status - results, err = indexedDb.Dump(eventModel.db, messageStoreName) + results, err = impl.Dump(eventModel.db, messageStoreName) if err != nil { t.Fatal(err) } @@ -241,7 +241,7 @@ func Test_wasmModel_JoinChannel_LeaveChannel(t *testing.T) { } eventModel.JoinChannel(testChannel) eventModel.JoinChannel(testChannel2) - results, err2 := indexedDb.Dump(eventModel.db, channelsStoreName) + results, err2 := impl.Dump(eventModel.db, channelsStoreName) if err2 != nil { t.Fatal(err2) } @@ -249,7 +249,7 @@ func Test_wasmModel_JoinChannel_LeaveChannel(t *testing.T) { t.Fatalf("Expected 2 channels to exist") } eventModel.LeaveChannel(testChannel.ReceptionID) - results, err = indexedDb.Dump(eventModel.db, channelsStoreName) + results, err = impl.Dump(eventModel.db, channelsStoreName) if err != nil { t.Fatal(err) } @@ -401,7 +401,7 @@ func Test_wasmModel_deleteMsgByChannel(t *testing.T) { } // Check pre-results - result, err2 := indexedDb.Dump(eventModel.db, messageStoreName) + result, err2 := impl.Dump(eventModel.db, messageStoreName) if err2 != nil { t.Fatal(err2) } @@ -416,7 +416,7 @@ func Test_wasmModel_deleteMsgByChannel(t *testing.T) { } // Check final results - result, err = indexedDb.Dump(eventModel.db, messageStoreName) + result, err = impl.Dump(eventModel.db, messageStoreName) if err != nil { t.Fatal(err) } diff --git a/indexedDb/channels/init.go b/indexedDb/impl/channels/init.go similarity index 98% rename from indexedDb/channels/init.go rename to indexedDb/impl/channels/init.go index 39b0aeb8b3ddbb9d298fb9e446c6bdcb0c463030..70768a14752e50a984741946452fd7702c0d8561 100644 --- a/indexedDb/channels/init.go +++ b/indexedDb/impl/channels/init.go @@ -15,7 +15,7 @@ import ( jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/v4/channels" cryptoChannel "gitlab.com/elixxir/crypto/channel" - "gitlab.com/elixxir/xxdk-wasm/indexedDb" + "gitlab.com/elixxir/xxdk-wasm/indexedDb/impl" "gitlab.com/xx_network/primitives/id" "syscall/js" ) @@ -59,7 +59,7 @@ func newWASMModel(databaseName string, encryption cryptoChannel.Cipher, cb MessageReceivedCallback, storeDatabaseName storeDatabaseNameFn, storeEncryptionStatus storeEncryptionStatusFn) (*wasmModel, error) { // Attempt to open database object - ctx, cancel := indexedDb.NewContext() + ctx, cancel := impl.NewContext() defer cancel() openRequest, err := idb.Global().Open(ctx, databaseName, currentVersion, func(db *idb.Database, oldVersion, newVersion uint) error { diff --git a/indexedDb/channels/main.go b/indexedDb/impl/channels/main.go similarity index 100% rename from indexedDb/channels/main.go rename to indexedDb/impl/channels/main.go diff --git a/indexedDb/channels/model.go b/indexedDb/impl/channels/model.go similarity index 100% rename from indexedDb/channels/model.go rename to indexedDb/impl/channels/model.go diff --git a/indexedDb/dm/dmIndexedDbWorker.js b/indexedDb/impl/dm/dmIndexedDbWorker.js similarity index 100% rename from indexedDb/dm/dmIndexedDbWorker.js rename to indexedDb/impl/dm/dmIndexedDbWorker.js diff --git a/indexedDb/dm/handlers.go b/indexedDb/impl/dm/handlers.go similarity index 88% rename from indexedDb/dm/handlers.go rename to indexedDb/impl/dm/handlers.go index cebe3594f0089fa70392639be2138875443e321e..495e46f3d3d3cd629b2871c31bb48282a6084fbf 100644 --- a/indexedDb/dm/handlers.go +++ b/indexedDb/impl/dm/handlers.go @@ -17,8 +17,8 @@ import ( "gitlab.com/elixxir/client/v4/dm" cryptoChannel "gitlab.com/elixxir/crypto/channel" "gitlab.com/elixxir/crypto/fastRNG" - mChannels "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker/channels" - mDm "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker/dm" + wChannels "gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/channels" + wDm "gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/dm" "gitlab.com/elixxir/xxdk-wasm/worker" "gitlab.com/xx_network/crypto/csprng" "time" @@ -36,18 +36,18 @@ type manager struct { // RegisterHandlers registers all the reception handlers to manage messages from // the main thread for the channels.EventModel. func (m *manager) RegisterHandlers() { - m.mh.RegisterCallback(mDm.NewWASMEventModelTag, m.newWASMEventModelHandler) - m.mh.RegisterCallback(mDm.ReceiveTag, m.receiveHandler) - m.mh.RegisterCallback(mDm.ReceiveTextTag, m.receiveTextHandler) - m.mh.RegisterCallback(mDm.ReceiveReplyTag, m.receiveReplyHandler) - m.mh.RegisterCallback(mDm.ReceiveReactionTag, m.receiveReactionHandler) - m.mh.RegisterCallback(mDm.UpdateSentStatusTag, m.updateSentStatusHandler) + m.mh.RegisterCallback(wDm.NewWASMEventModelTag, m.newWASMEventModelHandler) + m.mh.RegisterCallback(wDm.ReceiveTag, m.receiveHandler) + m.mh.RegisterCallback(wDm.ReceiveTextTag, m.receiveTextHandler) + m.mh.RegisterCallback(wDm.ReceiveReplyTag, m.receiveReplyHandler) + m.mh.RegisterCallback(wDm.ReceiveReactionTag, m.receiveReactionHandler) + m.mh.RegisterCallback(wDm.UpdateSentStatusTag, m.updateSentStatusHandler) } // newWASMEventModelHandler is the handler for NewWASMEventModel. Returns an // empty slice on success or an error message on failure. func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) { - var msg mChannels.NewWASMEventModelMessage + var msg wChannels.NewWASMEventModelMessage err := json.Unmarshal(data, &msg) if err != nil { return []byte{}, errors.Errorf( @@ -78,7 +78,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) { func (m *manager) messageReceivedCallback( uuid uint64, pubKey ed25519.PublicKey, update bool) { // Package parameters for sending - msg := &mDm.MessageReceivedCallbackMessage{ + msg := &wDm.MessageReceivedCallbackMessage{ UUID: uuid, PubKey: pubKey, Update: update, @@ -91,7 +91,7 @@ func (m *manager) messageReceivedCallback( } // Send it to the main thread - m.mh.SendMessage(mDm.MessageReceivedCallbackTag, data) + m.mh.SendMessage(wDm.MessageReceivedCallbackTag, data) } // storeDatabaseName sends the database name to the main thread and waits for @@ -101,14 +101,14 @@ func (m *manager) messageReceivedCallback( func (m *manager) storeDatabaseName(databaseName string) error { // Register response handler with channel that will wait for the response responseChan := make(chan []byte) - m.mh.RegisterCallback(mDm.StoreDatabaseNameTag, + m.mh.RegisterCallback(wDm.StoreDatabaseNameTag, func(data []byte) ([]byte, error) { responseChan <- data return nil, nil }) // Send encryption status to main thread - m.mh.SendMessage(mDm.StoreDatabaseNameTag, []byte(databaseName)) + m.mh.SendMessage(wDm.StoreDatabaseNameTag, []byte(databaseName)) // Wait for response select { @@ -134,7 +134,7 @@ func (m *manager) storeDatabaseName(databaseName string) error { func (m *manager) storeEncryptionStatus( databaseName string, encryption bool) (bool, error) { // Package parameters for sending - msg := &mChannels.EncryptionStatusMessage{ + msg := &wChannels.EncryptionStatusMessage{ DatabaseName: databaseName, EncryptionStatus: encryption, } @@ -145,17 +145,17 @@ func (m *manager) storeEncryptionStatus( // Register response handler with channel that will wait for the response responseChan := make(chan []byte) - m.mh.RegisterCallback(mDm.EncryptionStatusTag, + m.mh.RegisterCallback(wDm.EncryptionStatusTag, func(data []byte) ([]byte, error) { responseChan <- data return nil, nil }) // Send encryption status to main thread - m.mh.SendMessage(mDm.EncryptionStatusTag, data) + m.mh.SendMessage(wDm.EncryptionStatusTag, data) // Wait for response - var response mChannels.EncryptionStatusReply + var response wChannels.EncryptionStatusReply select { case responseData := <-responseChan: if err = json.Unmarshal(responseData, &response); err != nil { @@ -179,7 +179,7 @@ func (m *manager) storeEncryptionStatus( // receiveHandler is the handler for wasmModel.Receive. Returns a UUID of 0 on // error or the JSON marshalled UUID (uint64) on success. func (m *manager) receiveHandler(data []byte) ([]byte, error) { - var msg mDm.TransferMessage + var msg wDm.TransferMessage err := json.Unmarshal(data, &msg) if err != nil { return zeroUUID, errors.Errorf( @@ -200,7 +200,7 @@ func (m *manager) receiveHandler(data []byte) ([]byte, error) { // receiveTextHandler is the handler for wasmModel.ReceiveText. Returns a UUID // of 0 on error or the JSON marshalled UUID (uint64) on success. func (m *manager) receiveTextHandler(data []byte) ([]byte, error) { - var msg mDm.TransferMessage + var msg wDm.TransferMessage err := json.Unmarshal(data, &msg) if err != nil { return []byte{}, errors.Errorf( @@ -222,7 +222,7 @@ func (m *manager) receiveTextHandler(data []byte) ([]byte, error) { // receiveReplyHandler is the handler for wasmModel.ReceiveReply. Returns a UUID // of 0 on error or the JSON marshalled UUID (uint64) on success. func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) { - var msg mDm.TransferMessage + var msg wDm.TransferMessage err := json.Unmarshal(data, &msg) if err != nil { return zeroUUID, errors.Errorf( @@ -244,7 +244,7 @@ func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) { // receiveReactionHandler is the handler for wasmModel.ReceiveReaction. Returns // a UUID of 0 on error or the JSON marshalled UUID (uint64) on success. func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) { - var msg mDm.TransferMessage + var msg wDm.TransferMessage err := json.Unmarshal(data, &msg) if err != nil { return zeroUUID, errors.Errorf( @@ -266,7 +266,7 @@ func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) { // updateSentStatusHandler is the handler for wasmModel.UpdateSentStatus. Always // returns nil; meaning, no response is supplied (or expected). func (m *manager) updateSentStatusHandler(data []byte) ([]byte, error) { - var msg mDm.TransferMessage + var msg wDm.TransferMessage err := json.Unmarshal(data, &msg) if err != nil { return nil, errors.Errorf( diff --git a/indexedDb/dm/implementation.go b/indexedDb/impl/dm/implementation.go similarity index 94% rename from indexedDb/dm/implementation.go rename to indexedDb/impl/dm/implementation.go index bde56cede34f3cf97f108d26d7c7f14e027c498d..293754b06f0035b7b63feca8f2a40ec405f38557 100644 --- a/indexedDb/dm/implementation.go +++ b/indexedDb/impl/dm/implementation.go @@ -12,6 +12,7 @@ package main import ( "crypto/ed25519" "encoding/json" + "gitlab.com/elixxir/xxdk-wasm/indexedDb/impl" "strings" "sync" "syscall/js" @@ -21,7 +22,6 @@ 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" @@ -65,7 +65,7 @@ func (w *wasmModel) joinConversation(nickname string, "Unable to marshal Conversation: %+v", err) } - _, err = indexedDb.Put(w.db, conversationStoreName, convoObj) + _, err = impl.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 := indexedDb.Get( + _, err := impl.Get( w.db, conversationStoreName, utils.CopyBytesToJS(pubKey)) if err != nil { - if strings.Contains(err.Error(), indexedDb.ErrDoesNotExist) { + if strings.Contains(err.Error(), impl.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 := indexedDb.Get( + _, err := impl.Get( w.db, conversationStoreName, utils.CopyBytesToJS(pubKey)) if err != nil { - if strings.Contains(err.Error(), indexedDb.ErrDoesNotExist) { + if strings.Contains(err.Error(), impl.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 := indexedDb.Get( + _, err := impl.Get( w.db, conversationStoreName, utils.CopyBytesToJS(pubKey)) if err != nil { - if strings.Contains(err.Error(), indexedDb.ErrDoesNotExist) { + if strings.Contains(err.Error(), impl.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 := indexedDb.Get( + _, err := impl.Get( w.db, conversationStoreName, utils.CopyBytesToJS(pubKey)) if err != nil { - if strings.Contains(err.Error(), indexedDb.ErrDoesNotExist) { + if strings.Contains(err.Error(), impl.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 := indexedDb.Get(w.db, messageStoreName, key) + currentMsg, err := impl.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 := indexedDb.Put(w.db, messageStoreName, messageObj) + result, err := impl.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 := indexedDb.GetIndex(w.db, messageStoreName, + resultObj, err := impl.GetIndex(w.db, messageStoreName, messageStoreMessageIndex, utils.CopyBytesToJS(messageID.Marshal())) if err != nil { return 0, err diff --git a/indexedDb/dm/init.go b/indexedDb/impl/dm/init.go similarity index 98% rename from indexedDb/dm/init.go rename to indexedDb/impl/dm/init.go index aaee49ff4f63411dfec3b3187bb244b6fcd4b4f2..ec952044166a19f31fd13cec48f270a801bd8013 100644 --- a/indexedDb/dm/init.go +++ b/indexedDb/impl/dm/init.go @@ -11,6 +11,7 @@ package main import ( "crypto/ed25519" + "gitlab.com/elixxir/xxdk-wasm/indexedDb/impl" "syscall/js" "github.com/hack-pad/go-indexeddb/idb" @@ -18,7 +19,6 @@ import ( jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/v4/dm" cryptoChannel "gitlab.com/elixxir/crypto/channel" - "gitlab.com/elixxir/xxdk-wasm/indexedDb" ) const ( @@ -61,7 +61,7 @@ func newWASMModel(databaseName string, encryption cryptoChannel.Cipher, cb MessageReceivedCallback, storeDatabaseName storeDatabaseNameFn, storeEncryptionStatus storeEncryptionStatusFn) (*wasmModel, error) { // Attempt to open database object - ctx, cancel := indexedDb.NewContext() + ctx, cancel := impl.NewContext() defer cancel() openRequest, err := idb.Global().Open(ctx, databaseName, currentVersion, func(db *idb.Database, oldVersion, newVersion uint) error { diff --git a/indexedDb/dm/main.go b/indexedDb/impl/dm/main.go similarity index 100% rename from indexedDb/dm/main.go rename to indexedDb/impl/dm/main.go diff --git a/indexedDb/dm/model.go b/indexedDb/impl/dm/model.go similarity index 100% rename from indexedDb/dm/model.go rename to indexedDb/impl/dm/model.go diff --git a/indexedDb/utils.go b/indexedDb/impl/utils.go similarity index 99% rename from indexedDb/utils.go rename to indexedDb/impl/utils.go index 664a1cc663ddef38016359067b8dd2e527da24aa..b68746ebd6eb101d8f077b6179f1f6d41bfb04a6 100644 --- a/indexedDb/utils.go +++ b/indexedDb/impl/utils.go @@ -10,7 +10,7 @@ // This file contains several generic IndexedDB helper functions that // may be useful for any IndexedDB implementations. -package indexedDb +package impl import ( "context" diff --git a/indexedDb/utils_test.go b/indexedDb/impl/utils_test.go similarity index 99% rename from indexedDb/utils_test.go rename to indexedDb/impl/utils_test.go index 1c657ebd5dbb4607c977323dc8883042989f05f9..6b6da6ff36ee8be5412146443093ee7d85c07c4f 100644 --- a/indexedDb/utils_test.go +++ b/indexedDb/impl/utils_test.go @@ -7,7 +7,7 @@ //go:build js && wasm -package indexedDb +package impl import ( "github.com/hack-pad/go-indexeddb/idb" diff --git a/indexedDbWorker/channels/implementation.go b/indexedDb/worker/channels/implementation.go similarity index 100% rename from indexedDbWorker/channels/implementation.go rename to indexedDb/worker/channels/implementation.go diff --git a/indexedDbWorker/channels/init.go b/indexedDb/worker/channels/init.go similarity index 100% rename from indexedDbWorker/channels/init.go rename to indexedDb/worker/channels/init.go diff --git a/indexedDbWorker/channels/tags.go b/indexedDb/worker/channels/tags.go similarity index 98% rename from indexedDbWorker/channels/tags.go rename to indexedDb/worker/channels/tags.go index 5e3886a04b981aacfcde9007d2ab1ca98404d80d..3b963922bc5c2f49fab26651af57fef995cf11ea 100644 --- a/indexedDbWorker/channels/tags.go +++ b/indexedDb/worker/channels/tags.go @@ -5,6 +5,8 @@ // LICENSE file. // //////////////////////////////////////////////////////////////////////////////// +//go:build js && wasm + package channels import "gitlab.com/elixxir/xxdk-wasm/worker" @@ -12,7 +14,6 @@ import "gitlab.com/elixxir/xxdk-wasm/worker" // List of tags that can be used when sending a message or registering a handler // to receive a message. const ( - NewWASMEventModelTag worker.Tag = "NewWASMEventModel" MessageReceivedCallbackTag worker.Tag = "MessageReceivedCallback" EncryptionStatusTag worker.Tag = "EncryptionStatus" @@ -27,4 +28,4 @@ const ( UpdateFromMessageIDTag worker.Tag = "UpdateFromMessageID" GetMessageTag worker.Tag = "GetMessage" DeleteMessageTag worker.Tag = "DeleteMessage" -) \ No newline at end of file +) diff --git a/indexedDbWorker/dm/implementation.go b/indexedDb/worker/dm/implementation.go similarity index 100% rename from indexedDbWorker/dm/implementation.go rename to indexedDb/worker/dm/implementation.go diff --git a/indexedDbWorker/dm/init.go b/indexedDb/worker/dm/init.go similarity index 100% rename from indexedDbWorker/dm/init.go rename to indexedDb/worker/dm/init.go diff --git a/indexedDbWorker/dm/tags.go b/indexedDb/worker/dm/tags.go similarity index 98% rename from indexedDbWorker/dm/tags.go rename to indexedDb/worker/dm/tags.go index ae38027722769672ff4055bf76665f954f199105..afe29a33f3acc01470a35f84be495f2878bb194f 100644 --- a/indexedDbWorker/dm/tags.go +++ b/indexedDb/worker/dm/tags.go @@ -5,6 +5,8 @@ // LICENSE file. // //////////////////////////////////////////////////////////////////////////////// +//go:build js && wasm + package channelEventModel import "gitlab.com/elixxir/xxdk-wasm/worker" diff --git a/wasm/channels.go b/wasm/channels.go index 5fa1edced65da86700f88414a6b4d04e0c91aa7b..de8d1fc824cdc92fc9a534c0d16d3ba369e41723 100644 --- a/wasm/channels.go +++ b/wasm/channels.go @@ -14,7 +14,7 @@ import ( "encoding/json" "errors" "gitlab.com/elixxir/client/v4/channels" - channelsDb "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker/channels" + channelsDb "gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/channels" "gitlab.com/xx_network/primitives/id" "sync" "syscall/js" diff --git a/wasm/dm.go b/wasm/dm.go index 613835eb6490fc77e1189bc213c57b39c71f9c88..54c0e0fb3098ddc65599f9dd263db1fdfc7ae427 100644 --- a/wasm/dm.go +++ b/wasm/dm.go @@ -13,7 +13,7 @@ import ( "crypto/ed25519" "syscall/js" - indexDB "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker/dm" + indexDB "gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/dm" "encoding/base64" diff --git a/worker/message.go b/worker/message.go index aaf819f66c043565aa90f3c214792bae28beebff..133cb9b5fabe32f29bbda09bc6301b714c627224 100644 --- a/worker/message.go +++ b/worker/message.go @@ -5,6 +5,8 @@ // LICENSE file. // //////////////////////////////////////////////////////////////////////////////// +//go:build js && wasm + package worker // message is the outer message that contains the contents of each message sent