@@ -146,6 +146,7 @@ type Handler struct {
146
146
buildInfoJSON string
147
147
148
148
AppearanceFetcher func (ctx context.Context ) (codersdk.AppearanceConfig , error )
149
+ RegionsFetcher func (ctx context.Context ) (codersdk.RegionsResponse , error )
149
150
150
151
Entitlements atomic.Pointer [codersdk.Entitlements ]
151
152
Experiments atomic.Pointer [codersdk.Experiments ]
@@ -231,6 +232,7 @@ type htmlState struct {
231
232
Entitlements string
232
233
Appearance string
233
234
Experiments string
235
+ Regions string
234
236
}
235
237
236
238
type csrfState struct {
@@ -313,33 +315,64 @@ func (h *Handler) renderHTMLWithState(rw http.ResponseWriter, r *http.Request, f
313
315
})
314
316
err := eg .Wait ()
315
317
if err == nil {
316
- user , err := json .Marshal (db2sdk .User (user , orgIDs ))
317
- if err == nil {
318
- state .User = html .EscapeString (string (user ))
319
- }
320
- entitlements := h .Entitlements .Load ()
321
- if entitlements != nil {
322
- entitlements , err := json .Marshal (entitlements )
318
+ var wg sync.WaitGroup
319
+ wg .Add (1 )
320
+ go func () {
321
+ defer wg .Done ()
322
+ user , err := json .Marshal (db2sdk .User (user , orgIDs ))
323
323
if err == nil {
324
- state .Entitlements = html .EscapeString (string (entitlements ))
324
+ state .User = html .EscapeString (string (user ))
325
325
}
326
+ }()
327
+ entitlements := h .Entitlements .Load ()
328
+ if entitlements != nil {
329
+ wg .Add (1 )
330
+ go func () {
331
+ defer wg .Done ()
332
+ entitlements , err := json .Marshal (entitlements )
333
+ if err == nil {
334
+ state .Entitlements = html .EscapeString (string (entitlements ))
335
+ }
336
+ }()
326
337
}
327
338
if h .AppearanceFetcher != nil {
328
- cfg , err := h .AppearanceFetcher (ctx )
329
- if err == nil {
330
- appearance , err := json .Marshal (cfg )
339
+ wg .Add (1 )
340
+ go func () {
341
+ defer wg .Done ()
342
+ cfg , err := h .AppearanceFetcher (ctx )
331
343
if err == nil {
332
- state .Appearance = html .EscapeString (string (appearance ))
344
+ appearance , err := json .Marshal (cfg )
345
+ if err == nil {
346
+ state .Appearance = html .EscapeString (string (appearance ))
347
+ }
333
348
}
334
- }
349
+ }()
350
+ }
351
+ if h .RegionsFetcher != nil {
352
+ wg .Add (1 )
353
+ go func () {
354
+ defer wg .Done ()
355
+ regions , err := h .RegionsFetcher (ctx )
356
+ if err == nil {
357
+ regions , err := json .Marshal (regions )
358
+ if err == nil {
359
+ state .Regions = html .EscapeString (string (regions ))
360
+ }
361
+ }
362
+ }()
335
363
}
336
364
experiments := h .Experiments .Load ()
337
365
if experiments != nil {
338
- experiments , err := json .Marshal (experiments )
339
- if err == nil {
340
- state .Experiments = html .EscapeString (string (experiments ))
341
- }
366
+ wg .Add (1 )
367
+ go func () {
368
+ defer wg .Done ()
369
+ experiments , err := json .Marshal (experiments )
370
+ if err == nil {
371
+ state .Experiments = html .EscapeString (string (experiments ))
372
+ }
373
+ }()
342
374
}
375
+ wg .Wait ()
343
376
}
344
377
}
345
378
0 commit comments