From aa3c833c25c4d2809cf6f0e917b1df7155913c27 Mon Sep 17 00:00:00 2001 From: erinn Date: Mon, 11 Feb 2019 12:23:31 -0800 Subject: [PATCH] . --- go/characters/incominglistener.go | 4 ++++ go/gothings/gcd.go | 24 ++++++++++++++++++++++-- qml/panes/GroupSettingsPane.qml | 13 +++++-------- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/go/characters/incominglistener.go b/go/characters/incominglistener.go index 19ba293..f0c47ea 100644 --- a/go/characters/incominglistener.go +++ b/go/characters/incominglistener.go @@ -5,6 +5,7 @@ import ( "cwtch.im/ui/go/cwutil" "cwtch.im/ui/go/gobjects" "cwtch.im/ui/go/the" + "git.openprivacy.ca/openprivacy/libricochet-go/log" "time" ) @@ -12,6 +13,7 @@ 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) + the.CwtchApp.EventBus().Subscribe(event.NewGroupInvite, q.EventChannel) for { e := q.Next() @@ -40,6 +42,8 @@ func IncomingListener(callback func(*gobjects.Message)) { FromMe: e.Data[event.RemotePeer] == the.Peer.GetProfile().Onion, Timestamp: ts, }) + case event.NewGroupInvite: + log.Debugf("got a group invite!") } } } \ No newline at end of file diff --git a/go/gothings/gcd.go b/go/gothings/gcd.go index 1481211..099e947 100644 --- a/go/gothings/gcd.go +++ b/go/gothings/gcd.go @@ -43,7 +43,7 @@ type GrandCentralDispatcher struct { // other stuff i can't ontologize atm _ 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"` // signals emitted from the ui (written in go, below) @@ -58,6 +58,7 @@ type GrandCentralDispatcher struct { _ func(groupID, nick string) `signal:"saveGroupSettings,auto"` _ func() `signal:"requestPeerSettings,auto"` _ func(onion, nick string) `signal:"savePeerSettings,auto"` + _ func(onion, groupID string) `signal:"inviteToGroup,auto"` } func (this *GrandCentralDispatcher) sendMessage(message string, mID uint) { @@ -235,7 +236,19 @@ func (this *GrandCentralDispatcher) requestGroupSettings() { nick, _ := group.GetAttribute("nick") 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) { @@ -393,3 +406,10 @@ func (this *GrandCentralDispatcher) createGroup(server, groupName string) { group.NewMessage = make(chan model.Message) 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) + } +} \ No newline at end of file diff --git a/qml/panes/GroupSettingsPane.qml b/qml/panes/GroupSettingsPane.qml index 9aa8f27..3ac786e 100644 --- a/qml/panes/GroupSettingsPane.qml +++ b/qml/panes/GroupSettingsPane.qml @@ -10,7 +10,7 @@ import "../widgets" ColumnLayout { // groupSettingsPane anchors.fill: parent property string groupID - + property variant addrbook StackToolbar { id: toolbar @@ -74,18 +74,13 @@ ColumnLayout { // groupSettingsPane popup.font.pixelSize: 12 width: 200 font.pixelSize: 20 - model: ["erinn", "erinn (open privacy)", "supergirl", "someone else..."] - - onCurrentTextChanged: { - console.log(cbInvite.currentText) - } } SimpleButton { text: "Invite" onClicked: { - console.log("inviting " + cbInvite.currentText) + gcd.inviteToGroup(addrbook[cbInvite.currentIndex], groupID) } } @@ -93,12 +88,14 @@ ColumnLayout { // groupSettingsPane Connections { target: gcd - onSupplyGroupSettings: function(gid, name, server, invite) { + onSupplyGroupSettings: function(gid, name, server, invite, addrbooknames, addrbookaddrs) { groupID = gid toolbar.text = name txtGroupName.text = name txtServer.text = server txtInvitation.text = invite + cbInvite.model = addrbooknames + addrbook = addrbookaddrs } } } \ No newline at end of file