From c6606a5caf9b9895e89b580351201ece2f1a49e4 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Fri, 26 Jun 2020 15:59:00 +0200 Subject: [PATCH] Merge UI startup in to a single routine Makes it easier to see how things are connected. --- app/ui.js | 67 ++++++++++++++++++++++++++----------------------------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/app/ui.js b/app/ui.js index caba8e180..e4dfd5af8 100644 --- a/app/ui.js +++ b/app/ui.js @@ -20,6 +20,8 @@ import * as WebUtil from "./webutil.js"; const PAGE_TITLE = "noVNC"; +const LINGUAS = ["cs", "de", "el", "es", "fr", "it", "ja", "ko", "nl", "pl", "pt_BR", "ru", "sv", "tr", "zh_CN", "zh_TW"]; + const UI = { connected: false, @@ -42,20 +44,23 @@ const UI = { reconnectCallback: null, reconnectPassword: null, - prime() { - return WebUtil.initSettings().then(() => { - if (document.readyState === "interactive" || document.readyState === "complete") { - return UI.start(); - } + async start() { + // Set up translations + try { + await l10n.setup(LINGUAS, "app/locale/"); + } catch (err) { + Log.Error("Failed to load translations: " + err); + } - return new Promise((resolve, reject) => { - document.addEventListener('DOMContentLoaded', () => UI.start().then(resolve).catch(reject)); - }); - }); - }, + // Initialize setting storage + await WebUtil.initSettings(); - // Render default UI and initialize settings menu - start() { + // Wait for the page to load + if (document.readyState !== "interactive" && document.readyState !== "complete") { + await new Promise((resolve, reject) => { + document.addEventListener('DOMContentLoaded', resolve); + }); + } UI.initSettings(); @@ -70,22 +75,20 @@ const UI = { } // Try to fetch version number - fetch('./package.json') - .then((response) => { - if (!response.ok) { - throw Error("" + response.status + " " + response.statusText); - } - return response.json(); - }) - .then((packageInfo) => { - Array.from(document.getElementsByClassName('noVNC_version')).forEach(el => el.innerText = packageInfo.version); - }) - .catch((err) => { - Log.Error("Couldn't fetch package.json: " + err); - Array.from(document.getElementsByClassName('noVNC_version_wrapper')) - .concat(Array.from(document.getElementsByClassName('noVNC_version_separator'))) - .forEach(el => el.style.display = 'none'); - }); + try { + let response = await fetch('./package.json'); + if (!response.ok) { + throw Error("" + response.status + " " + response.statusText); + } + + let packageInfo = await response.json(); + Array.from(document.getElementsByClassName('noVNC_version')).forEach(el => el.innerText = packageInfo.version); + } catch (err) { + Log.Error("Couldn't fetch package.json: " + err); + Array.from(document.getElementsByClassName('noVNC_version_wrapper')) + .concat(Array.from(document.getElementsByClassName('noVNC_version_separator'))) + .forEach(el => el.style.display = 'none'); + } // Adapt the interface for touch screen devices if (isTouchDevice) { @@ -129,8 +132,6 @@ const UI = { // Show the connect panel on first load unless autoconnecting UI.openConnectPanel(); } - - return Promise.resolve(UI.rfb); }, initFullscreen() { @@ -1766,10 +1767,6 @@ const UI = { */ }; -// Set up translations -const LINGUAS = ["cs", "de", "el", "es", "fr", "it", "ja", "ko", "nl", "pl", "pt_BR", "ru", "sv", "tr", "zh_CN", "zh_TW"]; -l10n.setup(LINGUAS, "app/locale/") - .catch(err => Log.Error("Failed to load translations: " + err)) - .then(UI.prime); +UI.start(); export default UI;