diff --git a/client/app/config.go b/client/app/config.go index 240e457e54..dbf39ed410 100644 --- a/client/app/config.go +++ b/client/app/config.go @@ -195,6 +195,9 @@ func (cfg *Config) Web(c *core.Core, mm *mm.MarketMaker, log dex.Logger, utc boo UTC: utc, CertFile: certFile, KeyFile: keyFile, + NoEmbed: cfg.NoEmbedSite, + HttpProf: cfg.HTTPProfile, + AppVersion: userAppVersion(Version), Language: cfg.Language, Tor: cfg.Tor, } @@ -349,9 +352,16 @@ func ResolveConfig(appData string, cfg *Config) error { if cfg.MMConfig.EventLogDBPath == "" { cfg.MMConfig.EventLogDBPath = defaultMMEventLogDBPath } + return nil } +// userAppVersion returns a simple user-facing version: maj.min.patch. +func userAppVersion(fullVersion string) string { + parts := strings.Split(fullVersion, "-") + return parts[0] +} + // setNet sets the filepath for the network directory and some network specific // files. It returns a suggested path for the database file and a log file. If // using a file rotator, the directory of the log filepath as parsed by diff --git a/client/webserver/http.go b/client/webserver/http.go index 5494a7f683..6cc627b738 100644 --- a/client/webserver/http.go +++ b/client/webserver/http.go @@ -58,6 +58,7 @@ type CommonArguments struct { UserInfo *userInfo Title string UseDEXBranding bool + Version string } // Create the CommonArguments for the request. @@ -66,6 +67,7 @@ func (s *WebServer) commonArgs(r *http.Request, title string) *CommonArguments { UserInfo: extractUserInfo(r), Title: title, UseDEXBranding: s.useDEXBranding, + Version: s.appVersion, } } diff --git a/client/webserver/locales/ar.go b/client/webserver/locales/ar.go index 27f7c264ac..b36fc2bc3f 100644 --- a/client/webserver/locales/ar.go +++ b/client/webserver/locales/ar.go @@ -137,6 +137,7 @@ var Ar = map[string]*intl.Translation{ "Export Account": {T: "تصدير الحساب"}, "simultaneous_servers_msg": {T: "يدعم عميل منصة المبادلات اللامركزية لديكريد الاستخدام المتزامن لأي عدد من خوادم منصة المبادلات اللامركزية DEX."}, "Change App Password": {T: "تغيير كلمة مرور التطبيق"}, + "Version": {T: "إصدار"}, "Build ID": {T: "معرف البنية"}, "Connect": {T: "اتصل"}, "Send": {T: "ارسال"}, diff --git a/client/webserver/locales/de-de.go b/client/webserver/locales/de-de.go index 22d44f5b83..a7b122c1c2 100644 --- a/client/webserver/locales/de-de.go +++ b/client/webserver/locales/de-de.go @@ -167,6 +167,7 @@ var DeDE = map[string]*intl.Translation{ "browser_ntfn_blocked": {T: "Browser-Benachrichtigungen sind derzeit blockiert. Heben die Blockierung dieser Seite in Ihrem Browser auf, um Benachrichtigungen zu erhalten."}, "enable_browser_ntfn_info": {T: "Benachrichtigungen auf dem Desktop erscheinen auch dann, wenn dieses Fenster nicht aktiv ist. Dies kann nützlich sein, wenn Sie andere Anwendungen aktiviert haben, da Sie dann Benachrichtigungen über Aktivitäten auf Bison Wallet erhalten. Sie können die Arten von Benachrichtigungen, die Sie erhalten möchten, unten anpassen."}, "Save Notifications": {T: "Benachrichtigungen Speichern"}, + "Version": {T: "Version"}, "Build ID": {T: "Build ID"}, "Connect": {T: "Verbinden"}, "Send": {T: "Senden"}, diff --git a/client/webserver/locales/en-us.go b/client/webserver/locales/en-us.go index 34f57ee888..0db0ae7c77 100644 --- a/client/webserver/locales/en-us.go +++ b/client/webserver/locales/en-us.go @@ -172,6 +172,7 @@ var EnUS = map[string]*intl.Translation{ "companion_app_tor_needed": {T: "Tor must be enabled for this."}, "Pair companion app": {T: "Pair companion app"}, "Download APK": {T: "Download APK"}, + "Version": {T: "Version"}, "Build ID": {T: "Build ID"}, "Connect": {T: "Connect"}, "Send": {T: "Send"}, diff --git a/client/webserver/locales/pl-pl.go b/client/webserver/locales/pl-pl.go index c1f7be9a99..147fa170fe 100644 --- a/client/webserver/locales/pl-pl.go +++ b/client/webserver/locales/pl-pl.go @@ -133,6 +133,7 @@ var PlPL = map[string]*intl.Translation{ "Export Account": {T: "Eksportuj konto"}, "simultaneous_servers_msg": {T: "Klient Decred DEX wspiera jednoczesne korzystanie z wielu serwerów DEX."}, "Change App Password": {T: "Zmień hasło aplikacji"}, + "Version": {T: "Wersja"}, "Build ID": {T: "ID builda"}, "Connect": {T: "Połącz"}, "Withdraw": {T: "Wypłać"}, diff --git a/client/webserver/locales/pt-br.go b/client/webserver/locales/pt-br.go index 38187ed0b2..b77f4ed314 100644 --- a/client/webserver/locales/pt-br.go +++ b/client/webserver/locales/pt-br.go @@ -133,6 +133,7 @@ var PtBr = map[string]*intl.Translation{ "Export Account": {T: "Exportar Conta"}, "simultaneous_servers_msg": {T: "O cliente da DEX suporta simultâneos números de servidores DEX."}, "Change App Password": {T: "Trocar Senha do aplicativo"}, + "Version": {T: "Versão"}, "Build ID": {T: "ID da Build"}, "Connect": {T: "Conectar"}, "Withdraw": {T: "Retirar"}, diff --git a/client/webserver/locales/zh-cn.go b/client/webserver/locales/zh-cn.go index 0da298ba6e..5c6a6c1fb6 100644 --- a/client/webserver/locales/zh-cn.go +++ b/client/webserver/locales/zh-cn.go @@ -166,6 +166,7 @@ var ZhCN = map[string]*intl.Translation{ "browser_ntfn_blocked": {T: "浏览器通知目前被阻止。请在浏览器中解除对该站点的阻止,以接收通知。"}, "enable_browser_ntfn_info": {T: "即使此窗口不活跃,桌面通知仍会出现。当您打开其他应用程序时,这会很有帮助,因为您将收到 DCRDEX 事件的通知。您可以在下方自定义您希望接收的通知类型。"}, "Save Notifications": {T: "保存通知"}, + "Version": {T: "版本"}, "Build ID": {T: "构建 ID"}, "Connect": {T: "连接"}, "Send": {T: "发送"}, diff --git a/client/webserver/site/src/html/bodybuilder.tmpl b/client/webserver/site/src/html/bodybuilder.tmpl index ed09d2a656..4c65135dc6 100644 --- a/client/webserver/site/src/html/bodybuilder.tmpl +++ b/client/webserver/site/src/html/bodybuilder.tmpl @@ -102,7 +102,7 @@ [[[Market Making]]] - + [[[Settings]]] @@ -123,8 +123,15 @@ [[[Sign Out]]] +
+
+
+ [[[Version]]] {{.Version}} +
+
+ {{end}} diff --git a/client/webserver/webserver.go b/client/webserver/webserver.go index 5ea7ba9e93..eac1bb6b51 100644 --- a/client/webserver/webserver.go +++ b/client/webserver/webserver.go @@ -231,7 +231,8 @@ type Config struct { CustomSiteDir string Language string Logger dex.Logger - UTC bool // for stdout http request logging + UTC bool // for stdout http request logging + AppVersion string // user app version for UI CertFile string KeyFile string // NoEmbed indicates to serve files from the system disk rather than the @@ -276,6 +277,8 @@ type WebServer struct { bondBufMtx sync.Mutex bondBuf map[uint32]valStamp + appVersion string + useDEXBranding bool } @@ -402,6 +405,7 @@ func New(cfg *Config) (*WebServer, error) { cachedPasswords: make(map[string]*cachedPassword), tor: cfg.Tor, bondBuf: map[uint32]valStamp{}, + appVersion: cfg.AppVersion, useDEXBranding: useDEXBranding, } s.lang.Store(lang)