diff --git a/indexedDb/implementation.go b/indexedDb/implementation.go index e88499d22e452013be2c39de73f057a74ec163fd..fb24324327e5cb212172ef4a4571053d313db653 100644 --- a/indexedDb/implementation.go +++ b/indexedDb/implementation.go @@ -13,12 +13,13 @@ import ( "context" "encoding/base64" "encoding/json" + "syscall/js" + "time" + "github.com/hack-pad/go-indexeddb/idb" "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/xxdk-wasm/utils" - "syscall/js" - "time" "gitlab.com/elixxir/client/channels" "gitlab.com/elixxir/client/cmix/rounds" @@ -145,13 +146,15 @@ func (w *wasmModel) LeaveChannel(channelID *id.ID) { // It may be called multiple times on the same message; it is incumbent on the // user of the API to filter such called by message ID. func (w *wasmModel) ReceiveMessage(channelID *id.ID, - messageID cryptoChannel.MessageID, senderUsername string, text string, - timestamp time.Time, lease time.Duration, _ rounds.Round, + messageID cryptoChannel.MessageID, + nickname, text string, identity cryptoChannel.Identity, + timestamp time.Time, lease time.Duration, round rounds.Round, status channels.SentStatus) { parentErr := errors.New("failed to ReceiveMessage") - err := w.receiveHelper(buildMessage(channelID.Marshal(), messageID.Bytes(), - nil, senderUsername, text, timestamp, lease, status)) + err := w.receiveHelper(buildMessage(channelID.Marshal(), + messageID.Bytes(), nil, nickname, text, identity, + timestamp, lease, status)) if err != nil { jww.ERROR.Printf("%+v", errors.Wrap(parentErr, err.Error())) } @@ -164,13 +167,15 @@ func (w *wasmModel) ReceiveMessage(channelID *id.ID, // Messages may arrive our of order, so a reply, in theory, can arrive before // the initial message. As a result, it may be important to buffer replies. func (w *wasmModel) ReceiveReply(channelID *id.ID, - messageID cryptoChannel.MessageID, replyTo cryptoChannel.MessageID, - senderUsername string, text string, timestamp time.Time, - lease time.Duration, _ rounds.Round, status channels.SentStatus) { + messageID cryptoChannel.MessageID, + reactionTo cryptoChannel.MessageID, nickname, text string, + identity cryptoChannel.Identity, timestamp time.Time, + lease time.Duration, round rounds.Round, status SentStatus) uint64 { parentErr := errors.New("failed to ReceiveReply") - err := w.receiveHelper(buildMessage(channelID.Marshal(), messageID.Bytes(), - replyTo.Bytes(), senderUsername, text, timestamp, lease, status)) + err := w.receiveHelper(buildMessage(channelID.Marshal(), + messageID.Bytes(), replyTo.Bytes(), nickname, text, identity, + timestamp, lease, status)) if err != nil { jww.ERROR.Printf("%+v", errors.Wrap(parentErr, err.Error())) } @@ -182,14 +187,15 @@ func (w *wasmModel) ReceiveReply(channelID *id.ID, // // Messages may arrive our of order, so a reply, in theory, can arrive before // the initial message. As a result, it may be important to buffer reactions. -func (w *wasmModel) ReceiveReaction(channelID *id.ID, - messageID cryptoChannel.MessageID, reactionTo cryptoChannel.MessageID, - senderUsername string, reaction string, timestamp time.Time, - lease time.Duration, _ rounds.Round, status channels.SentStatus) { +func (w *wasmModel) ReceiveReaction(channelID *id.ID, messageID cryptoChannel.MessageID, + reactionTo cryptoChannel.MessageID, nickname, reaction string, + identity cryptoChannel.Identity, timestamp time.Time, + lease time.Duration, round rounds.Round, status SentStatus) uint64 { parentErr := errors.New("failed to ReceiveReaction") - err := w.receiveHelper(buildMessage(channelID.Marshal(), messageID.Bytes(), - reactionTo.Bytes(), senderUsername, reaction, timestamp, lease, status)) + err := w.receiveHelper(buildMessage(channelID.Marshal(), + messageID.Bytes(), reactionTo.Bytes(), nickname, reaction, + identity, timestamp, lease, status)) if err != nil { jww.ERROR.Printf("%+v", errors.Wrap(parentErr, err.Error())) } @@ -198,8 +204,8 @@ func (w *wasmModel) ReceiveReaction(channelID *id.ID, // UpdateSentStatus is called whenever the [channels.SentStatus] of a message // has changed. // TODO: Potential race condition due to separate get/update operations. -func (w *wasmModel) UpdateSentStatus(messageID cryptoChannel.MessageID, - status channels.SentStatus) { +func (w *wasmModel) UpdateSentStatus(uuid uint64, messageID cryptoChannel.MessageID, + timestamp time.Time, round rounds.Round, status SentStatus) { parentErr := errors.New("failed to UpdateSentStatus") // Convert messageID to the key generated by json.Marshal @@ -228,12 +234,13 @@ func (w *wasmModel) UpdateSentStatus(messageID cryptoChannel.MessageID, // buildMessage is a private helper that converts typical [channels.EventModel] // inputs into a basic Message structure for insertion into storage. -func buildMessage(channelID, messageID, parentId []byte, senderUsername, - text string, timestamp time.Time, lease time.Duration, +func buildMessage(channelID, messageID, parentId []byte, nickname, + text string, timestamp time.Time, identity cryptoChannel.Identity, + lease time.Duration, status channels.SentStatus) *Message { return &Message{ Id: messageID, - SenderUsername: senderUsername, + Nickname: nickname, ChannelId: channelID, ParentMessageId: parentId, Timestamp: timestamp, @@ -242,6 +249,15 @@ func buildMessage(channelID, messageID, parentId []byte, senderUsername, Hidden: false, Pinned: false, Text: text, + // User Identity Info + Pubkey: identity.PubKey.Bytes(), + Honorific: identity.Honorific.String(), + Adjective: identity.Adjective.String(), + Noun: identity.Noun.String(), + Codename: identity.Codename, + Color: identity.Color, + Extension: identity.Extension, + CodesetVersion: identity.CodesetVersion, } }