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();