forked from coyim/coyim
-
Notifications
You must be signed in to change notification settings - Fork 0
/
commands.go
79 lines (66 loc) · 1.72 KB
/
commands.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package gui
import "github.com/twstrike/coyim/client"
type executable interface {
execute(u *gtkUI)
}
type connectAccountCmd struct{ a *account }
type disconnectAccountCmd struct{ a *account }
type connectionInfoCmd struct{ a *account }
type editAccountCmd struct{ a *account }
type removeAccountCmd struct{ a *account }
type toggleAutoConnectCmd struct{ a *account }
type toggleAlwaysEncryptCmd struct{ a *account }
func (u *gtkUI) ExecuteCmd(c interface{}) {
u.commands <- c
}
func (c connectAccountCmd) execute(u *gtkUI) {
doInUIThread(func() {
u.connectAccount(c.a)
})
}
func (c disconnectAccountCmd) execute(u *gtkUI) {
go c.a.session.Close()
}
func (c connectionInfoCmd) execute(u *gtkUI) {
doInUIThread(func() {
u.connectionInfo(c.a)
})
}
func (c editAccountCmd) execute(u *gtkUI) {
doInUIThread(func() {
u.editAccount(c.a)
})
}
func (c removeAccountCmd) execute(u *gtkUI) {
doInUIThread(func() {
u.removeAccount(c.a)
})
}
func (c toggleAutoConnectCmd) execute(u *gtkUI) {
go u.toggleAutoConnectAccount(c.a)
}
func (c toggleAlwaysEncryptCmd) execute(u *gtkUI) {
go u.toggleAlwaysEncryptAccount(c.a)
}
func (u *gtkUI) watchCommands() {
for command := range u.commands {
switch c := command.(type) {
case executable:
c.execute(u)
case client.AuthorizeFingerprintCmd:
account := c.Account
uid := c.Peer
fpr := c.Fingerprint
//TODO: it could be a different pointer,
//find the account by ID()
account.AuthorizeFingerprint(uid, fpr)
u.ExecuteCmd(client.SaveApplicationConfigCmd{})
case client.SaveInstanceTagCmd:
account := c.Account
account.InstanceTag = c.InstanceTag
u.ExecuteCmd(client.SaveApplicationConfigCmd{})
case client.SaveApplicationConfigCmd:
u.SaveConfig()
}
}
}