unackd messages to timeline instead of separate map

This commit is contained in:
erinn 2020-10-08 12:40:27 -07:00
parent 7b98e214e6
commit 913f43f699
1 changed files with 9 additions and 10 deletions

View File

@ -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)
}
}