Skip to content
Snippets Groups Projects
Commit dc56852b authored by Jake Taylor's avatar Jake Taylor :lips:
Browse files

Merge branch 'hotfix/DmReceive' into 'release'

made byte encoding for indexedDb consistent

See merge request !80
parents c45ee47c 6d299939
No related branches found
No related tags found
2 merge requests!80made byte encoding for indexedDb consistent,!67fix for latest client release
...@@ -11,7 +11,6 @@ package main ...@@ -11,7 +11,6 @@ package main
import ( import (
"crypto/ed25519" "crypto/ed25519"
"encoding/base64"
"encoding/json" "encoding/json"
"strings" "strings"
"sync" "sync"
...@@ -122,8 +121,7 @@ func (w *wasmModel) deleteMsgByChannel(channelID *id.ID) error { ...@@ -122,8 +121,7 @@ func (w *wasmModel) deleteMsgByChannel(channelID *id.ID) error {
} }
// Perform the operation // Perform the operation
channelIdStr := base64.StdEncoding.EncodeToString(channelID.Marshal()) keyRange, err := idb.NewKeyRangeOnly(impl.EncodeBytes(channelID.Marshal()))
keyRange, err := idb.NewKeyRangeOnly(js.ValueOf(channelIdStr))
cursorRequest, err := index.OpenCursorRange(keyRange, idb.CursorNext) cursorRequest, err := index.OpenCursorRange(keyRange, idb.CursorNext)
if err != nil { if err != nil {
return errors.WithMessagef(parentErr, "Unable to open Cursor: %+v", err) return errors.WithMessagef(parentErr, "Unable to open Cursor: %+v", err)
...@@ -303,9 +301,8 @@ func (w *wasmModel) UpdateFromMessageID(messageID message.ID, ...@@ -303,9 +301,8 @@ func (w *wasmModel) UpdateFromMessageID(messageID message.ID,
w.updateMux.Lock() w.updateMux.Lock()
defer w.updateMux.Unlock() defer w.updateMux.Unlock()
msgIDStr := base64.StdEncoding.EncodeToString(messageID.Marshal())
currentMsgObj, err := impl.GetIndex(w.db, messageStoreName, currentMsgObj, err := impl.GetIndex(w.db, messageStoreName,
messageStoreMessageIndex, js.ValueOf(msgIDStr)) messageStoreMessageIndex, impl.EncodeBytes(messageID.Marshal()))
if err != nil { if err != nil {
jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr, jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr,
"Failed to get message by index: %+v", err)) "Failed to get message by index: %+v", err))
...@@ -489,10 +486,8 @@ func (w *wasmModel) GetMessage( ...@@ -489,10 +486,8 @@ func (w *wasmModel) GetMessage(
// DeleteMessage removes a message with the given messageID from storage. // DeleteMessage removes a message with the given messageID from storage.
func (w *wasmModel) DeleteMessage(messageID message.ID) error { func (w *wasmModel) DeleteMessage(messageID message.ID) error {
msgId := js.ValueOf(base64.StdEncoding.EncodeToString(messageID.Bytes())) err := impl.DeleteIndex(w.db, messageStoreName,
messageStoreMessageIndex, pkeyName, impl.EncodeBytes(messageID.Marshal()))
err := impl.DeleteIndex(
w.db, messageStoreName, messageStoreMessageIndex, pkeyName, msgId)
if err != nil { if err != nil {
return err return err
} }
...@@ -510,7 +505,7 @@ func (w *wasmModel) MuteUser( ...@@ -510,7 +505,7 @@ func (w *wasmModel) MuteUser(
// msgIDLookup gets the UUID of the Message with the given messageID. // msgIDLookup gets the UUID of the Message with the given messageID.
func (w *wasmModel) msgIDLookup(messageID message.ID) (*Message, error) { func (w *wasmModel) msgIDLookup(messageID message.ID) (*Message, error) {
msgIDStr := js.ValueOf(base64.StdEncoding.EncodeToString(messageID.Bytes())) msgIDStr := impl.EncodeBytes(messageID.Marshal())
resultObj, err := impl.GetIndex(w.db, messageStoreName, resultObj, err := impl.GetIndex(w.db, messageStoreName,
messageStoreMessageIndex, msgIDStr) messageStoreMessageIndex, msgIDStr)
if err != nil { if err != nil {
......
...@@ -223,8 +223,7 @@ func (w *wasmModel) receiveWrapper(messageID message.ID, parentID *message.ID, n ...@@ -223,8 +223,7 @@ func (w *wasmModel) receiveWrapper(messageID message.ID, parentID *message.ID, n
timestamp time.Time, round rounds.Round, mType dm.MessageType, status dm.Status) (uint64, error) { timestamp time.Time, round rounds.Round, mType dm.MessageType, status dm.Status) (uint64, error) {
// If there is no extant Conversation, create one. // If there is no extant Conversation, create one.
_, err := impl.Get(w.db, conversationStoreName, _, err := impl.Get(w.db, conversationStoreName, impl.EncodeBytes(partnerKey))
utils.CopyBytesToJS(partnerKey[:]))
if err != nil { if err != nil {
if strings.Contains(err.Error(), impl.ErrDoesNotExist) { if strings.Contains(err.Error(), impl.ErrDoesNotExist) {
err = w.joinConversation(nickname, partnerKey, dmToken, err = w.joinConversation(nickname, partnerKey, dmToken,
...@@ -315,7 +314,7 @@ func (w *wasmModel) receiveHelper( ...@@ -315,7 +314,7 @@ func (w *wasmModel) receiveHelper(
// msgIDLookup gets the UUID of the Message with the given messageID. // msgIDLookup gets the UUID of the Message with the given messageID.
func (w *wasmModel) msgIDLookup(messageID message.ID) (uint64, error) { func (w *wasmModel) msgIDLookup(messageID message.ID) (uint64, error) {
resultObj, err := impl.GetIndex(w.db, messageStoreName, resultObj, err := impl.GetIndex(w.db, messageStoreName,
messageStoreMessageIndex, utils.CopyBytesToJS(messageID.Marshal())) messageStoreMessageIndex, impl.EncodeBytes(messageID.Marshal()))
if err != nil { if err != nil {
return 0, err return 0, err
} }
......
...@@ -14,6 +14,7 @@ package impl ...@@ -14,6 +14,7 @@ package impl
import ( import (
"context" "context"
"encoding/base64"
"github.com/hack-pad/go-indexeddb/idb" "github.com/hack-pad/go-indexeddb/idb"
"github.com/pkg/errors" "github.com/pkg/errors"
jww "github.com/spf13/jwalterweatherman" jww "github.com/spf13/jwalterweatherman"
...@@ -36,6 +37,11 @@ func NewContext() (context.Context, context.CancelFunc) { ...@@ -36,6 +37,11 @@ func NewContext() (context.Context, context.CancelFunc) {
return context.WithTimeout(context.Background(), dbTimeout) return context.WithTimeout(context.Background(), dbTimeout)
} }
// EncodeBytes returns the proper IndexedDb encoding for a byte slice into js.Value.
func EncodeBytes(input []byte) js.Value {
return js.ValueOf(base64.StdEncoding.EncodeToString(input))
}
// Get is a generic helper for getting values from the given [idb.ObjectStore]. // Get is a generic helper for getting values from the given [idb.ObjectStore].
// Only usable by primary key. // Only usable by primary key.
func Get(db *idb.Database, objectStoreName string, key js.Value) (js.Value, error) { func Get(db *idb.Database, objectStoreName string, key js.Value) (js.Value, error) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment