allow custom message handling #325
|
@ -33,7 +33,7 @@ type Group struct {
|
|||
lock sync.Mutex
|
||||
LocalID string
|
||||
State string `json:"-"`
|
||||
unacknowledgedMessages []Message
|
||||
UnacknowledgedMessages []Message
|
||||
Version int
|
||||
}
|
||||
|
||||
|
@ -119,7 +119,7 @@ func (g *Group) AddSentMessage(message *groups.DecryptedGroupMessage, sig []byte
|
|||
PreviousMessageSig: message.PreviousMessageSig,
|
||||
ReceivedByServer: false,
|
||||
}
|
||||
g.unacknowledgedMessages = append(g.unacknowledgedMessages, timelineMessage)
|
||||
g.UnacknowledgedMessages = append(g.UnacknowledgedMessages, timelineMessage)
|
||||
return timelineMessage
|
||||
}
|
||||
|
||||
|
@ -130,10 +130,10 @@ func (g *Group) ErrorSentMessage(sig []byte, error string) bool {
|
|||
var message *Message
|
||||
|
||||
// Delete the message from the unack'd buffer if it exists
|
||||
for i, unAckedMessage := range g.unacknowledgedMessages {
|
||||
for i, unAckedMessage := range g.UnacknowledgedMessages {
|
||||
if compareSignatures(unAckedMessage.Signature, sig) {
|
||||
message = &unAckedMessage
|
||||
g.unacknowledgedMessages = append(g.unacknowledgedMessages[:i], g.unacknowledgedMessages[i+1:]...)
|
||||
g.UnacknowledgedMessages = append(g.UnacknowledgedMessages[:i], g.UnacknowledgedMessages[i+1:]...)
|
||||
|
||||
message.Error = error
|
||||
g.Timeline.Insert(message)
|
||||
|
@ -150,9 +150,9 @@ func (g *Group) AddMessage(message *groups.DecryptedGroupMessage, sig []byte) (*
|
|||
defer g.lock.Unlock()
|
||||
|
||||
// Delete the message from the unack'd buffer if it exists
|
||||
for i, unAckedMessage := range g.unacknowledgedMessages {
|
||||
for i, unAckedMessage := range g.UnacknowledgedMessages {
|
||||
if compareSignatures(unAckedMessage.Signature, sig) {
|
||||
g.unacknowledgedMessages = append(g.unacknowledgedMessages[:i], g.unacknowledgedMessages[i+1:]...)
|
||||
g.UnacknowledgedMessages = append(g.UnacknowledgedMessages[:i], g.UnacknowledgedMessages[i+1:]...)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
@ -176,7 +176,7 @@ func (g *Group) AddMessage(message *groups.DecryptedGroupMessage, sig []byte) (*
|
|||
func (g *Group) GetTimeline() (timeline []Message) {
|
||||
g.lock.Lock()
|
||||
defer g.lock.Unlock()
|
||||
return append(g.Timeline.GetMessages(), g.unacknowledgedMessages...)
|
||||
return append(g.Timeline.GetMessages(), g.UnacknowledgedMessages...)
|
||||
}
|
||||
|
||||
//EncryptMessage takes a message and encrypts the message under the group key.
|
||||
|
|
|
@ -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]Message
|
||||
}
|
||||
|
||||
// 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]Message)
|
||||
p.LocalID = GenerateRandomID()
|
||||
}
|
||||
|
||||
|
@ -150,10 +150,10 @@ func (p *Profile) AddSentMessageToContactTimeline(onion string, messageTxt strin
|
|||
sig := p.SignMessage(onion + messageTxt + sent.String() + now.String())
|
||||
|
||||
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)
|
||||
if contact.UnacknowledgedMessages == nil {
|
||||
contact.UnacknowledgedMessages = make(map[string]Message)
|
||||
}
|
||||
contact.unacknowledgedMessages[eventID] = *message
|
||||
contact.UnacknowledgedMessages[eventID] = *message
|
||||
return message
|
||||
}
|
||||
return nil
|
||||
|
@ -182,11 +182,11 @@ func (p *Profile) ErrorSentMessageToPeer(onion string, eventID string, error str
|
|||
|
||||
contact, ok := p.Contacts[onion]
|
||||
if ok {
|
||||
message, ok := contact.unacknowledgedMessages[eventID]
|
||||
message, 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
|
||||
delete(contact.unacknowledgedMessages, eventID)
|
||||
delete(contact.UnacknowledgedMessages, eventID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -198,11 +198,11 @@ func (p *Profile) AckSentMessageToPeer(onion string, eventID string) {
|
|||
|
||||
contact, ok := p.Contacts[onion]
|
||||
if ok {
|
||||
message, ok := contact.unacknowledgedMessages[eventID]
|
||||
message, ok := contact.UnacknowledgedMessages[eventID]
|
||||
if ok {
|
||||
message.Acknowledged = true
|
||||
contact.Timeline.Insert(&message)
|
||||
delete(contact.unacknowledgedMessages, eventID)
|
||||
delete(contact.UnacknowledgedMessages, eventID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue