unackd messages to timeline instead of separate map
This commit is contained in:
parent
7b98e214e6
commit
913f43f699
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue