Retro Bulletin Board Systems on atproto. Web app and TUI. lazy mirror of alyraffauf/atbbs atbbs.xyz
forums python tui atproto bbs
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

web/BBS: add new news to cache

+15 -3
+1
web/src/pages/BBS.tsx
··· 168 168 <Link 169 169 key={item.rkey} 170 170 to={`/bbs/${handle}/news/${item.rkey}`} 171 + state={{ pendingNewsItem: item }} 171 172 className={`reply-card block bg-neutral-900 border border-neutral-800 rounded p-4 hover:border-neutral-700 ${i < visibleNews.length - 1 ? "mb-2" : ""}`} 172 173 > 173 174 <div className="flex items-baseline gap-2 mb-2">
+14 -3
web/src/pages/News.tsx
··· 1 - import { useNavigate, useParams, useRouteLoaderData } from "react-router-dom"; 1 + import { 2 + useLocation, 3 + useNavigate, 4 + useParams, 5 + useRouteLoaderData, 6 + } from "react-router-dom"; 2 7 import { useAuth } from "../lib/auth"; 3 8 import { useBreadcrumb } from "../hooks/useBreadcrumb"; 4 9 import { usePageTitle } from "../hooks/usePageTitle"; 5 10 import { POST } from "../lib/lexicon"; 6 11 import { deleteRecord } from "../lib/writes"; 7 - import { invalidateBBSCache } from "../lib/bbs"; 12 + import { invalidateBBSCache, type NewsPost } from "../lib/bbs"; 8 13 import type { BBSLoaderData } from "../router/loaders"; 9 14 import NewsCard from "../components/post/NewsCard"; 10 15 ··· 14 19 const { user, agent } = useAuth(); 15 20 const navigate = useNavigate(); 16 21 17 - const item = bbs.news.find((news) => news.rkey === tid); 22 + // Fallback for posts that were just created but haven't made it into the 23 + // cached BBS loader data yet. 24 + const stateItem = (useLocation().state as { pendingNewsItem?: NewsPost }) 25 + ?.pendingNewsItem; 26 + const item = 27 + bbs.news.find((news) => news.rkey === tid) ?? 28 + (stateItem?.rkey === tid ? stateItem : undefined); 18 29 19 30 useBreadcrumb( 20 31 [