diff --git a/indexedDb/impl/channels/implementation.go b/indexedDb/impl/channels/implementation.go index 91dd1cbfb8dc67a09afea17a7591c47adf59ef7f..0cb483e38f0b24b1375f5fbc2675430f3dd2b76d 100644 --- a/indexedDb/impl/channels/implementation.go +++ b/indexedDb/impl/channels/implementation.go @@ -436,19 +436,20 @@ func (w *wasmModel) upsertMessage(msg *Message) (uint64, error) { msgIdObj, err := impl.Put(w.db, messageStoreName, messageObj) if err != nil { // Do not error out when this message already exists inside - // the DB. Instead, set the ID and re-attempt as an upsert. + // the DB. Instead, set the ID and re-attempt as an update. if msg.ID == 0 { // always error out when not an insert attempt msgID, inErr := message.UnmarshalID(msg.MessageID) if inErr == nil { jww.WARN.Printf("upsertMessage duplicate: %+v", err) - existingMsg, inErr := w.GetMessage(msgID) - if inErr == nil && existingMsg.UUID != 0 { - msg.ID = existingMsg.UUID - return w.upsertMessage(msg) - } - jww.ERROR.Printf("upsertMessage no UUID: %+v", - inErr) + rnd := &rounds.Round{ID: id.Round(msg.Round)} + status := (*channels.SentStatus)(&msg.Status) + return w.UpdateFromMessageID(msgID, + &msg.Timestamp, + rnd, + &msg.Pinned, + &msg.Hidden, + status) } } return 0, errors.Errorf("Unable to put Message: %+v\n%s",