diff --git a/ui/.eslintrc.js b/ui/.eslintrc.js index 98d0431..6b2e11f 100644 --- a/ui/.eslintrc.js +++ b/ui/.eslintrc.js @@ -8,8 +8,9 @@ module.exports = { '@vue/standard' ], rules: { - 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', - 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' + 'no-console': 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-redeclare': 'off' }, parserOptions: { parser: 'babel-eslint' diff --git a/ui/mock-server.js b/ui/mock-server.js index 4d3644e..0ef5f84 100644 --- a/ui/mock-server.js +++ b/ui/mock-server.js @@ -53,7 +53,7 @@ function returnConfig (res) { app.get('/api/attrs', (req, res) => { res.send( - `var base_attributes = {"name":"yuzu","target_url":"https://raw.githubusercontent.com/j-selby/test-installer/master/config.linux.v2.toml"};` + { 'name': 'yuzu', 'target_url': 'https://raw.githubusercontent.com/j-selby/test-installer/master/config.linux.v2.toml' } ) }) diff --git a/ui/package.json b/ui/package.json index 47e8f01..1d2f4dc 100644 --- a/ui/package.json +++ b/ui/package.json @@ -8,6 +8,7 @@ "lint": "vue-cli-service lint" }, "dependencies": { + "axios": "^0.19.0", "buefy": "^0.8.5", "vue": "^2.6.10", "vue-router": "^3.1.3" diff --git a/ui/public/index.html b/ui/public/index.html index a7a76db..e742a3b 100644 --- a/ui/public/index.html +++ b/ui/public/index.html @@ -4,7 +4,6 @@ - ... Installer diff --git a/ui/src/main.js b/ui/src/main.js index 3ad8a42..badbf0c 100644 --- a/ui/src/main.js +++ b/ui/src/main.js @@ -1,7 +1,8 @@ import Vue from 'vue' import App from './App.vue' import router from './router' -import { ajax, stream_ajax } from './helpers' +import axios from 'axios' +import { ajax, stream_ajax as streamAjax } from './helpers' import Buefy from 'buefy' import 'buefy/dist/buefy.css' @@ -24,18 +25,18 @@ function intercept (method) { } // See if we have access to the JSON interface -var has_external_interface = false +var hasExternalInterface = false try { window.external.invoke(JSON.stringify({ Test: {} })) - has_external_interface = true + hasExternalInterface = true } catch (e) { console.warn('Running without JSON interface - unexpected behaviour may occur!') } // Overwrite loggers with the logging backend -if (has_external_interface) { +if (hasExternalInterface) { window.onerror = function (msg, url, line) { window.external.invoke( JSON.stringify({ @@ -54,7 +55,7 @@ if (has_external_interface) { } // Disable F5 -function disable_shortcuts (e) { +function disableShortcuts (e) { switch (e.keyCode) { case 116: // F5 e.preventDefault() @@ -69,19 +70,23 @@ ajax('/api/dark-mode', function (enable) { } }) -window.addEventListener('keydown', disable_shortcuts) +window.addEventListener('keydown', disableShortcuts) -document.getElementById('window-title').innerText = - base_attributes.name + ' Installer' +axios.get('/api/attrs').then(function (resp) { + document.getElementById('window-title').innerText = + resp.data.name + ' Installer' +}).catch(function (err) { + console.error(err) +}) -function selectFileCallback (name) { - app.install_location = name -} +// function selectFileCallback (name) { +// app.install_location = name +// } var app = new Vue({ router: router, data: { - attrs: base_attributes, + attrs: {}, config: {}, install_location: '', // If the option to pick an install location should be provided @@ -95,25 +100,28 @@ var app = new Vue({ render: function (caller) { return caller(App) }, + mounted: function () { + axios.get('/api/attrs').then(function (resp) { + app.attrs = resp.data + }).catch(function (err) { + console.error(err) + }) + }, methods: { exit: function () { - ajax( - '/api/exit', - function () {}, - function (msg) { - var search_location = app.metadata.install_path.length > 0 ? app.metadata.install_path - : 'the location where this installer is' + axios.get('/api/attrs').catch(function (msg) { + var searchLocation = app.metadata.install_path.length > 0 ? app.metadata.install_path + : 'the location where this installer is' - app.$router.replace({ name: 'showerr', - params: { msg: msg + - '\n\nPlease upload the log file (in ' + search_location + ') to ' + + app.$router.replace({ name: 'showerr', + params: { msg: msg + + '\n\nPlease upload the log file (in ' + searchLocation + ') to ' + 'the ' + app.attrs.name + ' team' - } }) - } - ) + } }) + }) }, ajax: ajax, - stream_ajax: stream_ajax + stream_ajax: streamAjax } }).$mount('#app') diff --git a/ui/yarn.lock b/ui/yarn.lock index a3d11a3..207190f 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -1483,6 +1483,14 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== +axios@^0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" + integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ== + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + babel-eslint@^10.0.3: version "10.0.3" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a" @@ -2631,6 +2639,13 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: dependencies: ms "2.0.0" +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -3622,6 +3637,13 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + follow-redirects@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f" @@ -4402,6 +4424,11 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-buffer@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"