diff --git a/model/profile.go b/model/profile.go index 4bd449f..9cb9b8e 100644 --- a/model/profile.go +++ b/model/profile.go @@ -40,7 +40,7 @@ type PublicProfile struct { LocalID string // used by storage engine State string `json:"-"` lock sync.Mutex - UnacknowledgedMessages map[string]Message + UnacknowledgedMessages map[string]int } // Profile encapsulates all the attributes necessary to be a Cwtch Peer. @@ -66,7 +66,7 @@ func (p *PublicProfile) init() { if p.Attributes == nil { p.Attributes = make(map[string]string) } - p.UnacknowledgedMessages = make(map[string]Message) + p.UnacknowledgedMessages = make(map[string]int) p.LocalID = GenerateRandomID() } @@ -151,9 +151,10 @@ func (p *Profile) AddSentMessageToContactTimeline(onion string, messageTxt strin message := &Message{PeerID: p.Onion, Message: messageTxt, Timestamp: sent, Received: now, Signature: sig, Acknowledged: false} if contact.UnacknowledgedMessages == nil { - contact.UnacknowledgedMessages = make(map[string]Message) + contact.UnacknowledgedMessages = make(map[string]int) } - contact.UnacknowledgedMessages[eventID] = *message + p.AddMessageToContactTimeline(onion, messageTxt, sent) + contact.UnacknowledgedMessages[eventID] = p.Timeline.Len() - 1 return message } return nil @@ -182,10 +183,9 @@ func (p *Profile) ErrorSentMessageToPeer(onion string, eventID string, error str contact, ok := p.Contacts[onion] if ok { - message, ok := contact.UnacknowledgedMessages[eventID] + mIdx, ok := contact.UnacknowledgedMessages[eventID] if ok { - message.Error = error - contact.Timeline.Insert(&message) // TODO: do we want a non timeline.Insert way to handle errors + p.Timeline.Messages[mIdx].Error = error delete(contact.UnacknowledgedMessages, eventID) } } @@ -198,10 +198,9 @@ func (p *Profile) AckSentMessageToPeer(onion string, eventID string) { contact, ok := p.Contacts[onion] if ok { - message, ok := contact.UnacknowledgedMessages[eventID] + mIdx, ok := contact.UnacknowledgedMessages[eventID] if ok { - message.Acknowledged = true - contact.Timeline.Insert(&message) + p.Timeline.Messages[mIdx].Acknowledged = true delete(contact.UnacknowledgedMessages, eventID) } }