diff --git a/src/components/quickConnectSettings/quickConnectSettings.js b/src/components/quickConnectSettings/quickConnectSettings.js index 35f051a121..a62cfc2298 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 22f4781b7d..9d08bb6b48 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 d0446de099..aa5c8cc2d2 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 80543a0b58..2d6f4b15c8 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 b46020794e..b4442ee0f9 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",