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 LocalID string // used by storage engine
State string `json:"-"` State string `json:"-"`
lock sync.Mutex lock sync.Mutex
UnacknowledgedMessages map[string]Message UnacknowledgedMessages map[string]int
} }
// Profile encapsulates all the attributes necessary to be a Cwtch Peer. // Profile encapsulates all the attributes necessary to be a Cwtch Peer.
@ -66,7 +66,7 @@ func (p *PublicProfile) init() {
if p.Attributes == nil { if p.Attributes == nil {
p.Attributes = make(map[string]string) p.Attributes = make(map[string]string)
} }
p.UnacknowledgedMessages = make(map[string]Message) p.UnacknowledgedMessages = make(map[string]int)
p.LocalID = GenerateRandomID() 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} message := &Message{PeerID: p.Onion, Message: messageTxt, Timestamp: sent, Received: now, Signature: sig, Acknowledged: false}
if contact.UnacknowledgedMessages == nil { 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 message
} }
return nil return nil
@ -182,10 +183,9 @@ func (p *Profile) ErrorSentMessageToPeer(onion string, eventID string, error str
contact, ok := p.Contacts[onion] contact, ok := p.Contacts[onion]
if ok { if ok {
message, ok := contact.UnacknowledgedMessages[eventID] mIdx, ok := contact.UnacknowledgedMessages[eventID]
if ok { if ok {
message.Error = error p.Timeline.Messages[mIdx].Error = error
contact.Timeline.Insert(&message) // TODO: do we want a non timeline.Insert way to handle errors
delete(contact.UnacknowledgedMessages, eventID) delete(contact.UnacknowledgedMessages, eventID)
} }
} }
@ -198,10 +198,9 @@ func (p *Profile) AckSentMessageToPeer(onion string, eventID string) {
contact, ok := p.Contacts[onion] contact, ok := p.Contacts[onion]
if ok { if ok {
message, ok := contact.UnacknowledgedMessages[eventID] mIdx, ok := contact.UnacknowledgedMessages[eventID]
if ok { if ok {
message.Acknowledged = true p.Timeline.Messages[mIdx].Acknowledged = true
contact.Timeline.Insert(&message)
delete(contact.UnacknowledgedMessages, eventID) delete(contact.UnacknowledgedMessages, eventID)
} }
} }