diff --git a/web/src/index.css b/web/src/index.css index b7deb5f..4f8ad7a 100644 --- a/web/src/index.css +++ b/web/src/index.css @@ -43,7 +43,7 @@ samp { } @media (hover: hover) { - .post-actions { + .reply-card .post-actions { visibility: hidden; } diff --git a/web/src/pages/BBS.tsx b/web/src/pages/BBS.tsx index dfb088b..34fb5b0 100644 --- a/web/src/pages/BBS.tsx +++ b/web/src/pages/BBS.tsx @@ -2,9 +2,9 @@ import { useState, type SyntheticEvent } from "react"; import { Link, useRouteLoaderData } from "react-router-dom"; import { useAuth } from "../lib/auth"; import { useBreadcrumb } from "../hooks/useBreadcrumb"; -import { createPost, deleteRecord, uploadAttachments } from "../lib/writes"; +import { createPost, uploadAttachments } from "../lib/writes"; import ComposeForm from "../components/form/ComposeForm"; -import { POST, SITE } from "../lib/lexicon"; +import { SITE } from "../lib/lexicon"; import { makeAtUri, nowIso, parseAtUri } from "../lib/util"; import * as limits from "../lib/limits"; import { usePageTitle } from "../hooks/usePageTitle"; @@ -33,7 +33,6 @@ export default function BBSPage() { const [newsBody, setNewsBody] = useState(""); const [newsFiles, setNewsFiles] = useState([]); const [pendingNews, setPendingNews] = useState([]); - const [deletedTids, setDeletedTids] = useState>(new Set()); const [showAllNews, setShowAllNews] = useState(false); const [postingNews, setPostingNews] = useState(false); @@ -75,21 +74,11 @@ export default function BBSPage() { } } - async function removeNews(rkey: string) { - if (!agent) return; - if (!confirm("Delete this news post?")) return; - await deleteRecord(agent, POST, rkey); - setPendingNews((prev) => prev.filter((n) => n.rkey !== rkey)); - setDeletedTids((prev) => new Set(prev).add(rkey)); - } - - // Merge pending news with loader data, deduplicating by rkey and filtering deletes. + // Merge pending news with loader data, deduplicating by rkey. const loaderTids = new Set(bbs.news.map((n) => n.rkey)); const allNews = [ - ...pendingNews.filter( - (n) => !loaderTids.has(n.rkey) && !deletedTids.has(n.rkey), - ), - ...bbs.news.filter((n) => !deletedTids.has(n.rkey)), + ...pendingNews.filter((n) => !loaderTids.has(n.rkey)), + ...bbs.news, ]; const visibleNews = showAllNews ? allNews : allNews.slice(0, 3); @@ -176,26 +165,10 @@ export default function BBSPage() { to={`/bbs/${handle}/news/${item.rkey}`} className={`reply-card block bg-neutral-900 border border-neutral-800 rounded p-4 hover:border-neutral-700 ${i < visibleNews.length - 1 ? "mb-2" : ""}`} > -
-
- {item.title} - · - -
- {isSysop && ( - - - - )} +
+ {item.title} + · +
{item.body.substring(0, 200) + diff --git a/web/src/pages/News.tsx b/web/src/pages/News.tsx index 4194575..27e2149 100644 --- a/web/src/pages/News.tsx +++ b/web/src/pages/News.tsx @@ -4,6 +4,7 @@ import { useBreadcrumb } from "../hooks/useBreadcrumb"; import { usePageTitle } from "../hooks/usePageTitle"; import { POST } from "../lib/lexicon"; import { deleteRecord } from "../lib/writes"; +import { invalidateBBSCache } from "../lib/bbs"; import type { BBSLoaderData } from "../router/loaders"; import NewsCard from "../components/post/NewsCard"; @@ -36,6 +37,7 @@ export default function NewsPage() { if (!agent || !tid) return; if (!confirm("Delete this news post?")) return; await deleteRecord(agent, POST, tid); + invalidateBBSCache(); navigate(`/bbs/${handle}`); }