1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Complete modifications to work with latest server code

This commit is contained in:
Matt Montgomery 2020-09-03 16:51:15 -05:00
parent 28928ead7c
commit 723472aca5
6 changed files with 71 additions and 77 deletions

View file

@ -1,4 +1,6 @@
import loading from 'loading'; import loading from 'loading';
import toast from 'toast';
import globalize from 'globalize';
/* eslint-disable indent */ /* eslint-disable indent */
@ -32,10 +34,7 @@ import loading from 'loading';
type: 'POST', type: 'POST',
url: url url: url
}, true).then(() => { }, true).then(() => {
require(['toast'], function (toast) { toast(globalize.translate('SettingsSaved'));
toast('Settings saved');
});
setTimeout(updatePage, 500); setTimeout(updatePage, 500);
return true; return true;

View file

@ -19,8 +19,7 @@ import 'emby-checkbox';
var user = result.User; var user = result.User;
loading.hide(); loading.hide();
Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient); onLoginSuccessful(user.Id, result.AccessToken, apiClient);
Dashboard.navigate('home.html');
}, function (response) { }, function (response) {
page.querySelector('#txtManualName').value = ''; page.querySelector('#txtManualName').value = '';
page.querySelector('#txtManualPassword').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) { function showManualForm(context, showCancel, focusPassword) {
context.querySelector('.chkRememberLogin').checked = appSettings.enableAutoLogin(); context.querySelector('.chkRememberLogin').checked = appSettings.enableAutoLogin();
context.querySelector('.manualLoginForm').classList.remove('hide'); 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) { view.querySelector('#divUsers').addEventListener('click', function (e) {
const card = dom.parentWithClass(e.target, 'card'); const card = dom.parentWithClass(e.target, 'card');
const cardContent = card ? card.querySelector('.cardContent') : null; const cardContent = card ? card.querySelector('.cardContent') : null;
@ -239,7 +240,11 @@ import 'emby-checkbox';
Dashboard.navigate('forgotpassword.html'); Dashboard.navigate('forgotpassword.html');
}); });
view.querySelector('.btnCancel').addEventListener('click', showVisualForm); 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('.btnManual').addEventListener('click', function () {
view.querySelector('#txtManualName').value = ''; view.querySelector('#txtManualName').value = '';
showManualForm(view, true); showManualForm(view, true);

View file

@ -1,4 +1,4 @@
<div id="quickConnectPreferencesPage" data-role="page" class="page libraryPage userPreferencesPage noSecondaryNavPage" data-title="${HeaderHome}" data-backbutton="true" style="margin: 0 auto; max-width: 54em"> <div id="quickConnectPreferencesPage" data-role="page" class="page libraryPage userPreferencesPage noSecondaryNavPage" data-title="${QuickConnect}" data-backbutton="true" style="margin: 0 auto; max-width: 54em">
<button is="emby-button" id="btnQuickConnectActivate" type="button" class="raised button-submit block"> <button is="emby-button" id="btnQuickConnectActivate" type="button" class="raised button-submit block">
<span>${ButtonActivate}</span> <span>${ButtonActivate}</span>
</button> </button>

View file

@ -8,10 +8,7 @@ export default function (view) {
view.addEventListener('viewshow', function () { view.addEventListener('viewshow', function () {
let codeElement = view.querySelector('#txtQuickConnectCode'); let codeElement = view.querySelector('#txtQuickConnectCode');
quickConnectSettingsInstance = new QuickConnectSettings({ quickConnectSettingsInstance = new QuickConnectSettings();
page: view,
interval: 0
});
view.querySelector('#btnQuickConnectActivate').addEventListener('click', () => { view.querySelector('#btnQuickConnectActivate').addEventListener('click', () => {
quickConnectSettingsInstance.activate(quickConnectSettingsInstance).then(() => { quickConnectSettingsInstance.activate(quickConnectSettingsInstance).then(() => {
@ -30,24 +27,17 @@ export default function (view) {
quickConnectSettingsInstance.authorize(code); quickConnectSettingsInstance.authorize(code);
}); });
view.querySelector('.quickConnectSettingsContainer').addEventListener('submit', (e) => {
e.preventDefault();
});
renderPage(); renderPage();
}); });
view.addEventListener('viewbeforehide', function () { view.addEventListener('viewbeforehide', function () {
if (quickConnectSettingsInstance) { if (quickConnectSettingsInstance) {
quickConnectSettingsInstance.submit(); quickConnectSettingsInstance.submit();
} }
onDestroy();
}); });
view.addEventListener('viewdestroy', function () {
onDestroy();
});
function onDestroy() {
if (quickConnectSettingsInstance) {
quickConnectSettingsInstance.destroy();
quickConnectSettingsInstance = null;
}
}
function renderPage(forceActive = false) { function renderPage(forceActive = false) {
ApiClient.getQuickConnect('Status').then((status) => { ApiClient.getQuickConnect('Status').then((status) => {

View file

@ -17,7 +17,7 @@
</div> </div>
<button is="emby-button" id="btnQuickConnectSubmit" type="submit" class="raised button-submit block"> <button is="emby-button" id="btnQuickConnectSubmit" type="submit" class="raised button-submit block">
<span>${ButtonSave}</span> <span>${Save}</span>
</button> </button>
</form> </form>
</div> </div>

View file

@ -1153,7 +1153,7 @@
"Quality": "Quality", "Quality": "Quality",
"QuickConnect": "Quick Connect", "QuickConnect": "Quick Connect",
"QuickConnectActivationSuccessful": "Successfully activated", "QuickConnectActivationSuccessful": "Successfully activated",
"QuickConnectAuthorizeCode": "Authorize request {0} to continue", "QuickConnectAuthorizeCode": "Enter code {0} to login",
"QuickConnectAuthorizeSuccess": "Request authorized", "QuickConnectAuthorizeSuccess": "Request authorized",
"QuickConnectAuthorizeFail": "Unknown quick connect code", "QuickConnectAuthorizeFail": "Unknown quick connect code",
"QuickConnectDeactivated": "Quick connect was deactivated before the login request could be approved", "QuickConnectDeactivated": "Quick connect was deactivated before the login request could be approved",