Fedi.CrowdedGames.Group/JS/setting.js
2025-05-23 19:21:27 -07:00

129 lines
4.1 KiB
JavaScript

import * as MastodonAPI from "./MastodonAPI.js";
import * as BlueskyAPI from "./BlueskyAPI.js";
import * as TumblrAPI from "./TumblrAPI.js";
import * as YoutubeAPI from "./YoutubeAPI.js";
import * as Variables from "./Variables.js";
// Settings buttons
let RemoteButton = document.getElementsByClassName("Remote")[0];
// Website Stuff
let MastodonLoginButton = document.getElementsByClassName("Login Mastodon")[0];
let MastodonWebInput = document.getElementsByClassName("WebInput Mastodon")[0];
let MastodonLogoutButton = document.getElementsByClassName("Logout Mastodon")[0];
let BlueskyLoginButton = document.getElementsByClassName("Login Bluesky")[0];
let BlueskyWebInput = document.getElementsByClassName("WebInput Bluesky")[0];
let BlueskyLogoutButton = document.getElementsByClassName("Logout Bluesky")[0];
let YoutubeLoginButton = document.getElementsByClassName("Login Youtube")[0];
let YoutubeAPIInput = document.getElementsByClassName("WebInput Youtube")[0];
let YoutubeHandleInput = document.getElementsByClassName("WebInput Youtube")[1];
let YoutubeLogoutButton = document.getElementsByClassName("Logout Youtube")[0];
// original link
let Origin = location.origin + "/HTML/setting.html"
// Allow the user to change if Remote is a thing or not.
RemoteButton.onclick = (event) => {
// Toggle the Variable
if (localStorage.getItem("Remote") != null) {
localStorage.removeItem("Remote");
} else {
localStorage.setItem("Remote", "true");
}
}
// Mastodon buttons
// Login
MastodonLoginButton.onclick = (event) => {
if (MastodonWebInput.value != "") {
let text = MastodonWebInput.value
MastodonAPI.HandleAuthentication(text);
}
}
// Logout
MastodonLogoutButton.onclick = (event) => {
localStorage.removeItem(Variables.MastodonClientID);
localStorage.removeItem(Variables.MastodonClientSecret);
localStorage.removeItem(Variables.MastodonAccessToken);
localStorage.removeItem(Variables.MastodonTokenType);
localStorage.removeItem(Variables.MastodonWebsite);
document.location.href = Origin;
}
// Bluesky Buttons
// Login
BlueskyLoginButton.onclick = (event) => {
if (BlueskyWebInput.value != "") {
let text = BlueskyWebInput.value;
BlueskyAPI.HandleAuthorization(text);
}
}
// Logout
BlueskyLogoutButton.onclick = (event) => {
localStorage.removeItem(Variables.BlueskyPDS);
localStorage.removeItem(Variables.BlueskyDID);
localStorage.removeItem(Variables.BlueskyPKCEVerifier);
localStorage.removeItem(Variables.BlueskyPKCEChallenge);
localStorage.removeItem(Variables.BlueskyNonce);
localStorage.removeItem(Variables.BlueskyAccessToken);
localStorage.removeItem(Variables.BlueskyRefreshToken);
localStorage.removeItem(Variables.BlueskyPublicKey);
localStorage.removeItem(Variables.BlueskyPrivateKey);
document.location.href = Origin;
}
// Youtube Buttons
// Login
YoutubeLoginButton.onclick = (event) => {
if (YoutubeHandleInput.value != "" && YoutubeAPIInput.value != "") {
YoutubeAPI.GetChannelID(YoutubeAPIInput.value, YoutubeHandleInput.value);
// Clear the stuff
YoutubeHandleInput.value = "";
YoutubeAPIInput.value = "";
}
}
// Logout
YoutubeLogoutButton.onclick = (event) => {
localStorage.removeItem(Variables.YoutubeID);
document.location.href = Origin;
}
// if an access token is found, login.
async function CheckLogin() {
// Check for a mastodon token.
if (localStorage.getItem(Variables.MastodonAccessToken) != null) {
// Swap the buttons
MastodonLoginButton.remove();
MastodonWebInput.remove();
MastodonLogoutButton.classList.remove("Hidden");
} else {
// Auto log in
await MastodonAPI.GainToken(Variables.MastodonWebsite);
}
// Check for a bluesky token.
if (localStorage.getItem(Variables.BlueskyAccessToken) != null) {
// Swap the buttons
BlueskyLoginButton.remove();
BlueskyWebInput.remove();
BlueskyLogoutButton.classList.remove("Hidden");
} else {
// Auto log in
await BlueskyAPI.GainTokens();
}
// Check for a Youtube ID.
if (localStorage.getItem(Variables.YoutubeID) != null) {
YoutubeLoginButton.remove();
YoutubeAPIInput.remove();
YoutubeHandleInput.remove();
YoutubeLogoutButton.classList.remove("Hidden");
}
}
// Runs on website start.
// Remove traces of "login".
CheckLogin();