forked from cwtch.im/ui
Merge branch 'ebf201902051208' of cwtch.im/ui into master
This commit is contained in:
commit
48f558272f
|
@ -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!")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
2
main.go
2
main.go
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -101,6 +101,7 @@ ColumnLayout {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
||||||
onUpdated: {
|
onUpdated: {
|
||||||
|
nick = lblNick.text
|
||||||
gcd.updateNick(lblNick.text)
|
gcd.updateNick(lblNick.text)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue