Cleaned up plugin conig html page and implemented episode and movie scrobble flags

This commit is contained in:
Alexander Rufenach
2021-06-02 19:53:05 -04:00
parent e69fe1d6c2
commit aea6ef254f
2 changed files with 50 additions and 20 deletions
@@ -24,21 +24,38 @@
class="raised block"><span>Create an account</span></button>
</div>
<div id="loggingIn" hidden>
<h2>Logging In</h2>
<div id="loginText"></div>
<h2>Logging In...</h2>
<h3>Please visit:</h3>
<h4 is="emby-linkbutton" onclick="AnilistSyncConfig.openAnilistAuth()" class="button-link emby-button" id="authCopy">
https://anilist.co/api/v2/oauth/authorize?client_id=5659&redirect_uri=https://anilist.co/api/v2/oauth/pin&response_type=code
</h4>
<button onclick="AnilistSyncConfig.copyLink()" is="emby-button" type="button"
class="raised button block emby-button">
<span id="copyText">Copy link</span>
</button>
<div class="fieldDescription">
Copy the authorization code from Anilist into the box below
</div>
<!--<h3>Copy the authorization code into the box below</h3>-->
<br>
<div id="inputCodeContainer">
<input is="emby-input" id="AnilistAuthCodeInput" label="Anilist Authorization Code:" />
<div class="fieldDescription">
Anilist authorization code from redirect
</div>
</div>
<br>
<button onclick="AnilistSyncConfig.submitAuthCode();" is="emby-button" type="button"
class="raised button-submit block"><span>Submit</span></button>
class="raised button-submit block">
<span>Submit</span>
</button>
<button onclick="AnilistSyncConfig.stopLoginProcess();" is="emby-button" type="button"
class="raised button-cancel block"><span>Cancel</span></button>
class="raised button-cancel block">
<span>Cancel</span>
</button>
</div>
<div id="configOptionsContainer" hidden>
<h3>Hello again <span id="simklName">USERNAME</span>!</h3>
<h3>Hello again <span id="anilistName">USERNAME</span>!</h3>
<button onclick="AnilistSyncConfig.logOut();" is="emby-button" type="button" class="raised button block">
<span>Log Out</span></button>
<h2>Scrobbling options:</h2>
@@ -74,24 +91,36 @@
guid: "18c2a8ea-afa0-4a0b-aa94-072b492ab80b",
onLoginProcess: false,
configCache: [],
loginTimer: null,
remainingTimer: null,
finish: null,
userSelector: document.querySelector('#user-selector'),
loginButtonContainer: document.querySelector('#loginButtonContainer'),
configOptionsContainer: document.querySelector('#configOptionsContainer'),
simklName: document.querySelector('#simklName'),
loginSecondsRemaining: document.querySelector('#loginSecondsRemaining'),
loginText: document.querySelector('#loginText'),
loginPin: document.querySelector('#loginPin'),
anilistName: document.querySelector('#anilistName'),
loggingIn: document.querySelector('#loggingIn'),
copyText: document.querySelector('#copyText'),
authCopy: document.querySelector('#authCopy'),
populateUsers: async function (users) {
users.forEach(function (user) {
AnilistSyncConfig.userSelector.append(new Option(user.Name, user.Id));
});
},
openAnilistAuth: async function () {
window.open(authCopy.innerText);
},
copyLink: async function () {
const area = document.createElement('textarea');
authCopy.appendChild(area);
area.value = authCopy.innerText;
console.log(area.value);
area.select();
document.execCommand('copy');
copyText.innerText = 'Copied'
Dashboard.alert('Copied link');
authCopy.removeChild(area);
},
loadConfig: async function (user, config) {
if (config != null) {
this.configCache = config;
@@ -136,7 +165,7 @@
const userSettings = await AnilistAPI.getUserSettings(userConfig.Id);
console.log("User");
console.log(userSettings);
AnilistSyncConfig.simklName.innerText = userSettings.data.Viewer.name;
AnilistSyncConfig.anilistName.innerText = userSettings.data.Viewer.name;
for (const key in userConfig) {
const chk = document.querySelector("#configOptionsContainer input[type=checkbox]#" + key);
@@ -152,9 +181,6 @@
},
startLoginProcess: async function () {
this.onLoginProcess = true;
AnilistAPI.openAnilistAuth();
AnilistSyncConfig.loginText.innerHTML = 'Please log in and authorize the application.';
AnilistSyncConfig.loginButtonContainer.setAttribute('hidden', '');
AnilistSyncConfig.loggingIn.removeAttribute('hidden');
@@ -221,9 +247,6 @@
}
var AnilistAPI = {
openAnilistAuth: function () {
window.open('https://anilist.co/api/v2/oauth/authorize?client_id=5659&redirect_uri=https://anilist.co/api/v2/oauth/pin&response_type=code')
},
getToken: function (user_code) {
const request = {
url: window.ApiClient.getUrl('AnilistSync/oauth/token/' + user_code),
@@ -77,7 +77,14 @@ namespace Jellyfin.Plugin.AnilistSync.Services
{
return false;
}
return true;
// Check if movie or episode then check against user config
return playbackProgress.MediaInfo.Type switch
{
nameof(Movie) => userConfig.ScrobbleMovies,
nameof(Episode) => userConfig.ScrobbleShows,
_ => false
};
}
private async void OnPlaybackProgress(object? sessions, PlaybackProgressEventArgs eventArgs)