forked from diamondburned/dissent
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
60 lines (48 loc) · 1.14 KB
/
main.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
package main
import (
"context"
"github.com/diamondburned/adaptive"
"github.com/diamondburned/gotkit/app"
"github.com/diamondburned/gotkit/gtkutil/cssutil"
"github.com/diamondburned/gtkcord4/internal/gtkcord"
"github.com/diamondburned/gtkcord4/internal/gtkcord/window"
_ "github.com/diamondburned/gotkit/gtkutil/aggressivegc"
)
var _ = cssutil.WriteCSS(`
.adaptive-avatar > image {
background: none;
}
.adaptive-avatar > label {
background: @borders;
}
`)
func main() {
m := manager{}
app := app.New("com.github.diamondburned.gtkcord4", "gtkcord4")
app.AddJSONActions(map[string]interface{}{
"app.open-channel": m.openChannel,
})
app.ConnectActivate(func() { m.activate(app.Context()) })
app.RunMain(context.Background())
}
type manager struct {
*window.Window
ctx context.Context
}
func (m *manager) openChannel(cmd gtkcord.OpenChannelCommand) {
if m.Chat == nil {
return
}
// TODO: highlight message.
m.Chat.OpenChannel(cmd.ChannelID)
}
func (m *manager) activate(ctx context.Context) {
adaptive.Init()
m.ctx = ctx
if m.Window != nil {
m.Window.Present()
return
}
m.Window = window.NewWindow(ctx)
m.Window.Show()
}