@@ -11,29 +11,13 @@ import (
11
11
"golang.org/x/sync/errgroup"
12
12
"golang.org/x/xerrors"
13
13
14
+ agpl "github.com/coder/coder/v2/coderd/appearance"
15
+ "github.com/coder/coder/v2/coderd/database"
14
16
"github.com/coder/coder/v2/coderd/httpapi"
15
17
"github.com/coder/coder/v2/coderd/rbac"
16
18
"github.com/coder/coder/v2/codersdk"
17
19
)
18
20
19
- var DefaultSupportLinks = []codersdk.LinkConfig {
20
- {
21
- Name : "Documentation" ,
22
- Target : "https://coder.com/docs/coder-oss" ,
23
- Icon : "docs" ,
24
- },
25
- {
26
- Name : "Report a bug" ,
27
- Target : "https://github.com/coder/coder/issues/new?labels=needs+grooming&body={CODER_BUILD_INFO}" ,
28
- Icon : "bug" ,
29
- },
30
- {
31
- Name : "Join the Coder Discord" ,
32
- Target : "https://coder.com/chat?utm_source=coder&utm_medium=coder&utm_campaign=server-footer" ,
33
- Icon : "chat" ,
34
- },
35
- }
36
-
37
21
// @Summary Get appearance
38
22
// @ID get-appearance
39
23
// @Security CoderSessionToken
@@ -42,7 +26,8 @@ var DefaultSupportLinks = []codersdk.LinkConfig{
42
26
// @Success 200 {object} codersdk.AppearanceConfig
43
27
// @Router /appearance [get]
44
28
func (api * API ) appearance (rw http.ResponseWriter , r * http.Request ) {
45
- cfg , err := api .fetchAppearanceConfig (r .Context ())
29
+ af := * api .AGPL .AppearanceFetcher .Load ()
30
+ cfg , err := af .Fetch (r .Context ())
46
31
if err != nil {
47
32
httpapi .Write (r .Context (), rw , http .StatusInternalServerError , codersdk.Response {
48
33
Message : "Failed to fetch appearance config." ,
@@ -54,37 +39,39 @@ func (api *API) appearance(rw http.ResponseWriter, r *http.Request) {
54
39
httpapi .Write (r .Context (), rw , http .StatusOK , cfg )
55
40
}
56
41
57
- func ( api * API ) fetchAppearanceConfig ( ctx context. Context ) (codersdk. AppearanceConfig , error ) {
58
- api . entitlementsMu . RLock ()
59
- isEntitled := api . entitlements . Features [ codersdk . FeatureAppearance ]. Entitlement == codersdk .EntitlementEntitled
60
- api . entitlementsMu . RUnlock ()
42
+ type appearanceFetcher struct {
43
+ database database. Store
44
+ supportLinks [] codersdk.LinkConfig
45
+ }
61
46
62
- if ! isEntitled {
63
- return codersdk. AppearanceConfig {
64
- SupportLinks : DefaultSupportLinks ,
65
- }, nil
47
+ func newAppearanceFetcher ( store database. Store , links []codersdk. LinkConfig ) agpl. AppearanceFetcher {
48
+ return & appearanceFetcher {
49
+ database : store ,
50
+ supportLinks : links ,
66
51
}
52
+ }
67
53
54
+ func (f * appearanceFetcher ) Fetch (ctx context.Context ) (codersdk.AppearanceConfig , error ) {
68
55
var eg errgroup.Group
69
56
var applicationName string
70
57
var logoURL string
71
58
var serviceBannerJSON string
72
59
eg .Go (func () (err error ) {
73
- applicationName , err = api . Database .GetApplicationName (ctx )
60
+ applicationName , err = f . database .GetApplicationName (ctx )
74
61
if err != nil && ! errors .Is (err , sql .ErrNoRows ) {
75
62
return xerrors .Errorf ("get application name: %w" , err )
76
63
}
77
64
return nil
78
65
})
79
66
eg .Go (func () (err error ) {
80
- logoURL , err = api . Database .GetLogoURL (ctx )
67
+ logoURL , err = f . database .GetLogoURL (ctx )
81
68
if err != nil && ! errors .Is (err , sql .ErrNoRows ) {
82
69
return xerrors .Errorf ("get logo url: %w" , err )
83
70
}
84
71
return nil
85
72
})
86
73
eg .Go (func () (err error ) {
87
- serviceBannerJSON , err = api . Database .GetServiceBanner (ctx )
74
+ serviceBannerJSON , err = f . database .GetServiceBanner (ctx )
88
75
if err != nil && ! errors .Is (err , sql .ErrNoRows ) {
89
76
return xerrors .Errorf ("get service banner: %w" , err )
90
77
}
@@ -108,10 +95,10 @@ func (api *API) fetchAppearanceConfig(ctx context.Context) (codersdk.AppearanceC
108
95
}
109
96
}
110
97
111
- if len (api . DeploymentValues . Support . Links . Value ) == 0 {
112
- cfg .SupportLinks = DefaultSupportLinks
98
+ if len (f . supportLinks ) == 0 {
99
+ cfg .SupportLinks = agpl . DefaultSupportLinks
113
100
} else {
114
- cfg .SupportLinks = api . DeploymentValues . Support . Links . Value
101
+ cfg .SupportLinks = f . supportLinks
115
102
}
116
103
117
104
return cfg , nil
0 commit comments