111 lines
4.6 KiB
JavaScript
111 lines
4.6 KiB
JavaScript
import * as MastodonAPI from "./MastodonAPI.js";
|
|
import * as BlueskyAPI from "./BlueskyAPI.js";
|
|
import * as TumblrAPI from "./TumblrAPI.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];
|
|
|
|
// MAKE SURE THESE ARE SYNCED!
|
|
// Mastodon
|
|
let MastodonWebsite = "https://wetdry.world";
|
|
let MastodonClientID = "mastodon_client_id";
|
|
let MastodonClientSecret = "mastodon_client_secret";
|
|
let MastodonAccessToken = "mastodon_access_token";
|
|
let MastodonTokenType = "mastodon_token_type";
|
|
|
|
// Bluesky
|
|
let BlueskyApp = "https://bsky.app";
|
|
let BlueskyPDS = "https://bsky.social";
|
|
let BlueskyPKCEverifer = "bluesky_pkce_verifier";
|
|
let BlueskyPKCEchallenge = "bluesky_pkce_challenge";
|
|
let BlueskyPublicKey = "bluesky_public_key";
|
|
let BlueskyNonce = "bluesky_nonce";
|
|
let BlueskyAccessToken = "bluesky_access_token";
|
|
let BlueskyRefreshToken = "bluesky_refresh_token";
|
|
|
|
// Tumblr
|
|
let TumblrWebsite = "https://www.tumblr.com";
|
|
|
|
// Change weather the timelines are public or remote
|
|
LocalButton.onclick = (event) => {
|
|
// Toggle the cookie
|
|
if (document.cookie.split(";").some((item) => item.trim().startsWith("Local="))) {
|
|
document.cookie = "Local=true;samesite=strict;path=/;expires=expires=0000-01-01;";
|
|
} else {
|
|
document.cookie = "Local=true;samesite=strict;path=/;";
|
|
}
|
|
}
|
|
|
|
RemoteButton.onclick = (event) => {
|
|
// Toggle the cookie
|
|
if (document.cookie.split(";").some((item) => item.trim().startsWith("Remote="))) {
|
|
document.cookie = "Remote=true;samesite=strict;path=/;expires=expires=0000-01-01;";
|
|
} else {
|
|
document.cookie = "Remote=true;samesite=strict;path=/;";
|
|
}
|
|
}
|
|
|
|
// Mastodon buttons
|
|
MastodonLoginButton.onclick = (event) => {
|
|
if (MastodonWebInput != "") {
|
|
MastodonAPI.HandleAuthentication(MastodonWebsite, MastodonClientID, MastodonClientSecret);
|
|
}
|
|
}
|
|
|
|
MastodonLogoutButton.onclick = (event) => {
|
|
document.cookie = MastodonClientID + "=nothing;" + ";samesite=strict;path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT;";
|
|
document.cookie = MastodonClientSecret + "=nothing;" + ";samesite=strict;path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT;";
|
|
document.cookie = MastodonAccessToken + "=nothing;" + ";samesite=strict;path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT;";
|
|
document.cookie = MastodonTokenType + "=nothing;" + ";samesite=strict;path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT;";
|
|
document.location.href = document.location.href;
|
|
}
|
|
|
|
// Bluesky Buttons
|
|
BlueskyLoginButton.onclick = (event) => {
|
|
if (BlueskyWebInput != "") {
|
|
BlueskyAPI.HandleAuthorization(BlueskyPKCEverifer, BlueskyPKCEchallenge, BlueskyNonce);
|
|
}
|
|
}
|
|
|
|
BlueskyLogoutButton.onclick = (event) => {
|
|
document.cookie = BlueskyPKCEverifer + "=nothing;" + ";samesite=strict;path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT;";
|
|
document.cookie = BlueskyPKCEchallenge + "=nothing;" + ";samesite=strict;path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT;";
|
|
document.cookie = BlueskyNonce + "=nothing;" + ";samesite=strict;path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT;";
|
|
document.location.href = document.location.href;
|
|
}
|
|
|
|
// if an access token is found, login.
|
|
function CheckLogin() {
|
|
// Check for a mastodon token.
|
|
if (document.cookie.split("; ").find((row) => row.startsWith(MastodonAccessToken + "="))?.split("=").length > 1 && document.location.href.split("code=").length == 1) {
|
|
// Swap the buttons
|
|
MastodonLoginButton.remove();
|
|
MastodonWebInput.remove();
|
|
MastodonLogoutButton.setAttribute("style", "");
|
|
} else {
|
|
// Auto log in
|
|
MastodonAPI.GainToken(MastodonWebsite, MastodonClientID, MastodonClientSecret, MastodonAccessToken, MastodonTokenType);
|
|
}
|
|
if ((document.location.href.split("state=").length == 1 && document.location.href.split("iss=").length == 1 && document.location.href.split("code=").length == 1) && document.cookie.split("; ").find((row) => row.startsWith(BlueskyAccessToken + "="))?.split("=").length > 1) {
|
|
// Swap the buttons
|
|
BlueskyLoginButton.remove();
|
|
BlueskyWebInput.remove();
|
|
BlueskyLogoutButton.setAttribute("style", "");
|
|
} else {
|
|
// Auto log in
|
|
BlueskyAPI.GainTokens(BlueskyPKCEverifer, BlueskyNonce, BlueskyAccessToken, BlueskyRefreshToken);
|
|
}
|
|
// Check for a bluesky token.
|
|
}
|
|
|
|
// Runs on website start.
|
|
// Remove traces of "login".
|
|
CheckLogin();
|