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

@ -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);