import * as MastodonAPI from "./MastodonAPI.js"; import * as BlueskyAPI from "./BlueskyAPI.js"; import * as TumblrAPI from "./TumblrAPI.js"; 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]; // Mastodon let MastodonWebsite = "https://wetdry.world"; let MastodonClientID = "mastodon_client_id"; let MastodonClientSecret = "mastodon_client_secret"; let MastodonAccessToken = "mastodon_access_token"; let MastodonTokenType = "mastodon_access_token"; // Bluesky (TODO: use these variables). let BlueskyApp = "https://bsky.app"; let BlueskyPDS = "https://bsky.social"; // Tumblr let TumblrWebsite = "https://www.tumblr.com"; MastodonLoginButton.onclick = (event) => { if (MastodonWebInput != "") { MastodonAPI.HandleAuthentication(MastodonWebsite, MastodonClientID, MastodonClientSecret); } } MastodonLogoutButton.onclick = (event) => { document.cookie = MastodonAccessToken + "=nothing;" + ";samesite=strict;path=/;expires=0000-01-01;"; document.cookie = MastodonTokenType + "=nothing;" + ";samesite=strict;path=/;expires=0000-01-01;"; console.log("Cleared the access token."); } // if an access token is found, login. function CheckLogin() { // Check for a token. if (document.cookie.split("; ").find((row) => row.startsWith(MastodonAccessToken + "="))?.split("=").length > 1) { // Swap the buttons LoginButton.remove(); LogoutButton.setAttribute("style", ""); } } // Below is the thing it populates if you login. async function PopulateFavorites() { let Favorites = MastodonAPI.GetFavorites(MastodonWebsite, MastodonAccessToken, MastodonTokenType); let FavoritesArea = document.getElementsByClassName("Favorites")[0]; // Populate the favorites area. for (let i in Favorites) { FavoritesArea.innerHTML += "
"; FavoritesArea.getElementsByClassName("Favorite")[i].innerHTML = Favorites[i].content; } } async function PopulateBookmarks() { let Bookmarks = MastodonAPI.GetBookmarks(MastodonWebsite, MastodonAccessToken, MastodonTokenType); let BookmarksArea = document.getElementsByClassName("Bookmarks")[0]; // Populate the Bookmarks area. for (let i in Bookmarks) { BookmarksArea.innerHTML += "
"; BookmarksArea.getElementsByClassName("Bookmark")[i].innerHTML = Bookmarks[i].content; } } async function PopulateNotifications() { let Notifications = MastodonAPI.GetNotifications(MastodonWebsite, MastodonAccessToken, MastodonTokenType); let NotificationsArea = document.getElementsByClassName("Notifications")[0]; // Populate the Conversations area. for (let i in Notifications) { NotificationsArea.innerHTML += "
"; NotificationsArea.getElementsByClassName("Notification")[i].innerHTML = Notifications[i].status.content; } } // Runs on website start. // Remove traces of "login". CheckLogin(); // So far: login. TODO: Change this later. MastodonAPI.GainToken(MastodonWebsite, MastodonClientID, MastodonClientSecret, MastodonAccessToken, MastodonTokenType); // Populate the areas. PopulateFavorites(); PopulateBookmarks(); PopulateNotifications(); // Functions stolen elsewhere // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random function getRandomArbitrary(min, max) { return Math.random() * (max - min) + min; } // The next section is dedicated to testing. // WARNING: I don't know what I am doing. BlueskyAPI.ClientDPoP(); BlueskyAPI.AssertionJWT("Nothing"); async function BlueskyTestingAuthorization() { // Declare Variables let WellKnown = await BlueskyAPI.GetPDSWellKnown(); let PAREndpoint = WellKnown.pushed_authorization_request_endpoint; let State = generateToken(64); let PKCEverifier = await BlueskyAPI.CreatePKCECodeVerifier(); let PKCEchallenge = await BlueskyAPI.CreatePKCECodeChallenge(TestingVerifier); let PAR = BlueskyAPI.PARrequest(WellKnown.pushed_authorization_request_endpoint, State, PKCEchallenge); console.log(PAR); } // BlueskyTestingAuthorization(); // Stolen from Search // TODO: implement my own function. function generateToken(length) { var chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; var token = ''; for(var i = 0; i < length; i++) { token += chars[Math.floor(Math.random() * chars.length)]; } return token; }