Acknlowedgements
This commit is contained in:
parent
d58b1545e3
commit
fcada3123a
|
@ -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{
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
|
|
2
main.go
2
main.go
|
@ -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
|
||||||
|
|
Reference in New Issue