diff --git a/event/common.go b/event/common.go index 8cae35a..9a0430f 100644 --- a/event/common.go +++ b/event/common.go @@ -261,6 +261,7 @@ const ( EventID = Field("EventID") EventContext = Field("EventContext") Index = Field("Index") + ContentHash = Field("ContentHash") // Handle denotes a contact handle of any type. Handle = Field("Handle") diff --git a/peer/cwtch_peer.go b/peer/cwtch_peer.go index 2450df4..3263436 100644 --- a/peer/cwtch_peer.go +++ b/peer/cwtch_peer.go @@ -1062,6 +1062,7 @@ func (cp *cwtchPeer) eventHandler() { // Republish as NewMessageFromPeer ev.EventType = event.NewMessageFromPeer ev.Data[event.Index] = strconv.Itoa(id) + ev.Data[event.ContentHash] = model.CalculateContentHash(ev.Data[event.RemotePeer], ev.Data[event.Data]) cp.eventBus.Publish(ev) } case event.PeerAcknowledgement: @@ -1252,9 +1253,10 @@ func (cp *cwtchPeer) attemptInsertOrAcknowledgeLegacyGroupConversation(conversat } } else { cp.mutex.Lock() - id, err := cp.storage.InsertMessage(conversationID, 0, dm.Text, model.Attributes{constants.AttrAck: constants.True, "PreviousSignature": base64.StdEncoding.EncodeToString(dm.PreviousMessageSig), constants.AttrAuthor: dm.Onion, constants.AttrSentTimestamp: time.Unix(int64(dm.Timestamp), 0).Format(time.RFC3339Nano)}, signature, model.CalculateContentHash(dm.Onion, dm.Text)) + contenthash := model.CalculateContentHash(dm.Onion, dm.Text) + id, err := cp.storage.InsertMessage(conversationID, 0, dm.Text, model.Attributes{constants.AttrAck: constants.True, "PreviousSignature": base64.StdEncoding.EncodeToString(dm.PreviousMessageSig), constants.AttrAuthor: dm.Onion, constants.AttrSentTimestamp: time.Unix(int64(dm.Timestamp), 0).Format(time.RFC3339Nano)}, signature, contenthash) if err == nil { - cp.eventBus.Publish(event.NewEvent(event.NewMessageFromGroup, map[event.Field]string{event.ConversationID: strconv.Itoa(conversationID), event.TimestampSent: time.Unix(int64(dm.Timestamp), 0).Format(time.RFC3339Nano), event.RemotePeer: dm.Onion, event.Index: strconv.Itoa(id), event.Data: dm.Text})) + cp.eventBus.Publish(event.NewEvent(event.NewMessageFromGroup, map[event.Field]string{event.ConversationID: strconv.Itoa(conversationID), event.TimestampSent: time.Unix(int64(dm.Timestamp), 0).Format(time.RFC3339Nano), event.RemotePeer: dm.Onion, event.Index: strconv.Itoa(id), event.Data: dm.Text, event.ContentHash: contenthash})) } cp.mutex.Unlock() return err