Acknlowedgements

This commit is contained in:
Sarah Jamie Lewis 2019-02-04 14:22:58 -08:00
parent d58b1545e3
commit fcada3123a
5 changed files with 26 additions and 14 deletions

View File

@ -26,6 +26,10 @@ func IncomingListener(callback func(*gobjects.Message)) {
Image: cwutil.RandomProfileImage(e.Data[event.RemotePeer]),
Timestamp: ts,
})
the.Peer.PeerWithOnion(e.Data[event.RemotePeer])
if e.Data[event.Data] != "ack" {
the.Peer.SendMessageToPeer(e.Data[event.RemotePeer], "ack")
}
case event.NewMessageFromGroup://event.TimestampReceived, event.TimestampSent, event.Data, event.GroupID, event.RemotePeer
ts, _ := time.Parse(time.RFC3339Nano, e.Data[event.TimestampSent])
callback(&gobjects.Message{

View File

@ -27,7 +27,7 @@ func andHisBlackAndWhiteCat(incomingMessages chan gobjects.Letter) {
m := <-incomingMessages
the.Peer.PeerWithOnion(m.To)
log.Debugf("sending message!")
id := the.Peer.SendMessageToPeer(m.To, m.Message)
the.AcknowledgementIDs[id] = m.MID
the.AcknowledgementIDs[m.To] = append(the.AcknowledgementIDs[m.To], m.MID)
the.Peer.SendMessageToPeer(m.To, m.Message)
}
}

View File

@ -75,19 +75,27 @@ func (this *InterfaceState) AddMessage(m *gobjects.Message) {
this.messages[m.Handle] = make([]*gobjects.Message, 0)
}
this.messages[m.Handle] = append(this.messages[m.Handle], m)
if this.parentGcd.CurrentOpenConversation() == m.Handle {
if m.FromMe {
m.From = "me"
if m.Message == "ack" {
// If an ack, swallow the message and ack from the list.
acklist := the.AcknowledgementIDs[m.From]
for _,ack := range acklist {
this.parentGcd.Acknowledged(ack)
}
this.parentGcd.AppendMessage(m.Handle, m.From, m.DisplayName, m.Message, m.Image, uint(m.MessageID), m.FromMe, m.Timestamp.Format(constants.TIME_FORMAT))
} else {
c := this.GetContact(m.Handle)
c.Badge++
this.UpdateContact(c.Handle)
this.messages[m.Handle] = append(this.messages[m.Handle], m)
if this.parentGcd.CurrentOpenConversation() == m.Handle {
if m.FromMe {
m.From = "me"
}
this.parentGcd.AppendMessage(m.Handle, m.From, m.DisplayName, m.Message, m.Image, uint(m.MessageID), m.FromMe, m.Timestamp.Format(constants.TIME_FORMAT))
} else {
c := this.GetContact(m.Handle)
c.Badge++
this.UpdateContact(c.Handle)
}
}
}
func (this *InterfaceState) GetMessages(handle string) []*gobjects.Message {

View File

@ -8,4 +8,4 @@ import (
var CwtchApp app.Application
var Peer libPeer.CwtchPeer
var CwtchDir string
var AcknowledgementIDs map[string]uint
var AcknowledgementIDs map[string][]uint

View File

@ -33,7 +33,7 @@ func main() {
// our globals
gcd := gothings.NewGrandCentralDispatcher(nil)
gcd.UIState = gothings.NewUIState(gcd)
the.AcknowledgementIDs = make(map[string]uint)
the.AcknowledgementIDs = make(map[string][]uint)
gcd.OutgoingMessages = make(chan gobjects.Letter, 1000)
//TODO: put theme stuff somewhere better