From ee26556ddfcd1c78c9b96d2f8a1ef7ec0cfbe835 Mon Sep 17 00:00:00 2001 From: Sambhav Saggi <17993169+9p4@users.noreply.github.com> Date: Fri, 18 Feb 2022 14:29:17 -0500 Subject: [PATCH] Fix #7 --- SSO-Auth/WebResponse.cs | 79 ++++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 37 deletions(-) diff --git a/SSO-Auth/WebResponse.cs b/SSO-Auth/WebResponse.cs index 5a8f5d8..fcc0c76 100644 --- a/SSO-Auth/WebResponse.cs +++ b/SSO-Auth/WebResponse.cs @@ -393,6 +393,10 @@ function getDeviceName() { return deviceName; } +const sleep = (milliseconds) => { + return new Promise(resolve => setTimeout(resolve, milliseconds)) +} + "; public static string Generator(string data, string provider, string baseUrl, string mode) @@ -400,44 +404,45 @@ function getDeviceName() { return Base + @" async function main() { var data = '" + data + @"'; - if (localStorage.getItem(""_deviceId2"") == null || localStorage.getItem(""jellyfin_credentials"") == null) { + while (localStorage.getItem(""_deviceId2"") == null || + localStorage.getItem(""jellyfin_credentials"") == null || + JSON.parse(localStorage.getItem(""jellyfin_credentials""))['Servers'][0]['Id'] == null) { // If localStorage isn't initialized yet, try again. - setTimeout(main, 100); - } else { - var deviceId = localStorage.getItem(""_deviceId2""); - var appName = ""Jellyfin Web""; - var appVersion = ""10.8.0""; - var deviceName = getDeviceName(); - var provider = '" + provider + @"'; - - var request = {deviceId, appName, appVersion, deviceName, data, provider: '" + provider + @"'}; - - var url = '" + baseUrl + "/sso/" + mode + @"/Auth'; - - let response = await new Promise(resolve => { - var xhr = new XMLHttpRequest(); - xhr.open('POST', url, true); - xhr.setRequestHeader('Content-Type', 'application/json'); - xhr.setRequestHeader('Accept', 'application/json'); - xhr.onload = function(e) { - resolve(xhr.response); - }; - xhr.onerror = function () { - resolve(undefined); - }; - xhr.send(JSON.stringify(request)); - }) - var responseJson = JSON.parse(response); - var userId = 'user-' + responseJson['User']['Id'] + '-' + responseJson['User']['ServerId']; - responseJson['User']['EnableAutoLogin'] = true; - localStorage.setItem(userId, JSON.stringify(responseJson['User'])); - var jfCreds = JSON.parse(localStorage.getItem('jellyfin_credentials')); - jfCreds['Servers'][0]['AccessToken'] = responseJson['AccessToken']; - jfCreds['Servers'][0]['UserId'] = responseJson['User']['Id']; - localStorage.setItem('jellyfin_credentials', JSON.stringify(jfCreds)); - localStorage.setItem('enableAutoLogin', 'true'); - window.location.replace('" + baseUrl + @"'); + await sleep(100); } + var deviceId = localStorage.getItem(""_deviceId2""); + var appName = ""Jellyfin Web""; + var appVersion = ""10.8.0""; + var deviceName = getDeviceName(); + var provider = '" + provider + @"'; + + var request = {deviceId, appName, appVersion, deviceName, data, provider: '" + provider + @"'}; + + var url = '" + baseUrl + "/sso/" + mode + @"/Auth'; + + let response = await new Promise(resolve => { + var xhr = new XMLHttpRequest(); + xhr.open('POST', url, true); + xhr.setRequestHeader('Content-Type', 'application/json'); + xhr.setRequestHeader('Accept', 'application/json'); + xhr.onload = function(e) { + resolve(xhr.response); + }; + xhr.onerror = function () { + resolve(undefined); + }; + xhr.send(JSON.stringify(request)); + }) + var responseJson = JSON.parse(response); + var userId = 'user-' + responseJson['User']['Id'] + '-' + responseJson['User']['ServerId']; + responseJson['User']['EnableAutoLogin'] = true; + localStorage.setItem(userId, JSON.stringify(responseJson['User'])); + var jfCreds = JSON.parse(localStorage.getItem('jellyfin_credentials')); + jfCreds['Servers'][0]['AccessToken'] = responseJson['AccessToken']; + jfCreds['Servers'][0]['UserId'] = responseJson['User']['Id']; + localStorage.setItem('jellyfin_credentials', JSON.stringify(jfCreds)); + localStorage.setItem('enableAutoLogin', 'true'); + window.location.replace('" + baseUrl + @"'); } document.addEventListener('DOMContentLoaded', function () { @@ -445,6 +450,6 @@ document.addEventListener('DOMContentLoaded', function () { }); // https://stackoverflow.com/a/25435165 -"; +"; } }