Merge branch 'ebf201902051208' of cwtch.im/ui into master

This commit is contained in:
Sarah Jamie Lewis 2019-02-11 21:44:44 +00:00 committed by Gogs
commit 48f558272f
6 changed files with 71 additions and 31 deletions

View File

@ -5,6 +5,7 @@ import (
"cwtch.im/ui/go/cwutil" "cwtch.im/ui/go/cwutil"
"cwtch.im/ui/go/gobjects" "cwtch.im/ui/go/gobjects"
"cwtch.im/ui/go/the" "cwtch.im/ui/go/the"
"git.openprivacy.ca/openprivacy/libricochet-go/log"
"time" "time"
) )
@ -12,6 +13,7 @@ func IncomingListener(callback func(*gobjects.Message)) {
q := event.NewEventQueue(1000) q := event.NewEventQueue(1000)
the.CwtchApp.EventBus().Subscribe(event.NewMessageFromPeer, q.EventChannel) the.CwtchApp.EventBus().Subscribe(event.NewMessageFromPeer, q.EventChannel)
the.CwtchApp.EventBus().Subscribe(event.NewMessageFromGroup, q.EventChannel) the.CwtchApp.EventBus().Subscribe(event.NewMessageFromGroup, q.EventChannel)
the.CwtchApp.EventBus().Subscribe(event.NewGroupInvite, q.EventChannel)
for { for {
e := q.Next() e := q.Next()
@ -40,6 +42,8 @@ func IncomingListener(callback func(*gobjects.Message)) {
FromMe: e.Data[event.RemotePeer] == the.Peer.GetProfile().Onion, FromMe: e.Data[event.RemotePeer] == the.Peer.GetProfile().Onion,
Timestamp: ts, Timestamp: ts,
}) })
case event.NewGroupInvite:
log.Debugf("got a group invite!")
} }
} }
} }

View File

@ -1,32 +1,28 @@
package characters package characters
func TorStatusPoller(setTorStatus func(int, string)) { import (
//TODO: convert this from asaur to bine "git.openprivacy.ca/openprivacy/libricochet-go/connectivity"
/* "time"
for { )
time.Sleep(time.Second)
//todo: this should use a config manager
//todo: also, try dialing the proxy to differentiate tor not running vs control port not configured
rawStatus, err := asaur.GetInfo("localhost:9051", "tcp4", "", "status/bootstrap-phase")
if err != nil {
setTorStatus(0, "can't find tor. is it running? is the controlport configured?")
continue
}
status := asaur.ParseBootstrapPhase(rawStatus) func TorStatusPoller(setTorStatus func(int, string), acn connectivity.ACN) {
progress, _ := strconv.Atoi(status["PROGRESS"]) for {
time.Sleep(time.Second)
if status["TAG"] == "done" { percent, message := acn.GetBootstrapStatus()
setTorStatus(3, "tor appears to be running just fine!") var statuscode int
continue if percent == 0 {
} statuscode = 0
message = "can't find tor. is it running? is the controlport configured?"
if progress == 0 { } else if percent == 100 {
setTorStatus(1, "tor is trying to start up") statuscode = 3
continue message = "tor appears to be running just fine!"
} } else if percent < 80 {
statuscode = 1
setTorStatus(2, status["SUMMARY"]) } else {
statuscode = 2
} }
*/
setTorStatus(statuscode, message)
}
} }

View File

