pds dash for shimaenaga.veryroundbird.house (based off of pds.witchcraft.systems)

add favicons, start adding in guestbook

Changed files
+43 -3
src
+10 -2
src/App.svelte
···
import PostComponent from "./lib/PostComponent.svelte";
import AccountComponent from "./lib/AccountComponent.svelte";
import InfiniteLoading from "svelte-infinite-loading";
-
import { getNextPosts, Post, getAllMetadataFromPds } from "./lib/pdsfetch";
+
import { getNextPosts, Post, getAllMetadataFromPds, fetchGuestbookPosts } from "./lib/pdsfetch";
import { Config } from "../config";
const accountsPromise = getAllMetadataFromPds();
import { onMount } from "svelte";
let posts: Post[] = [];
+
let guestbookPosts: Post[] = [];
let hue: number = 1;
const cycleColors = async () => {
···
getNextPosts().then((initialPosts) => {
posts = initialPosts;
});
+
fetchGuestbookPosts().then((gbPosts) => {
+
guestbookPosts = gbPosts;
+
console.log(gbPosts);
+
});
});
// Infinite loading function
const onInfinite = ({
···
<div id="guestbookContents" popover>
<div id="signInfo">You can sign the guestbook <a href="{Config.GUESTBOOK_POST}" target="_blank">here</a>!</div>
<div id="guestbookPosts">
-
+
{#each guestbookPosts as postObject}
+
<div class="guestbookPost">
+
</div>
+
{/each}
</div>
</div>
</div>
+33 -1
src/lib/pdsfetch.ts
···
}
};
-
export { getAllMetadataFromPds, getNextPosts, Post };
+
const convertUri = (uri: string) => {
+
if (uri.startsWith("at://")) {
+
return uri;
+
}
+
+
if (uri.includes("bsky.app/profile/")) {
+
const match = uri.match(/profile\/([\w.]+)\/post\/([\w]+)/);
+
if (match) {
+
const [, did, postId] = match;
+
return `at://${did}/app.bsky.feed.post/${postId}` as At.Did;
+
}
+
}
+
+
this.error = "Invalid Bluesky post URL format";
+
return null;
+
}
+
+
const fetchGuestbookPosts = async () => {
+
try {
+
const { data } = await rpc.get("app.bsky.feed.getPostThread", {
+
params: {
+
uri: convertUri(Config.GUESTBOOK_POST)
+
}
+
});
+
+
return data.records as ComAtprotoRepoListRecords.Record[];
+
} catch (e) {
+
console.error(`Error fetching replies for ${did}. Are you sure this is a Bluesky post?`, e);
+
return null;
+
}
+
}
+
+
export { getAllMetadataFromPds, getNextPosts, Post, fetchGuestbookPosts };
export type { AccountMetadata };