Fedi.CrowdedGames.Group/JS/setting.js
2025-05-05 23:55:56 +00:00

107 lines
3.3 KiB
JavaScript

import * as MastodonAPI from "./MastodonAPI.js";
import * as BlueskyAPI from "./BlueskyAPI.js";
import * as TumblrAPI from "./TumblrAPI.js";
import * as Variables from "./Variables.js";
// Settings buttons
let LocalButton = document.getElementsByClassName("Local")[0];
let RemoteButton = document.getElementsByClassName("Remote")[0];
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];
// original link
let Origin = location.origin + "/HTML/setting.html"
// Change weather the timelines are public or remote
LocalButton.onclick = (event) => {
// Toggle the Variable
if (localStorage.getItem("Local") != null) {
localStorage.removeItem("Local");
} else {
localStorage.setItem("Local", "true");
}
}
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;
}
// 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.setAttribute("style", "");
} 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.setAttribute("style", "");
} else {
// Auto log in
await BlueskyAPI.GainTokens();
}
}
// Runs on website start.
// Remove traces of "login".
CheckLogin();