I probably broke something

This commit is contained in:
CatAClock 2025-07-17 09:06:48 -07:00
parent 06770d107b
commit 2462400922
6 changed files with 47 additions and 56 deletions

View file

@ -25,6 +25,7 @@
<p class="Button Follow">Follow!</p> <p class="Button Follow">Follow!</p>
<p class="Button Block">Block!</p> <p class="Button Block">Block!</p>
</aside> </aside>
<div class="Posts"></div>
</div> </div>
<!-- Either other account info goes here, or posts go here. --> <!-- Either other account info goes here, or posts go here. -->
<div> <div>

View file

@ -100,6 +100,24 @@ export async function GetPosts(URIs) {
return body; return body;
} }
export async function GetFollows(Actor) {
if (Token == null) {
return "";
}
let FetchThing = localStorage.getItem(Variables.BlueskyPDS) + "/xrpc/app.bsky.graph.getFollows?actor=" + Actor;
let DPoP = await ClientDPoPPDS("GET", FetchThing);
let request = fetch(FetchThing, { method: "GET", headers: {"Authorization": "DPoP " + Token, "DPoP": DPoP}});
let body = await request.then((response) => response.json());
let status = await request.then((response) => response.status);
let header = await request.then((response) => response.headers.get("dpop-nonce"));
if (status == 401) {
await HandleError(body, header);
body = await GetPosts(URIs);
}
return body;
}
// Gets the parent. Gets the replies. Also gets the post shit.
export async function GetPostThread(URI) { export async function GetPostThread(URI) {
if (Token == null) { if (Token == null) {
return ""; return "";

View file

@ -57,24 +57,6 @@ export async function GetRelationship(ID) {
.then((response) => response.json()); .then((response) => response.json());
} }
// Gets the favorites of a user that you have access to.
export async function GetFavorites() {
if (Token == null || TokenType == null) {
return "";
}
return await fetch(localStorage.getItem(Variables.MastodonWebsite) + "/api/v1/favourites", {method: "GET", headers: {"Authorization": TokenType + " " + Token}})
.then((response) => response.json());
}
// Gets the bookmarks of a user that you have access to.
export async function GetBookmarks() {
if (Token == null || TokenType == null) {
return "";
}
return await fetch(localStorage.getItem(Variables.MastodonWebsite) + "/api/v1/bookmarks", {method: "GET", headers: {"Authorization": TokenType + " " + Token}})
.then((response) => response.json());
}
// Gets the notifications of a user that you have access to. // Gets the notifications of a user that you have access to.
export async function GetNotifications() { export async function GetNotifications() {
if (Token == null || TokenType == null) { if (Token == null || TokenType == null) {
@ -111,11 +93,11 @@ export async function GetOwnAccount() {
} }
// Get your own account blocks. // Get your own account blocks.
export async function GetOwnAccountBlocks() { export async function GetAccountFollows(ID) {
if (Token == null || TokenType == null) { if (Token == null || TokenType == null) {
return ""; return "";
} }
return await fetch(localStorage.getItem(Variables.MastodonWebsite) + "/api/v1/blocks/", {method: "GET", headers: {"Authorization": TokenType + " " + Token}}) return await fetch(localStorage.getItem(Variables.MastodonWebsite) + "/api/v1/accounts/" + ID + "/Following", {method: "GET", headers: {"Authorization": TokenType + " " + Token}})
.then((response) => response.json()); .then((response) => response.json());
} }

View file

@ -18,7 +18,7 @@ let AlternateAccountDescription = document.getElementsByClassName("AccountDescri
let FollowButton = document.getElementsByClassName("Follow")[0]; let FollowButton = document.getElementsByClassName("Follow")[0];
let BlockButton = document.getElementsByClassName("Block")[0]; let BlockButton = document.getElementsByClassName("Block")[0];
let AccountPosts = document.getElementsByClassName("Posts")[0]; let AccountPosts = document.getElementsByClassName("Posts")[1];
// Other vars. // Other vars.
let Following = false; let Following = false;
@ -126,10 +126,10 @@ async function GetAccount() {
AccountImage.setAttribute("src", account.avatar); AccountImage.setAttribute("src", account.avatar);
// Get their recent posts. Determine if they are cewl or not. // Get their recent posts. Determine if they are cewl or not.
let Posts = await BlueskyAPI.GetProfileFeed(account.did); let Posts = await BlueskyAPI.GetProfileFeed(account.did);
console.log(Posts);
for (let i of Posts.feed) { for (let i of Posts.feed) {
AccountPosts.innerHTML += i.post.record.text + "<br/><br/>"; AccountPosts.innerHTML += i.post.record.text + "<br/><br/>";
} }
// No other accounts. Just you.
} else { } else {
FollowButton.setAttribute("hidden", ""); FollowButton.setAttribute("hidden", "");
BlockButton.setAttribute("hidden", ""); BlockButton.setAttribute("hidden", "");
@ -151,12 +151,25 @@ async function GetAccount() {
} }
Token = localStorage.getItem(Variables.BlueskyAccessToken); Token = localStorage.getItem(Variables.BlueskyAccessToken);
if (Token != null) { if (Token != null) {
// Mastodon stuff.
let MastoProfile = await MastodonAPI.GetOwnAccount();
// Get my followings on Mastodon.
let MyMastodonFollows = await MastodonAPI.GetAccountFollows(Mastodon.id);
for (let i of MyMastodonFollows) {
document.getElementsByClassName("Posts")[0].innerHTML += MyMastodonFollows.acct + "<br/><br/>";
}
// Bluesky stuff.
let BlueProfile = await BlueskyAPI.GetProfile(localStorage.getItem(Variables.BlueskyDID)); let BlueProfile = await BlueskyAPI.GetProfile(localStorage.getItem(Variables.BlueskyDID));
AlternateAccountImage.setAttribute("width", "20%"); AlternateAccountImage.setAttribute("width", "20%");
AlternateAccountImage.setAttribute("height", "20%"); AlternateAccountImage.setAttribute("height", "20%");
AlternateAccountName.innerHTML = BlueProfile.handle; AlternateAccountName.innerHTML = BlueProfile.handle;
AlternateAccountDescription.innerHTML = BlueProfile.description; AlternateAccountDescription.innerHTML = BlueProfile.description;
AlternateAccountImage.setAttribute("src", BlueProfile.avatar); AlternateAccountImage.setAttribute("src", BlueProfile.avatar);
// Get my followings on Bsky
let MyBlueskyFollows = await BlueskyAPI.GetFollows(localStorage.getItem(Variables.BlueskyDID));
for (let i of MyBlueskyFollows.follows) {
AccountPosts.innerHTML += i.handle + "<br/><br/>";
}
} }
} }

View file

@ -184,7 +184,6 @@ async function GetPost() {
} }
// Replies, anyone? // Replies, anyone?
let Context = await BlueskyAPI.GetPostThread(post.post.uri); let Context = await BlueskyAPI.GetPostThread(post.post.uri);
console.log(Context);
for (let i of Context.thread.replies) { for (let i of Context.thread.replies) {
TemporaryPost = await BlueskyReplyFunction(NumberOfThreads, i); TemporaryPost = await BlueskyReplyFunction(NumberOfThreads, i);
ThreadedPost.push(TemporaryPost); ThreadedPost.push(TemporaryPost);
@ -264,23 +263,25 @@ async function BlueskyThreadFunction(Id, post) {
} }
async function BlueskyReplyFunction(Id, post) { async function BlueskyReplyFunction(Id, post) {
let ShitHTML = "<header> <h1 class=\"Handle " + Id + "\"> " + post.post.author.handle + "</h1> <h2 class=\"Origin " + Id + "\"> " + website + "</h2> </header> <p class=\"PostText " + Id + "\"></p> <div class=\"Images " + Id + "\"></div> <hr/>"; let OtherPost = await BlueskyAPI.GetPosts([post.uri]);
OtherPost = OtherPost.posts[0];
let ShitHTML = "<header> <h1 class=\"Handle " + Id + "\"> " + OtherPost.author.handle + "</h1> <h2 class=\"Origin " + Id + "\"> " + website + "</h2> </header> <p class=\"PostText " + Id + "\"></p> <div class=\"Images " + Id + "\"></div> <hr/>";
document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", ShitHTML); document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", ShitHTML);
Text = BlueskyAPI.ApplyFacets(post.post.record, post.post.record.text); Text = BlueskyAPI.ApplyFacets(OtherPost.record, OtherPost.record.text);
Text = Text.replace(/\r?\n|\r/g, "<br/>"); Text = Text.replace(/\r?\n|\r/g, "<br/>");
// Sensitive topic :3 // Sensitive topic :3
if (post.post.record.hasOwnProperty("labels") && post.post.record.labels.length != 0) { if (OtherPost.record.hasOwnProperty("labels") && OtherPost.record.labels.length != 0) {
document.getElementsByClassName("PostText " + Id)[0].innerHTML = "LABELS APPLIED: "; document.getElementsByClassName("PostText " + Id)[0].innerHTML = "LABELS APPLIED: ";
for (let lab of post.post.value.labels.values) { for (let lab of OtherPost.value.labels.values) {
document.getElementsByClassName("PostText " + Id)[0].innerHTML += lab.val + " "; document.getElementsByClassName("PostText " + Id)[0].innerHTML += lab.val + " ";
} }
} else { } else {
document.getElementsByClassName("PostText " + Id)[0].innerHTML = Text; document.getElementsByClassName("PostText " + Id)[0].innerHTML = Text;
if (post.post.record.hasOwnProperty("embed")) { if (OtherPost.record.hasOwnProperty("embed")) {
ApplyMedia(post.post.record.embed, document.getElementsByClassName("Images " + Id)[0], post.post.author.did); ApplyMedia(OtherPost.record.embed, document.getElementsByClassName("Images " + Id)[0], OtherPost.author.did);
} }
} }
return post; return OtherPost;
} }
// Applyers. Essentially applies a thing to an operation. // Applyers. Essentially applies a thing to an operation.

View file

@ -4,29 +4,7 @@ import * as TumblrAPI from "/JS/TumblrAPI.js";
import * as Variables from "/JS/Variables.js"; import * as Variables from "/JS/Variables.js";
// Below is the thing it populates if you login. // Below is the thing it populates if you login.
async function PopulateFavorites() { async function PopulateMastodonNotifications() {
let Favorites = await MastodonAPI.GetFavorites();
let FavoritesArea = document.getElementsByClassName("Favorites")[0];
// Populate the favorites area.
for (let i in Favorites) {
FavoritesArea.innerHTML += "<article style='top:" + getRandomArbitrary(0, 84) + "%; left: " + getRandomArbitrary(0, 84) + "%;' class='Favorite'></article>";
FavoritesArea.getElementsByClassName("Favorite")[i].innerHTML = Favorites[i].content;
}
}
async function PopulateBookmarks() {
let Bookmarks = await MastodonAPI.GetBookmarks();
let BookmarksArea = document.getElementsByClassName("Bookmarks")[0];
// Populate the Bookmarks area.
for (let i in Bookmarks) {
BookmarksArea.innerHTML += "<article style='top:" + getRandomArbitrary(0, 84) + "%; left: " + getRandomArbitrary(0, 84) + "%;' class='Bookmark'></article>";
BookmarksArea.getElementsByClassName("Bookmark")[i].innerHTML = Bookmarks[i].content;
}
}
async function PopulateNotifications() {
let Notifications = await MastodonAPI.GetNotifications(); let Notifications = await MastodonAPI.GetNotifications();
let NotificationsArea = document.getElementsByClassName("Notifications")[0]; let NotificationsArea = document.getElementsByClassName("Notifications")[0];
@ -38,9 +16,7 @@ async function PopulateNotifications() {
} }
// Populate the areas. // Populate the areas.
PopulateFavorites(); PopulateMastodonNotifications();
PopulateBookmarks();
PopulateNotifications();
// Functions stolen elsewhere // Functions stolen elsewhere
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random