41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
|
package characters
|
||
|
|
||
|
import (
|
||
|
"cwtch.im/cwtch/event"
|
||
|
"cwtch.im/ui/go/cwutil"
|
||
|
"cwtch.im/ui/go/gobjects"
|
||
|
"cwtch.im/ui/go/the"
|
||
|
"git.openprivacy.ca/openprivacy/libricochet-go/log"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
func IncomingListener(callback func(*gobjects.Message)) {
|
||
|
q := event.NewEventQueue(1000)
|
||
|
the.CwtchApp.EventBus().Subscribe(event.NewMessageFromPeer, q.EventChannel)
|
||
|
the.CwtchApp.EventBus().Subscribe(event.NewMessageFromGroup, q.EventChannel)
|
||
|
|
||
|
for {
|
||
|
e := q.Next()
|
||
|
log.Debugf("got event %s", e.EventType)
|
||
|
|
||
|
switch e.EventType {
|
||
|
case event.NewMessageFromPeer:
|
||
|
callback(&gobjects.Message{
|
||
|
Handle: e.Data["Onion"],
|
||
|
From: e.Data["Onion"],
|
||
|
Message: e.Data["Data"],
|
||
|
Image: cwutil.RandomProfileImage(e.Data["Onion"]),
|
||
|
Timestamp: time.Now(),
|
||
|
})
|
||
|
case event.NewMessageFromGroup:
|
||
|
log.Debugf("NewMessageFromGroup!")
|
||
|
callback(&gobjects.Message{
|
||
|
Handle: e.Data["GroupID"],
|
||
|
From: e.Data["Onion"],
|
||
|
Message: e.Data["Data"],
|
||
|
Image: cwutil.RandomGroupImage(e.Data["GroupID"]),
|
||
|
Timestamp: time.Now(),
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
}
|