-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpage.go
90 lines (80 loc) · 1.44 KB
/
page.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
80
81
82
83
84
85
86
87
88
89
90
package models
import (
"log"
"runtime/debug"
"time"
)
type Page struct {
NeedsLogin bool
Version string
Theme string
Font string
Refresh int
Tracking bool
Projects []string
Status StatusResponse
DefaultDate string
}
// var page Page
var pages map[string]Page
func initialize() Page {
return Page{
Version: version(),
Theme: "indigo",
Font: "Roboto",
Refresh: 5,
DefaultDate: time.Now().Local().Format("2006-01-02"),
}
}
func init() {
pages = make(map[string]Page)
}
func version() string {
version := "v0.1.0"
if info, ok := debug.ReadBuildInfo(); ok {
for _, setting := range info.Settings {
if setting.Key == "vcs.revision" {
return version + " " + setting.Value
}
}
}
return version
}
func GetPage() Page {
return initialize()
}
func GetUserPage(u string) Page {
if u == "" {
return initialize()
}
if page, ok := pages[u]; ok {
return page
}
log.Println("user page not set, using default")
pages[u] = initialize()
return pages[u]
}
func SetTheme(user, theme string) {
page, ok := pages[user]
if !ok {
page = initialize()
}
page.Theme = theme
pages[user] = page
}
func SetFont(user, font string) {
page, ok := pages[user]
if !ok {
page = initialize()
}
page.Font = font
pages[user] = page
}
func SetRefresh(user string, refresh int) {
page, ok := pages[user]
if !ok {
page = initialize()
}
page.Refresh = refresh
pages[user] = page
}