Skip to content

Commit dd2bbd7

Browse files
committed
separate template from exec for updating lang
1 parent 88d8273 commit dd2bbd7

8 files changed

Lines changed: 53 additions & 27 deletions

File tree

client/webserver/api.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,9 +1031,11 @@ func (s *WebServer) apiSetLocale(w http.ResponseWriter, r *http.Request) {
10311031
// Get actual language after SetLanguage (in case of fallback)
10321032
actualLang := s.core.Language()
10331033
s.lang.Store(actualLang)
1034-
if err := s.buildTemplates(actualLang); err != nil {
1035-
s.writeAPIError(w, err)
1036-
return
1034+
if !newUI {
1035+
if err := s.buildTemplates(actualLang); err != nil {
1036+
s.writeAPIError(w, err)
1037+
return
1038+
}
10371039
}
10381040

10391041
writeJSON(w, simpleAck())

client/webserver/newui/src/components/InitWizard.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ const SeedPromptForm = ({ setUsingSeed }: SeedPromptFormParams) => {
2121
</header>
2222
<div className="px-3">{t('prompt_for_seed')}</div>
2323
<div className="d-flex align-items-center p-3">
24-
<button className="fs16 me-1 flex-grow-1" onClick={onUsingSeedClicked}>Yes</button>
25-
<button className="feature fs16 ms-1 flex-grow-1" onClick={onNoSeedClicked}>No</button>
24+
<button className="fs16 me-1 flex-grow-1" onClick={onUsingSeedClicked}>{t('Yes')}</button>
25+
<button className="feature fs16 ms-1 flex-grow-1" onClick={onNoSeedClicked}>{t('No')}</button>
2626
</div>
2727
</form>
2828
)

client/webserver/newui/src/components/LocaleSelector.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ export default function LocaleSelector () {
1313
return (
1414
<div className="form-input-bg flex-center form-input-bg p-2 pointer hoverbg"
1515
onClick={(e) => {
16-
e.currentTarget.querySelector('select').click()
16+
const select = e.currentTarget.querySelector('select')
17+
if (e.target === select) return
18+
select.showPicker()
1719
}}>
18-
<select className="pointer" onChange={(e) => changeLanguage(e.target.value)} value={lang}
19-
onClick={(e) => e.stopPropagation()}>
20+
<select className="pointer" onChange={(e) => changeLanguage(e.target.value)} value={lang}>
2021
{Object.keys(localeData).map((key) => (
2122
<option key={key} value={key}>
2223
{localeData[key].flag} {localeData[key].name}

client/webserver/newui/src/components/MainFrame.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export default function MainFrame ({ pd }: MainFrameParams) {
3333
<Header />
3434
<div className="d-flex flex-grow-1 align-items-stretch">
3535
<Sidebar />
36-
<div className="flex-grow-1 border-left border-top position-relative">{renderContent()}</div>
36+
<div className="flex-grow-1 border-left border-top position-relative fade-in">{renderContent()}</div>
3737
</div>
3838
<Modals fd={formData} />
3939
</div>

client/webserver/newui/src/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
<meta charset="utf-8">
66
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
77
<meta name="viewport" content="width=device-width, initial-scale=1">
8-
<link rel="icon" href="/img/favicon.png?v={{.CommitHash}}">
9-
<script defer src="/js/bundle.js?v={{.CommitHash}}"></script>
8+
<link rel="icon" href="/img/favicon.png?v={{commitHash}}">
9+
<script defer src="/js/bundle.js?v={{commitHash}}"></script>
1010
<title>Bison Wallet</title>
1111
</head>
1212

client/webserver/newui/src/scss/main.scss

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,20 @@ img.logo-full {
266266
}
267267
}
268268

269+
@keyframes fadeIn {
270+
0% {
271+
opacity: 0;
272+
}
273+
274+
100% {
275+
opacity: 1;
276+
}
277+
}
278+
279+
.fade-in {
280+
animation: fadeIn 0.3s ease-in-out;
281+
}
282+
269283
.loading-bg {
270284
background-color: #30343d77;
271285
z-index: 201;

client/webserver/template.go

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121

2222
"decred.org/dcrdex/client/intl"
2323
"decred.org/dcrdex/client/webserver/locales"
24-
"decred.org/dcrdex/dex"
2524
"decred.org/dcrdex/dex/encode"
2625
"github.com/yuin/goldmark"
2726
"github.com/yuin/goldmark/extension"
@@ -307,7 +306,7 @@ var templateFuncs = template.FuncMap{
307306
},
308307
}
309308

310-
func (s *WebServer) newUIIndexHTML(siteDir string) ([]byte, error) {
309+
func (s *WebServer) newUIIndexTMPL(siteDir string) (*template.Template, error) {
311310
var indexTmpl string
312311
if siteDir != "" {
313312
b, err := os.ReadFile(filepath.Join(siteDir, "dist", "index.html"))
@@ -327,23 +326,27 @@ func (s *WebServer) newUIIndexHTML(siteDir string) ([]byte, error) {
327326
}
328327
indexTmpl = string(b)
329328
}
330-
t, err := template.New("index").Parse(indexTmpl)
329+
t, err := template.New("index").Funcs(template.FuncMap{
330+
"commitHash": func() string {
331+
if commitHash != "" {
332+
return commitHash[:8]
333+
}
334+
return hex.EncodeToString(encode.RandomBytes(4))
335+
},
336+
}).Parse(indexTmpl)
331337
if err != nil {
332338
return nil, fmt.Errorf("error parsing new UI index.html: %v", err)
333339
}
334-
ch := commitHash
335-
if ch == "" || s.core.Network() == dex.Simnet {
336-
ch = hex.EncodeToString(encode.RandomBytes(4))
337-
}
338-
data := &struct {
339-
Lang string
340-
CommitHash string
341-
}{
342-
Lang: (s.lang.Load()).(string),
343-
CommitHash: ch,
344-
}
340+
return t, nil
341+
}
342+
343+
func (s *WebServer) newUIIndexHTML(tmpl *template.Template, lang string) ([]byte, error) {
345344
var b bytes.Buffer
346-
err = t.ExecuteTemplate(&b, "index", data)
345+
err := tmpl.ExecuteTemplate(&b, "index", &struct {
346+
Lang string
347+
}{
348+
Lang: lang,
349+
})
347350
if err != nil {
348351
return nil, fmt.Errorf("error executing new UI index.html: %v", err)
349352
}

client/webserver/webserver.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ func New(cfg *Config) (*WebServer, error) {
552552
})
553553
})
554554
} else { // new UI. Only serve index.html.
555-
indexHTML, err := s.newUIIndexHTML(siteDir)
555+
tmpl, err := s.newUIIndexTMPL(siteDir)
556556
if err != nil {
557557
return nil, fmt.Errorf("error getting new UI index.html: %v", err)
558558
}
@@ -563,6 +563,12 @@ func New(cfg *Config) (*WebServer, error) {
563563
http.Error(w, "Invalid path", http.StatusBadRequest)
564564
return
565565
}
566+
indexHTML, err := s.newUIIndexHTML(tmpl, s.lang.Load().(string))
567+
if err != nil {
568+
log.Errorf("error getting new UI index.html: %v", err)
569+
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
570+
return
571+
}
566572
w.Header().Set("Content-Type", "text/html;charset=UTF-8")
567573
w.WriteHeader(http.StatusOK)
568574
w.Write(indexHTML)

0 commit comments

Comments
 (0)