';
html += '
' + current.Code + '
';
@@ -57,7 +57,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
};
QuickConnectSettings.prototype.activate = function() {
- var url = ApiClient.getUrl("/QuickConnect/Activate");
+ let url = ApiClient.getUrl("/QuickConnect/Activate");
ApiClient.ajax({
type: "POST",
url: url,
diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js
index 86e8874e7..8b0bcdd28 100644
--- a/src/controllers/auth/login.js
+++ b/src/controllers/auth/login.js
@@ -151,10 +151,10 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
}
function loginQuickConnect() {
- var apiClient = getApiClient();
- var friendlyName = navigator.userAgent;
+ let apiClient = getApiClient();
+ let friendlyName = navigator.userAgent;
- var url = apiClient.getUrl("/QuickConnect/Initiate?FriendlyName=" + friendlyName);
+ let url = apiClient.getUrl("/QuickConnect/Initiate?FriendlyName=" + friendlyName);
apiClient.getJSON(url)
.then(json => {
if (!json.Secret || !json.Code) {
@@ -173,15 +173,15 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
loading.show();
- var interval = setInterval(async function() {
+ let interval = setInterval(async function() {
try {
let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret);
let data = await apiClient.getJSON(connectUrl);
if (data.Authenticated) {
let result = await apiClient.quickConnect(data.Authentication);
- var user = result.User;
- var serverId = getParameterByName("serverid");
- var newUrl = "home.html";
+ let user = result.User;
+ let serverId = getParameterByName("serverid");
+ let newUrl = "home.html";
if (user.Policy.IsAdministrator && !serverId) {
newUrl = "dashboard.html";
diff --git a/src/controllers/quickconnect.js b/src/controllers/quickconnect.js
index 3432e7923..93b74a1b5 100644
--- a/src/controllers/quickconnect.js
+++ b/src/controllers/quickconnect.js
@@ -1,9 +1,9 @@
define(["jQuery", "loading", "fnchecked"], function ($, loading) {
"use strict";
- var page;
+ let page;
function loadPage(status) {
- var available = status === "Available" || status === "Active";
+ let available = status === "Available" || status === "Active";
page.querySelector("#quickConnectStatus").textContent = status.toLocaleLowerCase();
page.querySelector("#chkQuickConnectAvailable").checked = available;
@@ -14,9 +14,9 @@ define(["jQuery", "loading", "fnchecked"], function ($, loading) {
function onSubmit() {
loading.show();
- var newStatus = page.querySelector("#chkQuickConnectAvailable").checked ? "Available" : "Unavailable";
+ let newStatus = page.querySelector("#chkQuickConnectAvailable").checked ? "Available" : "Unavailable";
- var url = ApiClient.getUrl("/QuickConnect/Available");
+ let url = ApiClient.getUrl("/QuickConnect/Available");
ApiClient.ajax({
type: "POST",
@@ -41,7 +41,7 @@ define(["jQuery", "loading", "fnchecked"], function ($, loading) {
}
function updatePage() {
- var promise1 = ApiClient.getQuickConnect("Status");
+ let promise1 = ApiClient.getQuickConnect("Status");
Promise.all([promise1]).then((responses) => {
loadPage(responses[0]);
return true;
diff --git a/src/controllers/user/quickconnect.js b/src/controllers/user/quickconnect.js
index 035aef8f2..bee0c1b81 100644
--- a/src/controllers/user/quickconnect.js
+++ b/src/controllers/user/quickconnect.js
@@ -2,7 +2,7 @@ define(["quickConnectSettings", "dom", "globalize", "loading", "userSettings", "
"use strict";
return function (view) {
- var quickConnectSettingsInstance = null;
+ let quickConnectSettingsInstance = null;
view.addEventListener("viewshow", function () {
quickConnectSettingsInstance = new QuickConnectSettings({
From 8655de4469c3aade0e1f949169c8f536a43e210b Mon Sep 17 00:00:00 2001
From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com>
Date: Fri, 1 May 2020 13:49:06 -0500
Subject: [PATCH 09/16] Rename to camel case
---
.../quickConnectSettings.js} | 0
src/controllers/{quickconnect.js => quickConnect.js} | 0
src/controllers/user/{quickconnect.js => quickConnect.js} | 0
...referencesquickconnect.html => myPreferencesQuickConnect.html} | 0
src/{quickconnect.html => quickConnect.html} | 0
5 files changed, 0 insertions(+), 0 deletions(-)
rename src/components/{quickconnectsettings/quickconnectsettings.js => quickConnectSettings/quickConnectSettings.js} (100%)
rename src/controllers/{quickconnect.js => quickConnect.js} (100%)
rename src/controllers/user/{quickconnect.js => quickConnect.js} (100%)
rename src/{mypreferencesquickconnect.html => myPreferencesQuickConnect.html} (100%)
rename src/{quickconnect.html => quickConnect.html} (100%)
diff --git a/src/components/quickconnectsettings/quickconnectsettings.js b/src/components/quickConnectSettings/quickConnectSettings.js
similarity index 100%
rename from src/components/quickconnectsettings/quickconnectsettings.js
rename to src/components/quickConnectSettings/quickConnectSettings.js
diff --git a/src/controllers/quickconnect.js b/src/controllers/quickConnect.js
similarity index 100%
rename from src/controllers/quickconnect.js
rename to src/controllers/quickConnect.js
diff --git a/src/controllers/user/quickconnect.js b/src/controllers/user/quickConnect.js
similarity index 100%
rename from src/controllers/user/quickconnect.js
rename to src/controllers/user/quickConnect.js
diff --git a/src/mypreferencesquickconnect.html b/src/myPreferencesQuickConnect.html
similarity index 100%
rename from src/mypreferencesquickconnect.html
rename to src/myPreferencesQuickConnect.html
diff --git a/src/quickconnect.html b/src/quickConnect.html
similarity index 100%
rename from src/quickconnect.html
rename to src/quickConnect.html
From d8cfe064e60379033fdf61a963efbc27296130af Mon Sep 17 00:00:00 2001
From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com>
Date: Fri, 1 May 2020 14:18:04 -0500
Subject: [PATCH 10/16] Changed code to camel case
---
src/controllers/user/menu.js | 2 +-
src/scripts/librarymenu.js | 2 +-
src/scripts/routes.js | 8 ++++----
src/scripts/site.js | 2 +-
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js
index f5d05c5be..9482b26cb 100644
--- a/src/controllers/user/menu.js
+++ b/src/controllers/user/menu.js
@@ -24,7 +24,7 @@ define(["apphost", "connectionManager", "layoutManager", "listViewStyle", "emby-
page.querySelector(".lnkHomePreferences").setAttribute("href", "mypreferenceshome.html?userId=" + userId);
page.querySelector(".lnkPlaybackPreferences").setAttribute("href", "mypreferencesplayback.html?userId=" + userId);
page.querySelector(".lnkSubtitlePreferences").setAttribute("href", "mypreferencessubtitles.html?userId=" + userId);
- page.querySelector(".lnkQuickConnectPreferences").setAttribute("href", "mypreferencesquickconnect.html?userId=" + userId);
+ page.querySelector(".lnkQuickConnectPreferences").setAttribute("href", "myPreferencesQuickConnect.html?userId=" + userId);
if (window.NativeShell && window.NativeShell.AppHost.supports("clientsettings")) {
page.querySelector(".clientSettings").classList.remove("hide");
diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js
index e3ef65f22..d123395ca 100644
--- a/src/scripts/librarymenu.js
+++ b/src/scripts/librarymenu.js
@@ -352,7 +352,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
});
links.push({
name: globalize.translate("QuickConnect"),
- href: "quickconnect.html",
+ href: "quickConnect.html",
pageIds: ["quickConnectPage", "quickConnectPage"],
icon: "tap_and_play"
});
diff --git a/src/scripts/routes.js b/src/scripts/routes.js
index 1520e9663..f0806f56e 100644
--- a/src/scripts/routes.js
+++ b/src/scripts/routes.js
@@ -73,10 +73,10 @@ define([
controller: "user/subtitles"
});
defineRoute({
- path: "/mypreferencesquickconnect.html",
+ path: "/myPreferencesQuickConnect.html",
autoFocus: false,
transition: "fade",
- controller: "user/quickconnect"
+ controller: "user/quickConnect"
});
defineRoute({
@@ -110,10 +110,10 @@ define([
controller: "device"
});
defineRoute({
- path: "/quickconnect.html",
+ path: "/quickConnect.html",
autoFocus: false,
roles: "admin",
- controller: "quickconnect"
+ controller: "quickConnect"
});
defineRoute({
path: "/dlnaprofile.html",
diff --git a/src/scripts/site.js b/src/scripts/site.js
index 3b8abf2bf..ca8a828b0 100644
--- a/src/scripts/site.js
+++ b/src/scripts/site.js
@@ -829,7 +829,7 @@ var AppInfo = {};
define("displaySettings", [componentsPath + "/displaysettings/displaysettings"], returnFirstDependency);
define("playbackSettings", [componentsPath + "/playbacksettings/playbacksettings"], returnFirstDependency);
define("homescreenSettings", [componentsPath + "/homescreensettings/homescreensettings"], returnFirstDependency);
- define("quickConnectSettings", [componentsPath + "/quickconnectsettings/quickconnectsettings"], returnFirstDependency);
+ define("quickConnectSettings", [componentsPath + "/quickConnectSettings/quickConnectSettings"], returnFirstDependency);
define("playbackManager", [componentsPath + "/playback/playbackmanager"], getPlaybackManager);
define("layoutManager", [componentsPath + "/layoutManager", "apphost"], getLayoutManager);
define("homeSections", [componentsPath + "/homesections/homesections"], returnFirstDependency);
From 2655b4dca3da200f9dc720f37b4d6e7f32b4d839 Mon Sep 17 00:00:00 2001
From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com>
Date: Mon, 4 May 2020 17:23:57 -0500
Subject: [PATCH 11/16] Migrate API changes to apiclient repo
---
src/libraries/apiclient/apiclientcore.js | 25 ------------------------
1 file changed, 25 deletions(-)
diff --git a/src/libraries/apiclient/apiclientcore.js b/src/libraries/apiclient/apiclientcore.js
index e1892505f..557a4e103 100644
--- a/src/libraries/apiclient/apiclientcore.js
+++ b/src/libraries/apiclient/apiclientcore.js
@@ -356,31 +356,6 @@ define(["events", "appStorage"], function(events, appStorage) {
instance.onAuthenticated ? instance.onAuthenticated(instance, result).then(afterOnAuthenticated) : afterOnAuthenticated()
}, reject)
})
- }, ApiClient.prototype.quickConnect = function (token) {
- if (!token) return Promise.reject();
- var url = this.getUrl("Users/AuthenticateWithQuickConnect");
- var instance = this;
- return new Promise(function(resolve, reject) {
- var postData = {
- Token: token
- };
- instance.ajax({
- type: "POST",
- url: url,
- data: JSON.stringify(postData),
- dataType: "json",
- contentType: "application/json"
- }).then(function(result) {
- var afterOnAuthenticated = function() {
- redetectBitrate(instance);
- return resolve(result);
- };
- instance.onAuthenticated ? instance.onAuthenticated(instance, result).then(afterOnAuthenticated) : afterOnAuthenticated()
- }, reject)
- })
- }, ApiClient.prototype.getQuickConnect = function(verb) {
- var url = this.getUrl("/QuickConnect/" + verb);
- return this.getJSON(url);
}, ApiClient.prototype.ensureWebSocket = function() {
if (!this.isWebSocketOpenOrConnecting() && this.isWebSocketSupported()) try {
this.openWebSocket()
From ae5fa9d304d5388fcdbc91ee7b9233c4d5141c93 Mon Sep 17 00:00:00 2001
From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com>
Date: Sun, 26 Jul 2020 23:57:28 -0500
Subject: [PATCH 12/16] Migrate to ES6
---
package.json | 3 +
.../quickConnectSettings.js | 115 +++++-------------
src/controllers/dashboard/quickconnect.js | 62 ++++++++++
src/controllers/quickConnect.js | 61 ----------
src/controllers/session/login/index.js | 17 +--
src/controllers/user/menu/index.js | 2 +-
src/controllers/user/quickConnect.js | 53 --------
src/controllers/user/quickConnect/index.html | 17 +++
src/controllers/user/quickConnect/index.js | 78 ++++++++++++
src/myPreferencesQuickConnect.html | 11 --
src/{quickConnect.html => quickconnect.html} | 8 +-
src/scripts/routes.js | 9 +-
src/strings/en-us.json | 11 +-
13 files changed, 220 insertions(+), 227 deletions(-)
create mode 100644 src/controllers/dashboard/quickconnect.js
delete mode 100644 src/controllers/quickConnect.js
delete mode 100644 src/controllers/user/quickConnect.js
create mode 100644 src/controllers/user/quickConnect/index.html
create mode 100644 src/controllers/user/quickConnect/index.js
delete mode 100644 src/myPreferencesQuickConnect.html
rename src/{quickConnect.html => quickconnect.html} (89%)
diff --git a/package.json b/package.json
index d1831b13e..88a361d8b 100644
--- a/package.json
+++ b/package.json
@@ -145,6 +145,7 @@
"src/components/playlisteditor/playlisteditor.js",
"src/components/playmenu.js",
"src/components/prompt/prompt.js",
+ "src/components/quickConnectSettings/quickConnectSettings.js",
"src/components/sanatizefilename.js",
"src/components/scrollManager.js",
"src/components/search/searchfields.js",
@@ -178,6 +179,7 @@
"src/controllers/dashboard/metadatanfo.js",
"src/controllers/dashboard/networking.js",
"src/controllers/dashboard/playback.js",
+ "src/controllers/dashboard/quickconnect.js",
"src/controllers/dashboard/plugins/repositories/index.js",
"src/controllers/dashboard/scheduledtasks/scheduledtask.js",
"src/controllers/dashboard/scheduledtasks/scheduledtasks.js",
@@ -204,6 +206,7 @@
"src/controllers/user/menu/index.js",
"src/controllers/user/playback/index.js",
"src/controllers/user/profile/index.js",
+ "src/controllers/user/quickConnect/index.js",
"src/controllers/user/subtitles/index.js",
"src/controllers/user/subtitles/index.js",
"src/controllers/wizard/finish/index.js",
diff --git a/src/components/quickConnectSettings/quickConnectSettings.js b/src/components/quickConnectSettings/quickConnectSettings.js
index 45bfe815c..35f051a12 100644
--- a/src/components/quickConnectSettings/quickConnectSettings.js
+++ b/src/components/quickConnectSettings/quickConnectSettings.js
@@ -1,115 +1,64 @@
-define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loading', 'connectionManager', 'listViewStyle', 'emby-select', 'emby-checkbox'], function (require, appHost, layoutManager, focusManager, globalize, loading, connectionManager) {
- "use strict";
+import globalize from 'globalize';
+import toast from 'toast';
- function authorizeRequest(event) {
- let lookup = event.data.lookup;
- let url = ApiClient.getUrl("/QuickConnect/Authorize");
+export class QuickConnectSettings {
+ constructor() { }
+
+ authorize(code) {
+ let url = ApiClient.getUrl('/QuickConnect/Authorize');
ApiClient.ajax({
- type: "POST",
+ type: 'POST',
url: url,
data: {
- "Lookup": lookup
+ 'Code': code
}
- }, true);
-
- require(["toast"], function (toast) {
- toast("Request authorized");
+ }, true).then(() => {
+ require(['toast'], function (toast) {
+ toast(globalize.translate('QuickConnectAuthorizeSuccess'));
+ });
+ }).catch(() => {
+ require(['toast'], function (toast) {
+ toast(globalize.translate('QuickConnectAuthorizeFail'));
+ });
});
// prevent bubbling
return false;
}
- QuickConnectSettings.prototype.list = function(argPage) {
- ApiClient.getJSON("/QuickConnect/List").then(json => {
- let found = false;
- let elem = argPage.querySelector('#quickConnectIncoming');
- elem.innerText = globalize.translate('QuickConnectNoPending');
-
- for (let i = 0; i < json.length; i++) {
- if (!found) {
- elem.innerHTML = "";
- found = true;
- }
-
- let current = json[i];
-
- let html = '
';
- elem.innerHTML += html;
-
- $("#qc" + current.Lookup).click({ lookup: current.Lookup }, authorizeRequest);
- $("#div" + current.Lookup).click({ lookup: current.Lookup }, authorizeRequest);
- }
-
- return true;
- }).catch((e) => {
- console.error("Unable to get quick connect login requests. error:", e);
- });
- };
-
- QuickConnectSettings.prototype.activate = function() {
- let url = ApiClient.getUrl("/QuickConnect/Activate");
- ApiClient.ajax({
- type: "POST",
+ activate() {
+ let url = ApiClient.getUrl('/QuickConnect/Activate');
+ return ApiClient.ajax({
+ type: 'POST',
url: url,
- contentType: "application/json",
- dataType: "json"
+ contentType: 'application/json',
+ dataType: 'json'
}).then((json) => {
let message = json.Error;
- if (message && message !== "") {
- console.error("Error activating quick connect. Error: ", json.Error);
+ if (message && message !== '') {
+ console.error('Error activating quick connect. Error: ', json.Error);
Dashboard.alert({
- title: "Unable to activate quick connect",
+ title: 'Unable to activate quick connect',
message: message
});
return false;
}
- require(["toast"], function (toast) {
- toast(globalize.translate("QuickConnectActivationSuccessful"));
- });
+ toast(globalize.translate('QuickConnectActivationSuccessful'));
return true;
}).catch((e) => {
- console.error("Error activating quick connect. Error:", e);
+ console.error('Error activating quick connect. Error:', e);
throw e;
});
- };
-
- function QuickConnectSettings(options) {
- this.options = options;
}
- QuickConnectSettings.prototype.loadData = function () {
- this.options.interval = setInterval(this.list, 5000, this.options.page);
- this.list(this.options.page);
- };
-
- QuickConnectSettings.prototype.submit = function () {
+ submit() {
return false;
- };
+ }
+}
- QuickConnectSettings.prototype.destroy = function () {
- console.debug("clearing refresh interval", this.options.interval);
- clearInterval(this.options.interval);
- this.options = null;
- };
-
- QuickConnectSettings.prototype.interval = function (interval) {
- this.options.interval = interval;
- };
-
- return QuickConnectSettings;
-});
+export default QuickConnectSettings;
diff --git a/src/controllers/dashboard/quickconnect.js b/src/controllers/dashboard/quickconnect.js
new file mode 100644
index 000000000..22f4781b7
--- /dev/null
+++ b/src/controllers/dashboard/quickconnect.js
@@ -0,0 +1,62 @@
+import loading from 'loading';
+
+/* eslint-disable indent */
+
+ let page;
+ export default function(view) {
+ view.addEventListener('viewshow', function () {
+ page = this;
+ loading.show();
+ page.querySelector('#btnQuickConnectSubmit').onclick = onSubmit;
+ updatePage();
+ });
+ }
+
+ function loadPage(status) {
+ let available = status === 'Available' || status === 'Active';
+
+ page.querySelector('#quickConnectStatus').textContent = status.toLocaleLowerCase();
+ page.querySelector('#chkQuickConnectAvailable').checked = available;
+
+ loading.hide();
+ }
+
+ function onSubmit() {
+ loading.show();
+
+ let newStatus = page.querySelector('#chkQuickConnectAvailable').checked ? 'Available' : 'Unavailable';
+
+ let url = ApiClient.getUrl('/QuickConnect/Available');
+
+ ApiClient.ajax({
+ type: 'POST',
+ data: {
+ 'Status': newStatus
+ },
+ url: url
+ }, true).then(() => {
+ require(['toast'], function (toast) {
+ toast('Settings saved');
+ });
+
+ setTimeout(updatePage, 500);
+
+ return true;
+ }).catch((e) => {
+ console.error('Unable to set quick connect status. error:', e);
+ });
+
+ loading.hide();
+ return false;
+ }
+
+ function updatePage() {
+ ApiClient.getQuickConnect('Status').then((response) => {
+ loadPage(response);
+ return true;
+ }).catch((e) => {
+ console.error('Unable to get quick connect status. error:', e);
+ });
+ }
+
+/* eslint-enable indent */
diff --git a/src/controllers/quickConnect.js b/src/controllers/quickConnect.js
deleted file mode 100644
index 93b74a1b5..000000000
--- a/src/controllers/quickConnect.js
+++ /dev/null
@@ -1,61 +0,0 @@
-define(["jQuery", "loading", "fnchecked"], function ($, loading) {
- "use strict";
-
- let page;
- function loadPage(status) {
- let available = status === "Available" || status === "Active";
-
- page.querySelector("#quickConnectStatus").textContent = status.toLocaleLowerCase();
- page.querySelector("#chkQuickConnectAvailable").checked = available;
-
- loading.hide();
- }
-
- function onSubmit() {
- loading.show();
-
- let newStatus = page.querySelector("#chkQuickConnectAvailable").checked ? "Available" : "Unavailable";
-
- let url = ApiClient.getUrl("/QuickConnect/Available");
-
- ApiClient.ajax({
- type: "POST",
- data: {
- "Status": newStatus
- },
- url: url
- }, true).then(() => {
- require(["toast"], function (toast) {
- toast("Settings saved");
- });
-
- setTimeout(updatePage, 500);
-
- return true;
- }).catch((e) => {
- console.error("Unable to set quick connect status. error:", e);
- });
-
- loading.hide();
- return false;
- }
-
- function updatePage() {
- let promise1 = ApiClient.getQuickConnect("Status");
- Promise.all([promise1]).then((responses) => {
- loadPage(responses[0]);
- return true;
- }).catch((e) => {
- console.error("Unable to get quick connect status. error:", e);
- });
- }
-
- $(document).on("pageshow", "#quickConnectPage", function () {
- loading.show();
- page = this;
-
- page.querySelector("#btnQuickConnectSubmit").onclick = onSubmit;
-
- updatePage();
- });
-});
diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js
index cdccdd5fb..b1fdf1bc5 100644
--- a/src/controllers/session/login/index.js
+++ b/src/controllers/session/login/index.js
@@ -163,11 +163,7 @@ import 'emby-checkbox';
apiClient.getJSON(url)
.then(json => {
if (!json.Secret || !json.Code) {
- Dashboard.alert({
- message: json.Error,
- title: 'Error'
- });
-
+ console.error('Malformed quick connect response', json);
return false;
}
@@ -215,10 +211,17 @@ import 'emby-checkbox';
return true;
}).catch((e) => {
- console.error('Unable to initiate quick connect login request. Error:', e);
+ Dashboard.alert({
+ message: Globalize.translate('QuickConnectNotActive'),
+ title: 'Error'
+ });
+
+ console.error('Quick connect error: ', e);
+
+ return false;
});
}
-
+
view.querySelector('#divUsers').addEventListener('click', function (e) {
const card = dom.parentWithClass(e.target, 'card');
const cardContent = card ? card.querySelector('.cardContent') : null;
diff --git a/src/controllers/user/menu/index.js b/src/controllers/user/menu/index.js
index 73e7012f1..6d0f5f802 100644
--- a/src/controllers/user/menu/index.js
+++ b/src/controllers/user/menu/index.js
@@ -27,7 +27,7 @@ export default function (view, params) {
page.querySelector('.lnkHomePreferences').setAttribute('href', 'mypreferenceshome.html?userId=' + userId);
page.querySelector('.lnkPlaybackPreferences').setAttribute('href', 'mypreferencesplayback.html?userId=' + userId);
page.querySelector('.lnkSubtitlePreferences').setAttribute('href', 'mypreferencessubtitles.html?userId=' + userId);
- page.querySelector('.lnkQuickConnectPreferences').setAttribute('href', 'myPreferencesQuickConnect.html?userId=' + userId);
+ page.querySelector('.lnkQuickConnectPreferences').setAttribute('href', 'mypreferencesquickconnect.html');
if (window.NativeShell && window.NativeShell.AppHost.supports('clientsettings')) {
page.querySelector('.clientSettings').classList.remove('hide');
diff --git a/src/controllers/user/quickConnect.js b/src/controllers/user/quickConnect.js
deleted file mode 100644
index bee0c1b81..000000000
--- a/src/controllers/user/quickConnect.js
+++ /dev/null
@@ -1,53 +0,0 @@
-define(["quickConnectSettings", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (QuickConnectSettings, dom, globalize, loading, userSettings, autoFocuser) {
- "use strict";
-
- return function (view) {
- let quickConnectSettingsInstance = null;
-
- view.addEventListener("viewshow", function () {
- quickConnectSettingsInstance = new QuickConnectSettings({
- page: view,
- interval: 0
- });
-
- view.querySelector("#btnQuickConnectActivate").addEventListener("click", () => {
- quickConnectSettingsInstance.activate(quickConnectSettingsInstance);
- });
-
- quickConnectSettingsInstance.loadData();
-
- ApiClient.getQuickConnect("Status").then((status) => {
- let btn = view.querySelector("#btnQuickConnectActivate");
-
- if (status === "Unavailable") {
- btn.textContent = globalize.translate("QuickConnectNotAvailable");
- btn.disabled = true;
- return false;
- } else if (status === "Available") {
- return false;
- }
-
- btn.style.display = "none";
- return true;
- }).catch((e) => {
- throw e;
- });
- });
- view.addEventListener("viewbeforehide", function () {
- if (quickConnectSettingsInstance) {
- quickConnectSettingsInstance.submit();
- }
- onDestroy();
- });
- view.addEventListener("viewdestroy", function () {
- onDestroy();
- });
-
- function onDestroy() {
- if (quickConnectSettingsInstance) {
- quickConnectSettingsInstance.destroy();
- quickConnectSettingsInstance = null;
- }
- }
- };
-});
diff --git a/src/controllers/user/quickConnect/index.html b/src/controllers/user/quickConnect/index.html
new file mode 100644
index 000000000..5f698a4a6
--- /dev/null
+++ b/src/controllers/user/quickConnect/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/src/controllers/user/quickConnect/index.js b/src/controllers/user/quickConnect/index.js
new file mode 100644
index 000000000..80543a0b5
--- /dev/null
+++ b/src/controllers/user/quickConnect/index.js
@@ -0,0 +1,78 @@
+import QuickConnectSettings from 'quickConnectSettings';
+import globalize from 'globalize';
+import toast from 'toast';
+
+export default function (view) {
+ let quickConnectSettingsInstance = null;
+
+ view.addEventListener('viewshow', function () {
+ let codeElement = view.querySelector('#txtQuickConnectCode');
+
+ quickConnectSettingsInstance = new QuickConnectSettings({
+ page: view,
+ interval: 0
+ });
+
+ view.querySelector('#btnQuickConnectActivate').addEventListener('click', () => {
+ quickConnectSettingsInstance.activate(quickConnectSettingsInstance).then(() => {
+ renderPage();
+ });
+ });
+
+ view.querySelector('#btnQuickConnectAuthorize').addEventListener('click', () => {
+ if (!codeElement.validity.valid) {
+ toast(globalize.translate('QuickConnectInvalidCode'));
+
+ return;
+ }
+
+ let code = codeElement.value;
+ quickConnectSettingsInstance.authorize(code);
+ });
+
+ renderPage();
+ });
+ view.addEventListener('viewbeforehide', function () {
+ if (quickConnectSettingsInstance) {
+ quickConnectSettingsInstance.submit();
+ }
+ onDestroy();
+ });
+ view.addEventListener('viewdestroy', function () {
+ onDestroy();
+ });
+
+ function onDestroy() {
+ if (quickConnectSettingsInstance) {
+ quickConnectSettingsInstance.destroy();
+ quickConnectSettingsInstance = null;
+ }
+ }
+
+ function renderPage(forceActive = false) {
+ ApiClient.getQuickConnect('Status').then((status) => {
+ let btn = view.querySelector('#btnQuickConnectActivate');
+ let container = view.querySelector('.quickConnectSettingsContainer');
+
+ // The activation button should only be visible when quick connect is unavailable (with the text replaced with an error) or when it is available (so it can be activated)
+ // The authorization container is only usable when quick connect is active, so it should be hidden otherwise
+ container.style.display = 'none';
+
+ if (status === 'Unavailable') {
+ btn.textContent = globalize.translate('QuickConnectNotAvailable');
+ btn.disabled = true;
+ btn.classList.remove('button-submit');
+ btn.classList.add('button');
+ } else if (status === 'Active' || forceActive) {
+ container.style.display = '';
+ btn.style.display = 'none';
+ }
+
+ return true;
+ }).catch((e) => {
+ throw e;
+ });
+ }
+
+ renderPage();
+}
diff --git a/src/myPreferencesQuickConnect.html b/src/myPreferencesQuickConnect.html
deleted file mode 100644
index 4f1f9feba..000000000
--- a/src/myPreferencesQuickConnect.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
${MessagePleaseWait}
-
-
-
diff --git a/src/quickConnect.html b/src/quickconnect.html
similarity index 89%
rename from src/quickConnect.html
rename to src/quickconnect.html
index dff74eb83..671bb88d7 100644
--- a/src/quickConnect.html
+++ b/src/quickconnect.html
@@ -1,6 +1,6 @@
-
-
+
\ No newline at end of file
+
diff --git a/src/scripts/routes.js b/src/scripts/routes.js
index 3472d6649..ec623a485 100644
--- a/src/scripts/routes.js
+++ b/src/scripts/routes.js
@@ -94,10 +94,11 @@ define([
controller: 'user/home/index'
});
defineRoute({
- path: '/myPreferencesQuickConnect.html',
+ alias: '/mypreferencesquickconnect.html',
+ path: '/controllers/user/quickConnect/index.html',
autoFocus: false,
transition: 'fade',
- controller: 'user/quickConnect'
+ controller: 'user/quickConnect/index'
});
defineRoute({
alias: '/mypreferencesplayback.html',
@@ -145,10 +146,10 @@ define([
controller: 'dashboard/devices/device'
});
defineRoute({
- path: '/quickConnect.html',
+ path: '/quickconnect.html',
autoFocus: false,
roles: 'admin',
- controller: "quickConnect"
+ controller: 'dashboard/quickconnect'
});
defineRoute({
path: '/dlnaprofile.html',
diff --git a/src/strings/en-us.json b/src/strings/en-us.json
index 57a025d8b..17e4662d2 100644
--- a/src/strings/en-us.json
+++ b/src/strings/en-us.json
@@ -48,7 +48,7 @@
"AuthProviderHelp": "Select an Authentication Provider to be used to authenticate this user's password.",
"Auto": "Auto",
"AutoBasedOnLanguageSetting": "Auto (based on language setting)",
- "Authorize": "authorize",
+ "Authorize": "Authorize",
"Backdrop": "Backdrop",
"Backdrops": "Backdrops",
"Banner": "Banner",
@@ -816,6 +816,7 @@
"LabelPublicHttpPortHelp": "The public port number that should be mapped to the local HTTP port.",
"LabelPublicHttpsPort": "Public HTTPS port number:",
"LabelPublicHttpsPortHelp": "The public port number that should be mapped to the local HTTPS port.",
+ "LabelQuickConnectCode": "Quick connect code:",
"LabelReadHowYouCanContribute": "Learn how you can contribute.",
"LabelReasonForTranscoding": "Reason for transcoding:",
"LabelRecord": "Record:",
@@ -1322,8 +1323,12 @@
"QuickConnect": "Quick Connect",
"QuickConnectActivationSuccessful": "Successfully activated",
"QuickConnectAuthorizeCode": "Authorize request {0} to continue",
- "QuickConnectNoPending": "No pending login requests",
- "QuickConnectNotAvailable": "Quick connect is not available on this server",
+ "QuickConnectAuthorizeSuccess": "Request authorized",
+ "QuickConnectAuthorizeFail": "Unknown quick connect code",
+ "QuickConnectDescription": "To sign in with quick connect, select the Quick Connect button on the device you are logging in from and enter the displayed code below.",
+ "QuickConnectInvalidCode": "Invalid quick connect code",
+ "QuickConnectNotAvailable": "Ask your server administrator to enable quick connect",
+ "QuickConnectNotActive": "Quick connect is not active on this server",
"Raised": "Raised",
"Rate": "Rate",
"RecentlyWatched": "Recently watched",
From 28928ead7cfb101f7b8d55fd21361e0bcfb0fa44 Mon Sep 17 00:00:00 2001
From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com>
Date: Thu, 3 Sep 2020 16:19:35 -0500
Subject: [PATCH 13/16] Modified to work with latest server code
---
.../quickConnectSettings.js | 39 ++------
src/controllers/dashboard/quickconnect.js | 5 +-
src/controllers/session/login/index.js | 93 ++++++++-----------
src/controllers/user/quickConnect/index.js | 2 -
src/strings/en-us.json | 1 +
5 files changed, 51 insertions(+), 89 deletions(-)
diff --git a/src/components/quickConnectSettings/quickConnectSettings.js b/src/components/quickConnectSettings/quickConnectSettings.js
index 35f051a12..a62cfc229 100644
--- a/src/components/quickConnectSettings/quickConnectSettings.js
+++ b/src/components/quickConnectSettings/quickConnectSettings.js
@@ -5,21 +5,14 @@ export class QuickConnectSettings {
constructor() { }
authorize(code) {
- let url = ApiClient.getUrl('/QuickConnect/Authorize');
+ let url = ApiClient.getUrl('/QuickConnect/Authorize?Code=' + code);
ApiClient.ajax({
type: 'POST',
- url: url,
- data: {
- 'Code': code
- }
+ url: url
}, true).then(() => {
- require(['toast'], function (toast) {
- toast(globalize.translate('QuickConnectAuthorizeSuccess'));
- });
+ toast(globalize.translate('QuickConnectAuthorizeSuccess'));
}).catch(() => {
- require(['toast'], function (toast) {
- toast(globalize.translate('QuickConnectAuthorizeFail'));
- });
+ toast(globalize.translate('QuickConnectAuthorizeFail'));
});
// prevent bubbling
@@ -30,28 +23,16 @@ export class QuickConnectSettings {
let url = ApiClient.getUrl('/QuickConnect/Activate');
return ApiClient.ajax({
type: 'POST',
- url: url,
- contentType: 'application/json',
- dataType: 'json'
- }).then((json) => {
- let message = json.Error;
-
- if (message && message !== '') {
- console.error('Error activating quick connect. Error: ', json.Error);
-
- Dashboard.alert({
- title: 'Unable to activate quick connect',
- message: message
- });
-
- return false;
- }
-
+ url: url
+ }).then(() => {
toast(globalize.translate('QuickConnectActivationSuccessful'));
-
return true;
}).catch((e) => {
console.error('Error activating quick connect. Error:', e);
+ Dashboard.alert({
+ title: globalize.translate('HeaderError'),
+ message: globalize.translate('DefaultErrorMessage')
+ });
throw e;
});
}
diff --git a/src/controllers/dashboard/quickconnect.js b/src/controllers/dashboard/quickconnect.js
index 22f4781b7..9d08bb6b4 100644
--- a/src/controllers/dashboard/quickconnect.js
+++ b/src/controllers/dashboard/quickconnect.js
@@ -26,13 +26,10 @@ import loading from 'loading';
let newStatus = page.querySelector('#chkQuickConnectAvailable').checked ? 'Available' : 'Unavailable';
- let url = ApiClient.getUrl('/QuickConnect/Available');
+ let url = ApiClient.getUrl('/QuickConnect/Available?Status=' + newStatus);
ApiClient.ajax({
type: 'POST',
- data: {
- 'Status': newStatus
- },
url: url
}, true).then(() => {
require(['toast'], function (toast) {
diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js
index d0446de09..aa5c8cc2d 100644
--- a/src/controllers/session/login/index.js
+++ b/src/controllers/session/login/index.js
@@ -154,71 +154,56 @@ import 'emby-checkbox';
});
}
+ // FIXME: Clicking ok on the code dialog redirects back to the homepage.
function loginQuickConnect() {
let apiClient = getApiClient();
- let friendlyName = navigator.userAgent;
- let url = apiClient.getUrl('/QuickConnect/Initiate?FriendlyName=' + friendlyName);
- apiClient.getJSON(url)
- .then(json => {
- if (!json.Secret || !json.Code) {
- console.error('Malformed quick connect response', json);
- return false;
- }
+ let url = apiClient.getUrl('/QuickConnect/Initiate');
+ apiClient.getJSON(url).then(function (json) {
+ if (!json.Secret || !json.Code) {
+ console.error('Malformed quick connect response', json);
+ return false;
+ }
- Dashboard.alert({
- message: Globalize.translate('QuickConnectAuthorizeCode', json.Code),
- title: Globalize.translate('QuickConnect')
- });
+ Dashboard.alert({
+ message: globalize.translate('QuickConnectAuthorizeCode', json.Code),
+ title: globalize.translate('QuickConnect')
+ });
- loading.show();
-
- let interval = setInterval(async function() {
- try {
- let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret);
- let data = await apiClient.getJSON(connectUrl);
- if (data.Authenticated) {
- let result = await apiClient.quickConnect(data.Authentication);
- let user = result.User;
- let serverId = getParameterByName('serverid');
- let newUrl = 'home.html';
-
- if (user.Policy.IsAdministrator && !serverId) {
- newUrl = 'dashboard.html';
- }
-
- loading.hide();
- Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient);
- Dashboard.navigate(newUrl);
- clearInterval(interval);
-
- return true;
- }
- } catch (e) {
- Dashboard.alert({
- message: 'Quick connect was deactivated before the login request could be approved',
- title: 'Unexpected error'
- });
-
- console.error('Unable to login with quick connect', e);
- clearInterval(interval);
- loading.hide();
+ let interval = setInterval(function() {
+ let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret);
+ apiClient.getJSON(connectUrl).then(async function(data) {
+ if (!data.Authenticated) {
+ return;
}
- return false;
- }, 5000);
+ clearInterval(interval);
- return true;
- }).catch((e) => {
- Dashboard.alert({
- message: Globalize.translate('QuickConnectNotActive'),
- title: 'Error'
+ let result = await apiClient.quickConnect(data.Authentication);
+ Dashboard.onServerChanged(result.User.Id, result.AccessToken, apiClient);
+ Dashboard.navigate('home.html');
+ }, function (e) {
+ clearInterval(interval);
+
+ Dashboard.alert({
+ message: globalize.translate('QuickConnectDeactivated'),
+ title: globalize.translate('HeaderError')
+ });
+
+ console.error('Unable to login with quick connect', e);
});
+ }, 5000);
- console.error('Quick connect error: ', e);
-
- return false;
+ return true;
+ }, function(e) {
+ Dashboard.alert({
+ message: globalize.translate('QuickConnectNotActive'),
+ title: globalize.translate('HeaderError')
});
+
+ console.error('Quick connect error: ', e);
+ return false;
+ });
}
view.querySelector('#divUsers').addEventListener('click', function (e) {
diff --git a/src/controllers/user/quickConnect/index.js b/src/controllers/user/quickConnect/index.js
index 80543a0b5..2d6f4b15c 100644
--- a/src/controllers/user/quickConnect/index.js
+++ b/src/controllers/user/quickConnect/index.js
@@ -73,6 +73,4 @@ export default function (view) {
throw e;
});
}
-
- renderPage();
}
diff --git a/src/strings/en-us.json b/src/strings/en-us.json
index b46020794..b4442ee0f 100644
--- a/src/strings/en-us.json
+++ b/src/strings/en-us.json
@@ -1156,6 +1156,7 @@
"QuickConnectAuthorizeCode": "Authorize request {0} to continue",
"QuickConnectAuthorizeSuccess": "Request authorized",
"QuickConnectAuthorizeFail": "Unknown quick connect code",
+ "QuickConnectDeactivated": "Quick connect was deactivated before the login request could be approved",
"QuickConnectDescription": "To sign in with quick connect, select the Quick Connect button on the device you are logging in from and enter the displayed code below.",
"QuickConnectInvalidCode": "Invalid quick connect code",
"QuickConnectNotAvailable": "Ask your server administrator to enable quick connect",
From 723472aca58a0cc4a4cfbbcbaea8267e83341c48 Mon Sep 17 00:00:00 2001
From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com>
Date: Thu, 3 Sep 2020 16:51:15 -0500
Subject: [PATCH 14/16] Complete modifications to work with latest server code
---
src/controllers/dashboard/quickconnect.js | 7 +-
src/controllers/session/login/index.js | 115 ++++++++++---------
src/controllers/user/quickConnect/index.html | 2 +-
src/controllers/user/quickConnect/index.js | 20 +---
src/quickconnect.html | 2 +-
src/strings/en-us.json | 2 +-
6 files changed, 71 insertions(+), 77 deletions(-)
diff --git a/src/controllers/dashboard/quickconnect.js b/src/controllers/dashboard/quickconnect.js
index 9d08bb6b4..012f7b7aa 100644
--- a/src/controllers/dashboard/quickconnect.js
+++ b/src/controllers/dashboard/quickconnect.js
@@ -1,4 +1,6 @@
import loading from 'loading';
+import toast from 'toast';
+import globalize from 'globalize';
/* eslint-disable indent */
@@ -32,10 +34,7 @@ import loading from 'loading';
type: 'POST',
url: url
}, true).then(() => {
- require(['toast'], function (toast) {
- toast('Settings saved');
- });
-
+ toast(globalize.translate('SettingsSaved'));
setTimeout(updatePage, 500);
return true;
diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js
index aa5c8cc2d..c49ed0aee 100644
--- a/src/controllers/session/login/index.js
+++ b/src/controllers/session/login/index.js
@@ -19,8 +19,7 @@ import 'emby-checkbox';
var user = result.User;
loading.hide();
- Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient);
- Dashboard.navigate('home.html');
+ onLoginSuccessful(user.Id, result.AccessToken, apiClient);
}, function (response) {
page.querySelector('#txtManualName').value = '';
page.querySelector('#txtManualPassword').value = '';
@@ -41,6 +40,60 @@ import 'emby-checkbox';
});
}
+ function authenticateQuickConnect(apiClient) {
+ let url = apiClient.getUrl('/QuickConnect/Initiate');
+ apiClient.getJSON(url).then(function (json) {
+ if (!json.Secret || !json.Code) {
+ console.error('Malformed quick connect response', json);
+ return false;
+ }
+
+ Dashboard.alert({
+ message: globalize.translate('QuickConnectAuthorizeCode', json.Code),
+ title: globalize.translate('QuickConnect')
+ });
+
+ let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret);
+
+ let interval = setInterval(function() {
+ apiClient.getJSON(connectUrl).then(async function(data) {
+ if (!data.Authenticated) {
+ return;
+ }
+
+ clearInterval(interval);
+
+ let result = await apiClient.quickConnect(data.Authentication);
+ onLoginSuccessful(result.User.Id, result.AccessToken, apiClient);
+ }, function (e) {
+ clearInterval(interval);
+
+ Dashboard.alert({
+ message: globalize.translate('QuickConnectDeactivated'),
+ title: globalize.translate('HeaderError')
+ });
+
+ console.error('Unable to login with quick connect', e);
+ });
+ }, 5000, connectUrl);
+
+ return true;
+ }, function(e) {
+ Dashboard.alert({
+ message: globalize.translate('QuickConnectNotActive'),
+ title: globalize.translate('HeaderError')
+ });
+
+ console.error('Quick connect error: ', e);
+ return false;
+ });
+ }
+
+ function onLoginSuccessful(id, accessToken, apiClient) {
+ Dashboard.onServerChanged(id, accessToken, apiClient);
+ Dashboard.navigate('home.html');
+ }
+
function showManualForm(context, showCancel, focusPassword) {
context.querySelector('.chkRememberLogin').checked = appSettings.enableAutoLogin();
context.querySelector('.manualLoginForm').classList.remove('hide');
@@ -154,58 +207,6 @@ import 'emby-checkbox';
});
}
- // FIXME: Clicking ok on the code dialog redirects back to the homepage.
- function loginQuickConnect() {
- let apiClient = getApiClient();
-
- let url = apiClient.getUrl('/QuickConnect/Initiate');
- apiClient.getJSON(url).then(function (json) {
- if (!json.Secret || !json.Code) {
- console.error('Malformed quick connect response', json);
- return false;
- }
-
- Dashboard.alert({
- message: globalize.translate('QuickConnectAuthorizeCode', json.Code),
- title: globalize.translate('QuickConnect')
- });
-
- let interval = setInterval(function() {
- let connectUrl = apiClient.getUrl('/QuickConnect/Connect?Secret=' + json.Secret);
- apiClient.getJSON(connectUrl).then(async function(data) {
- if (!data.Authenticated) {
- return;
- }
-
- clearInterval(interval);
-
- let result = await apiClient.quickConnect(data.Authentication);
- Dashboard.onServerChanged(result.User.Id, result.AccessToken, apiClient);
- Dashboard.navigate('home.html');
- }, function (e) {
- clearInterval(interval);
-
- Dashboard.alert({
- message: globalize.translate('QuickConnectDeactivated'),
- title: globalize.translate('HeaderError')
- });
-
- console.error('Unable to login with quick connect', e);
- });
- }, 5000);
-
- return true;
- }, function(e) {
- Dashboard.alert({
- message: globalize.translate('QuickConnectNotActive'),
- title: globalize.translate('HeaderError')
- });
-
- console.error('Quick connect error: ', e);
- return false;
- });
- }
-
view.querySelector('#divUsers').addEventListener('click', function (e) {
const card = dom.parentWithClass(e.target, 'card');
const cardContent = card ? card.querySelector('.cardContent') : null;
@@ -239,7 +240,11 @@ import 'emby-checkbox';
Dashboard.navigate('forgotpassword.html');
});
view.querySelector('.btnCancel').addEventListener('click', showVisualForm);
- view.querySelector('.btnQuick').addEventListener('click', loginQuickConnect);
+ view.querySelector('.btnQuick').addEventListener('click', function () {
+ const apiClient = getApiClient();
+ authenticateQuickConnect(apiClient);
+ return false;
+ });
view.querySelector('.btnManual').addEventListener('click', function () {
view.querySelector('#txtManualName').value = '';
showManualForm(view, true);
diff --git a/src/controllers/user/quickConnect/index.html b/src/controllers/user/quickConnect/index.html
index 5f698a4a6..15df59ff1 100644
--- a/src/controllers/user/quickConnect/index.html
+++ b/src/controllers/user/quickConnect/index.html
@@ -1,4 +1,4 @@
-
+
diff --git a/src/controllers/user/quickConnect/index.js b/src/controllers/user/quickConnect/index.js
index 2d6f4b15c..9e8d1a3b3 100644
--- a/src/controllers/user/quickConnect/index.js
+++ b/src/controllers/user/quickConnect/index.js
@@ -8,10 +8,7 @@ export default function (view) {
view.addEventListener('viewshow', function () {
let codeElement = view.querySelector('#txtQuickConnectCode');
- quickConnectSettingsInstance = new QuickConnectSettings({
- page: view,
- interval: 0
- });
+ quickConnectSettingsInstance = new QuickConnectSettings();
view.querySelector('#btnQuickConnectActivate').addEventListener('click', () => {
quickConnectSettingsInstance.activate(quickConnectSettingsInstance).then(() => {
@@ -30,24 +27,17 @@ export default function (view) {
quickConnectSettingsInstance.authorize(code);
});
+ view.querySelector('.quickConnectSettingsContainer').addEventListener('submit', (e) => {
+ e.preventDefault();
+ });
+
renderPage();
});
view.addEventListener('viewbeforehide', function () {
if (quickConnectSettingsInstance) {
quickConnectSettingsInstance.submit();
}
- onDestroy();
});
- view.addEventListener('viewdestroy', function () {
- onDestroy();
- });
-
- function onDestroy() {
- if (quickConnectSettingsInstance) {
- quickConnectSettingsInstance.destroy();
- quickConnectSettingsInstance = null;
- }
- }
function renderPage(forceActive = false) {
ApiClient.getQuickConnect('Status').then((status) => {
diff --git a/src/quickconnect.html b/src/quickconnect.html
index 671bb88d7..b5b6d4899 100644
--- a/src/quickconnect.html
+++ b/src/quickconnect.html
@@ -17,7 +17,7 @@
diff --git a/src/strings/en-us.json b/src/strings/en-us.json
index b4442ee0f..df5b6a36c 100644
--- a/src/strings/en-us.json
+++ b/src/strings/en-us.json
@@ -1153,7 +1153,7 @@
"Quality": "Quality",
"QuickConnect": "Quick Connect",
"QuickConnectActivationSuccessful": "Successfully activated",
- "QuickConnectAuthorizeCode": "Authorize request {0} to continue",
+ "QuickConnectAuthorizeCode": "Enter code {0} to login",
"QuickConnectAuthorizeSuccess": "Request authorized",
"QuickConnectAuthorizeFail": "Unknown quick connect code",
"QuickConnectDeactivated": "Quick connect was deactivated before the login request could be approved",
From fa7d8bf4daf4fb2aba5a706219b77d68f3b5b83a Mon Sep 17 00:00:00 2001
From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com>
Date: Thu, 10 Sep 2020 15:04:06 -0500
Subject: [PATCH 15/16] Apply suggestions from code review
---
.../quickConnectSettings.js | 4 -
src/controllers/dashboard/quickconnect.js | 90 +++++++++----------
src/controllers/user/quickConnect/index.js | 5 --
3 files changed, 45 insertions(+), 54 deletions(-)
diff --git a/src/components/quickConnectSettings/quickConnectSettings.js b/src/components/quickConnectSettings/quickConnectSettings.js
index a62cfc229..e802f92ba 100644
--- a/src/components/quickConnectSettings/quickConnectSettings.js
+++ b/src/components/quickConnectSettings/quickConnectSettings.js
@@ -36,10 +36,6 @@ export class QuickConnectSettings {
throw e;
});
}
-
- submit() {
- return false;
- }
}
export default QuickConnectSettings;
diff --git a/src/controllers/dashboard/quickconnect.js b/src/controllers/dashboard/quickconnect.js
index 012f7b7aa..87c88d8a4 100644
--- a/src/controllers/dashboard/quickconnect.js
+++ b/src/controllers/dashboard/quickconnect.js
@@ -2,57 +2,57 @@ import loading from 'loading';
import toast from 'toast';
import globalize from 'globalize';
-/* eslint-disable indent */
+const unavailable = 'Unavailable';
+const available = 'Available';
+const active = 'Active';
+let page;
- let page;
- export default function(view) {
- view.addEventListener('viewshow', function () {
- page = this;
- loading.show();
- page.querySelector('#btnQuickConnectSubmit').onclick = onSubmit;
- updatePage();
- });
- }
-
- function loadPage(status) {
- let available = status === 'Available' || status === 'Active';
-
- page.querySelector('#quickConnectStatus').textContent = status.toLocaleLowerCase();
- page.querySelector('#chkQuickConnectAvailable').checked = available;
-
- loading.hide();
- }
-
- function onSubmit() {
+export default function(view) {
+ view.addEventListener('viewshow', function () {
+ page = this;
loading.show();
+ page.querySelector('#btnQuickConnectSubmit').onclick = onSubmit;
+ updatePage();
+ });
+}
- let newStatus = page.querySelector('#chkQuickConnectAvailable').checked ? 'Available' : 'Unavailable';
+function loadPage(status) {
+ let check = status === available || status === active;
- let url = ApiClient.getUrl('/QuickConnect/Available?Status=' + newStatus);
+ page.querySelector('#quickConnectStatus').textContent = status.toLocaleLowerCase();
+ page.querySelector('#chkQuickConnectAvailable').checked = check;
- ApiClient.ajax({
- type: 'POST',
- url: url
- }, true).then(() => {
- toast(globalize.translate('SettingsSaved'));
- setTimeout(updatePage, 500);
+ loading.hide();
+}
- return true;
- }).catch((e) => {
- console.error('Unable to set quick connect status. error:', e);
- });
+function onSubmit() {
+ loading.show();
- loading.hide();
- return false;
- }
+ let newStatus = page.querySelector('#chkQuickConnectAvailable').checked ? available : unavailable;
- function updatePage() {
- ApiClient.getQuickConnect('Status').then((response) => {
- loadPage(response);
- return true;
- }).catch((e) => {
- console.error('Unable to get quick connect status. error:', e);
- });
- }
+ let url = ApiClient.getUrl('/QuickConnect/Available?Status=' + newStatus);
-/* eslint-enable indent */
+ ApiClient.ajax({
+ type: 'POST',
+ url: url
+ }, true).then(() => {
+ toast(globalize.translate('SettingsSaved'));
+ setTimeout(updatePage, 500);
+
+ return true;
+ }).catch((e) => {
+ console.error('Unable to set quick connect status. error:', e);
+ });
+
+ loading.hide();
+ return false;
+}
+
+function updatePage() {
+ ApiClient.getQuickConnect('Status').then((response) => {
+ loadPage(response);
+ return true;
+ }).catch((e) => {
+ console.error('Unable to get quick connect status. error:', e);
+ });
+}
diff --git a/src/controllers/user/quickConnect/index.js b/src/controllers/user/quickConnect/index.js
index 9e8d1a3b3..00fc5488b 100644
--- a/src/controllers/user/quickConnect/index.js
+++ b/src/controllers/user/quickConnect/index.js
@@ -33,11 +33,6 @@ export default function (view) {
renderPage();
});
- view.addEventListener('viewbeforehide', function () {
- if (quickConnectSettingsInstance) {
- quickConnectSettingsInstance.submit();
- }
- });
function renderPage(forceActive = false) {
ApiClient.getQuickConnect('Status').then((status) => {
From 1ca4a9960559d43644e69f823e4c1b508fab7c3f Mon Sep 17 00:00:00 2001
From: dkanada
Date: Tue, 15 Sep 2020 15:03:06 +0900
Subject: [PATCH 16/16] minor style changes
---
src/controllers/session/login/index.html | 2 +-
src/quickconnect.html | 2 +-
src/scripts/libraryMenu.js | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/controllers/session/login/index.html b/src/controllers/session/login/index.html
index d22d903a1..8c6945616 100644
--- a/src/controllers/session/login/index.html
+++ b/src/controllers/session/login/index.html
@@ -43,7 +43,7 @@
${ButtonManualLogin}
-
- ${LabelCurrentStatus}
+
${LabelCurrentStatus}