···22import { agent } from "./login";
33import { Client } from "@atcute/client";
44import * as TID from "@atcute/tid";
55-import RichtextBuilder from "@atcute/bluesky-richtext-builder";
6576const PostForm: Component = () => {
87 const [notice, setNotice] = createSignal("");
+22-1
src/routes/dashboard.tsx
···11+import { createResource, For, Match, Show, Switch } from "solid-js";
12import Container from "../components/container";
23import { agent, killSession, loginState } from "../components/login";
34import MiniProfile from "../components/miniProfile";
45import PostForm from "../components/postForm";
66+import { createPostElements, getFollowingTimeline } from "../utils/posts";
77+import Post from "../components/post";
88+99+async function renderTimeline() {
1010+ const feed = await getFollowingTimeline();
1111+ return await createPostElements(feed.feed);
1212+}
513614const Dashboard = () => {
715 if (!loginState()) {
816 location.href = "/";
917 }
1818+1919+ const [feed] = createResource(renderTimeline);
10201121 return (
1222 <>
···2838 children={
2939 <div class="container-content">
3040 <div class="dashboard-feed">
3131- <p>No more posts</p>
4141+ <Switch>
4242+ <Match when={feed.loading}>
4343+ <p>Loading...</p>
4444+ </Match>
4545+ <Match when={feed.error}>
4646+ <p>Error while loading timeline: {feed.error}</p>
4747+ </Match>
4848+ <Match when={feed()}>
4949+ <For each={feed()}>{(item) => <Post data={item} />}</For>
5050+ <p>No more posts</p>
5151+ </Match>
5252+ </Switch>
3253 </div>
3354 </div>
3455 }
-1
src/routes/splash.tsx
···11import { Component } from "solid-js";
22-import Navbar from "../components/navbar";
32import "../styles/main.scss";
43import typefaceLogo from "/logo.png?url";
54import blueskyLogo from "/bluesky.svg?url";