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]), Image: cwutil.RandomProfileImage(e.Data[event.RemotePeer]),
Timestamp: ts, 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 case event.NewMessageFromGroup://event.TimestampReceived, event.TimestampSent, event.Data, event.GroupID, event.RemotePeer
ts, _ := time.Parse(time.RFC3339Nano, e.Data[event.TimestampSent]) ts, _ := time.Parse(time.RFC3339Nano, e.Data[event.TimestampSent])
callback(&gobjects.Message{ callback(&gobjects.Message{

View File

@ -27,7 +27,7 @@ func andHisBlackAndWhiteCat(incomingMessages chan gobjects.Letter) {
m := <-incomingMessages m := <-incomingMessages
the.Peer.PeerWithOnion(m.To) the.Peer.PeerWithOnion(m.To)
log.Debugf("sending message!") log.Debugf("sending message!")
id := the.Peer.SendMessageToPeer(m.To, m.Message) the.AcknowledgementIDs[m.To] = append(the.AcknowledgementIDs[m.To], m.MID)
the.AcknowledgementIDs[id] = 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] = make([]*gobjects.Message, 0)
} }
this.messages[m.Handle] = append(this.messages[m.Handle], m) if m.Message == "ack" {
// If an ack, swallow the message and ack from the list.
if this.parentGcd.CurrentOpenConversation() == m.Handle { acklist := the.AcknowledgementIDs[m.From]
if m.FromMe { for _,ack := range acklist {
m.From = "me" 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 { } else {
c := this.GetContact(m.Handle) this.messages[m.Handle] = append(this.messages[m.Handle], m)
c.Badge++
this.UpdateContact(c.Handle) 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 { func (this *InterfaceState) GetMessages(handle string) []*gobjects.Message {

View File

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

View File

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