@ -43,7 +43,7 @@ type GrandCentralDispatcher struct {
// other stuff i can't ontologize atm // other stuff i can't ontologize atm
_ func(str string) `signal:"InvokePopup"` _ func(str string) `signal:"InvokePopup"`
_ func(groupID, name, server, invitation string) `signal:"SupplyGroupSettings"` _ func(groupID, name, server, invitation string, addrbooknames, addrbookaddrs []string) `signal:"SupplyGroupSettings"`
_ func(onion, nick string) `signal:"SupplyPeerSettings"` _ func(onion, nick string) `signal:"SupplyPeerSettings"`
// signals emitted from the ui (written in go, below) // signals emitted from the ui (written in go, below)
@ -58,6 +58,7 @@ type GrandCentralDispatcher struct {
_ func(groupID, nick string) `signal:"saveGroupSettings,auto"` _ func(groupID, nick string) `signal:"saveGroupSettings,auto"`
_ func() `signal:"requestPeerSettings,auto"` _ func() `signal:"requestPeerSettings,auto"`
_ func(onion, nick string) `signal:"savePeerSettings,auto"` _ func(onion, nick string) `signal:"savePeerSettings,auto"`
_ func(onion, groupID string) `signal:"inviteToGroup,auto"`
} }
func (this *GrandCentralDispatcher) sendMessage(message string, mID uint) { func (this *GrandCentralDispatcher) sendMessage(message string, mID uint) {
@ -241,7 +242,19 @@ func (this *GrandCentralDispatcher) requestGroupSettings() {
nick, _ := group.GetAttribute("nick") nick, _ := group.GetAttribute("nick")
invite, _ := the.Peer.ExportGroup(this.CurrentOpenConversation()) invite, _ := the.Peer.ExportGroup(this.CurrentOpenConversation())
this.SupplyGroupSettings(this.CurrentOpenConversation(), nick, group.GroupServer, invite)
contactaddrs := the.Peer.GetContacts()
contactnames := make([]string, len(contactaddrs))
for i, contact := range contactaddrs {
name, hasname := the.Peer.GetContact(contact).GetAttribute("nick")
if hasname {
contactnames[i] = name
} else {
contactnames[i] = contact
}
}
this.SupplyGroupSettings(this.CurrentOpenConversation(), nick, group.GroupServer, invite, contactnames, contactaddrs)
} }
func (this *GrandCentralDispatcher) saveGroupSettings(groupID, nick string) { func (this *GrandCentralDispatcher) saveGroupSettings(groupID, nick string) {
@ -399,3 +412,10 @@ func (this *GrandCentralDispatcher) createGroup(server, groupName string) {
group.NewMessage = make(chan model.Message) group.NewMessage = make(chan model.Message)
go characters.CwtchListener(this.UIState.AddMessage, group.GroupID, group.NewMessage) go characters.CwtchListener(this.UIState.AddMessage, group.GroupID, group.NewMessage)
} }
func (this *GrandCentralDispatcher) inviteToGroup(onion, groupID string) {
err := the.Peer.InviteOnionToGroup(onion, groupID)
if err != nil {
log.Errorf("inviting %v to %v: %v", onion, groupID, err)
}
}

View File

@ -66,7 +66,7 @@ func main() {
loadCwtchData(gcd, acn) loadCwtchData(gcd, acn)
go characters.IncomingListener(gcd.UIState.AddMessage) go characters.IncomingListener(gcd.UIState.AddMessage)
go characters.PostmanPat(gcd.OutgoingMessages) go characters.PostmanPat(gcd.OutgoingMessages)
go characters.TorStatusPoller(gcd.TorStatus) go characters.TorStatusPoller(gcd.TorStatus, acn)
go characters.PresencePoller(gcd.UIState.GetContact, gcd.UIState.AddContact, gcd.UIState.UpdateContact) go characters.PresencePoller(gcd.UIState.GetContact, gcd.UIState.AddContact, gcd.UIState.UpdateContact)
go characters.GroupPoller(gcd.UIState.GetContact, gcd.UIState.UpdateContact) go characters.GroupPoller(gcd.UIState.GetContact, gcd.UIState.UpdateContact)

View File

@ -10,7 +10,7 @@ import "../widgets"
ColumnLayout { // groupSettingsPane ColumnLayout { // groupSettingsPane
anchors.fill: parent anchors.fill: parent
property string groupID property string groupID
property variant addrbook
StackToolbar { StackToolbar {
id: toolbar id: toolbar
@ -67,16 +67,35 @@ ColumnLayout { // groupSettingsPane
} }
} }
ScalingLabel { text: "Invite someone to the group:" }
ComboBox {
id: cbInvite
popup.font.pixelSize: 12
width: 200
font.pixelSize: 20
}
SimpleButton {
text: "Invite"
onClicked: {
gcd.inviteToGroup(addrbook[cbInvite.currentIndex], groupID)
}
}
Connections { Connections {
target: gcd target: gcd
onSupplyGroupSettings: function(gid, name, server, invite) { onSupplyGroupSettings: function(gid, name, server, invite, addrbooknames, addrbookaddrs) {
groupID = gid groupID = gid
toolbar.text = name toolbar.text = name
txtGroupName.text = name txtGroupName.text = name
txtServer.text = server txtServer.text = server
txtInvitation.text = invite txtInvitation.text = invite
cbInvite.model = addrbooknames
addrbook = addrbookaddrs
} }
} }
} }

View File

@ -101,6 +101,7 @@ ColumnLayout {
width: parent.width width: parent.width
onUpdated: { onUpdated: {
nick = lblNick.text
gcd.updateNick(lblNick.text) gcd.updateNick(lblNick.text)
} }
} }