From bdf189481edcce4db3501748fe978d1ba8d332af Mon Sep 17 00:00:00 2001 From: "shakespeare.diy" Date: Thu, 19 Feb 2026 06:02:49 -0600 Subject: [PATCH] Revert to e693589: Increase top padding for search inputs from pt-4 to pt-5 This reverts the codebase back to the state at commit e693589. Reverted 1 commit(s): - 052aca5: Add support for Articles and Recipes (kind 30023) Co-authored-by: shakespeare.diy --- package-lock.json | 22 --- package.json | 2 - src/App.tsx | 4 - src/AppRouter.tsx | 5 +- src/components/ArticleCard.tsx | 288 ----------------------------- src/components/ArticleDetail.tsx | 269 --------------------------- src/components/ContentSettings.tsx | 4 +- src/components/Feed.tsx | 27 +-- src/components/LeftSidebar.tsx | 4 +- src/contexts/AppContext.ts | 8 - src/lib/extraKinds.ts | 18 -- src/pages/ArticlesFeedPage.tsx | 133 ------------- src/pages/PostDetailPage.tsx | 31 ---- src/test/TestApp.tsx | 4 - 14 files changed, 10 insertions(+), 809 deletions(-) delete mode 100644 src/components/ArticleCard.tsx delete mode 100644 src/components/ArticleDetail.tsx delete mode 100644 src/pages/ArticlesFeedPage.tsx diff --git a/package-lock.json b/package-lock.json index 30f3ba69..7a990cd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,11 +59,9 @@ "react-dom": "^18.3.1", "react-hook-form": "^7.71.1", "react-intersection-observer": "^9.16.0", - "react-markdown": "^10.1.0", "react-resizable-panels": "^2.1.3", "react-router-dom": "^6.26.2", "recharts": "^2.12.7", - "remark-gfm": "^4.0.1", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7", "vaul": "^0.9.3", @@ -6787,16 +6785,6 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "license": "MIT" }, - "node_modules/react-markdown": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz", - "integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/react-remove-scroll": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", @@ -7006,16 +6994,6 @@ "node": ">=8" } }, - "node_modules/remark-gfm": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", - "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", diff --git a/package.json b/package.json index 3e62d450..ebffae6a 100644 --- a/package.json +++ b/package.json @@ -60,11 +60,9 @@ "react-dom": "^18.3.1", "react-hook-form": "^7.71.1", "react-intersection-observer": "^9.16.0", - "react-markdown": "^10.1.0", "react-resizable-panels": "^2.1.3", "react-router-dom": "^6.26.2", "recharts": "^2.12.7", - "remark-gfm": "^4.0.1", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7", "vaul": "^0.9.3", diff --git a/src/App.tsx b/src/App.tsx index 2f7db1c6..a8b840ca 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -46,16 +46,12 @@ const defaultConfig: AppConfig = { showTreasureFoundLogs: true, showColors: false, showPacks: true, - showArticles: true, - showRecipes: true, feedIncludeVines: false, feedIncludePolls: false, feedIncludeTreasureGeocaches: false, feedIncludeTreasureFoundLogs: false, feedIncludeColors: false, feedIncludePacks: false, - feedIncludeArticles: false, - feedIncludeRecipes: false, }, nip85StatsPubkey: "5f68e85ee174102ca8978eef302129f081f03456c884185d5ec1c1224ab633ea", nip85OnlyMode: true, diff --git a/src/AppRouter.tsx b/src/AppRouter.tsx index e10be288..4ed160b3 100644 --- a/src/AppRouter.tsx +++ b/src/AppRouter.tsx @@ -1,5 +1,5 @@ import { BrowserRouter, Route, Routes } from "react-router-dom"; -import { Clapperboard, BarChart3, Palette, PartyPopper, BookOpen, ChefHat } from "lucide-react"; +import { Clapperboard, BarChart3, Palette, PartyPopper } from "lucide-react"; import { ScrollToTop } from "./components/ScrollToTop"; import Index from "./pages/Index"; @@ -12,7 +12,6 @@ import { HashtagPage } from "./pages/HashtagPage"; import { BookmarksPage } from "./pages/BookmarksPage"; import { KindFeedPage } from "./pages/KindFeedPage"; -import { ArticlesFeedPage } from "./pages/ArticlesFeedPage"; import { TreasuresPage } from "./pages/TreasuresPage"; import NotFound from "./pages/NotFound"; @@ -34,8 +33,6 @@ export function AppRouter() { } /> } />} /> } />} /> - } description="Long-form content on Nostr" />} /> - } description="Cooking recipes from zap.cooking" />} /> } /> diff --git a/src/components/ArticleCard.tsx b/src/components/ArticleCard.tsx deleted file mode 100644 index 9932121c..00000000 --- a/src/components/ArticleCard.tsx +++ /dev/null @@ -1,288 +0,0 @@ -import { Link, useNavigate } from 'react-router-dom'; -import { MessageCircle, Repeat2, Zap, MoreHorizontal, Clock, Tag } from 'lucide-react'; -import { Avatar, AvatarImage, AvatarFallback } from '@/components/ui/avatar'; -import { Skeleton } from '@/components/ui/skeleton'; -import { Card, CardContent } from '@/components/ui/card'; -import { Badge } from '@/components/ui/badge'; -import { ReactionButton } from '@/components/ReactionButton'; -import { RepostMenu } from '@/components/RepostMenu'; -import { useAuthor } from '@/hooks/useAuthor'; -import { useCurrentUser } from '@/hooks/useCurrentUser'; -import { useEventStats } from '@/hooks/useTrending'; -import { genUserName } from '@/lib/genUserName'; -import { timeAgo } from '@/lib/timeAgo'; -import { canZap } from '@/lib/canZap'; -import { cn } from '@/lib/utils'; -import { Nip05Badge } from '@/components/Nip05Badge'; -import { nip19 } from 'nostr-tools'; -import { useMemo, useState } from 'react'; -import type { NostrEvent } from '@nostrify/nostrify'; -import { NoteMoreMenu } from '@/components/NoteMoreMenu'; -import { ZapDialog } from '@/components/ZapDialog'; - -interface ArticleCardProps { - event: NostrEvent; - className?: string; - /** If true, hide action buttons (used for embeds). */ - compact?: boolean; -} - -/** Formats a sats amount into a compact human-readable string. */ -function formatSats(sats: number): string { - if (sats >= 1_000_000) return `${(sats / 1_000_000).toFixed(1).replace(/\.0$/, '')}M`; - if (sats >= 1_000) return `${(sats / 1_000).toFixed(1).replace(/\.0$/, '')}K`; - return sats.toString(); -} - -/** Gets a tag value by name. */ -function getTag(tags: string[][], name: string): string | undefined { - return tags.find(([n]) => n === name)?.[1]; -} - -/** Gets all tag values by name. */ -function getTags(tags: string[][], name: string): string[] { - return tags.filter(([n]) => n === name).map(([, v]) => v); -} - -/** Encodes the NIP-19 identifier for navigating to an event. */ -function encodeEventId(event: NostrEvent): string { - const dTag = getTag(event.tags, 'd'); - if (dTag) { - return nip19.naddrEncode({ kind: event.kind, pubkey: event.pubkey, identifier: dTag }); - } - return nip19.neventEncode({ id: event.id, author: event.pubkey }); -} - -/** Formats a timestamp into a readable date like "Feb 16, 2026". */ -function formatDate(timestamp: number): string { - const date = new Date(timestamp * 1000); - return date.toLocaleDateString('en-US', { - month: 'short', - day: 'numeric', - year: 'numeric', - }); -} - -/** Truncates text to a max length with ellipsis. */ -function truncate(text: string, maxLength: number): string { - if (text.length <= maxLength) return text; - return text.slice(0, maxLength).trim() + '…'; -} - -export function ArticleCard({ event, className, compact }: ArticleCardProps) { - const navigate = useNavigate(); - const { user } = useCurrentUser(); - const author = useAuthor(event.pubkey); - const metadata = author.data?.metadata; - const displayName = metadata?.name || genUserName(event.pubkey); - const nip05 = metadata?.nip05; - const npub = useMemo(() => nip19.npubEncode(event.pubkey), [event.pubkey]); - const encodedId = useMemo(() => encodeEventId(event), [event]); - const { data: stats } = useEventStats(event.id); - const [moreMenuOpen, setMoreMenuOpen] = useState(false); - - // Extract article metadata - const title = getTag(event.tags, 'title') || 'Untitled Article'; - const summary = getTag(event.tags, 'summary'); - const imageUrl = getTag(event.tags, 'image'); - const publishedAt = getTag(event.tags, 'published_at'); - const hashtags = getTags(event.tags, 't').slice(0, 5); - - // Determine if this is a recipe (has zapcooking tags) - const isRecipe = hashtags.some(tag => tag.toLowerCase().includes('zapcooking')); - - // Use published_at if available, otherwise use created_at - const displayDate = publishedAt ? parseInt(publishedAt) : event.created_at; - - // Check if the current user can zap this event's author - const canZapAuthor = user && canZap(metadata); - - // Handler to navigate to article detail - const handleCardClick = (e: React.MouseEvent) => { - const target = e.target as HTMLElement; - - // Don't navigate if clicking on interactive elements or dialogs - if ( - target.closest('button') || - target.closest('a') || - target.closest('[role="dialog"]') || - target.closest('[data-radix-dialog-overlay]') || - target.closest('[data-radix-dialog-content]') || - target.closest('[data-vaul-drawer]') || - target.closest('[data-vaul-drawer-overlay]') - ) { - return; - } - - navigate(`/${encodedId}`); - }; - - return ( -
- - - {/* Article image */} - {imageUrl && ( -
- {title} - {isRecipe && ( - - Recipe - - )} -
- )} - -
- {/* Author info */} -
- {author.isLoading ? ( - <> - - - - ) : ( - <> - e.stopPropagation()}> - - - - {displayName[0]?.toUpperCase()} - - - -
- e.stopPropagation()} - > - {displayName} - - {nip05 && ( - <> - · - - - )} -
- - )} -
- - {/* Article title */} -

- {title} -

- - {/* Article summary */} - {summary && ( -

- {summary} -

- )} - - {/* If no summary, show truncated content */} - {!summary && event.content && ( -

- {truncate(event.content.replace(/^#+\s+/gm, '').replace(/\n/g, ' '), 200)} -

- )} - - {/* Hashtags */} - {hashtags.length > 0 && ( -
- {hashtags.map((tag) => ( - e.stopPropagation()} - > - - {tag} - - ))} -
- )} - - {/* Metadata footer */} -
-
- - {formatDate(displayDate)} -
- - {/* Action buttons */} - {!compact && ( -
- - - - - - - - - {canZapAuthor && ( - - - - )} - - -
- )} -
-
-
-
- - -
- ); -} diff --git a/src/components/ArticleDetail.tsx b/src/components/ArticleDetail.tsx deleted file mode 100644 index f764d35c..00000000 --- a/src/components/ArticleDetail.tsx +++ /dev/null @@ -1,269 +0,0 @@ -import { Link } from 'react-router-dom'; -import { MessageCircle, Repeat2, Zap, MoreHorizontal, Clock, Tag, User, Calendar } from 'lucide-react'; -import { Avatar, AvatarImage, AvatarFallback } from '@/components/ui/avatar'; -import { Skeleton } from '@/components/ui/skeleton'; -import { Badge } from '@/components/ui/badge'; -import { Separator } from '@/components/ui/separator'; -import { ReactionButton } from '@/components/ReactionButton'; -import { RepostMenu } from '@/components/RepostMenu'; -import { useAuthor } from '@/hooks/useAuthor'; -import { useCurrentUser } from '@/hooks/useCurrentUser'; -import { useEventStats } from '@/hooks/useTrending'; -import { genUserName } from '@/lib/genUserName'; -import { canZap } from '@/lib/canZap'; -import { Nip05Badge } from '@/components/Nip05Badge'; -import { nip19 } from 'nostr-tools'; -import { useMemo, useState } from 'react'; -import type { NostrEvent } from '@nostrify/nostrify'; -import { NoteMoreMenu } from '@/components/NoteMoreMenu'; -import { ReplyComposeModal } from '@/components/ReplyComposeModal'; -import { ZapDialog } from '@/components/ZapDialog'; -import ReactMarkdown from 'react-markdown'; -import remarkGfm from 'remark-gfm'; - -interface ArticleDetailProps { - event: NostrEvent; -} - -/** Formats a sats amount into a compact human-readable string. */ -function formatSats(sats: number): string { - if (sats >= 1_000_000) return `${(sats / 1_000_000).toFixed(1).replace(/\.0$/, '')}M`; - if (sats >= 1_000) return `${(sats / 1_000).toFixed(1).replace(/\.0$/, '')}K`; - return sats.toString(); -} - -/** Gets a tag value by name. */ -function getTag(tags: string[][], name: string): string | undefined { - return tags.find(([n]) => n === name)?.[1]; -} - -/** Gets all tag values by name. */ -function getTags(tags: string[][], name: string): string[] { - return tags.filter(([n]) => n === name).map(([, v]) => v); -} - -/** Formats a timestamp into a full readable date. */ -function formatFullDate(timestamp: number): string { - const date = new Date(timestamp * 1000); - return date.toLocaleDateString('en-US', { - month: 'long', - day: 'numeric', - year: 'numeric', - }); -} - -export function ArticleDetail({ event }: ArticleDetailProps) { - const { user } = useCurrentUser(); - const author = useAuthor(event.pubkey); - const metadata = author.data?.metadata; - const displayName = metadata?.name || genUserName(event.pubkey); - const nip05 = metadata?.nip05; - const npub = useMemo(() => nip19.npubEncode(event.pubkey), [event.pubkey]); - const { data: stats } = useEventStats(event.id); - const [moreMenuOpen, setMoreMenuOpen] = useState(false); - const [replyOpen, setReplyOpen] = useState(false); - - // Extract article metadata - const title = getTag(event.tags, 'title') || 'Untitled Article'; - const summary = getTag(event.tags, 'summary'); - const imageUrl = getTag(event.tags, 'image'); - const publishedAt = getTag(event.tags, 'published_at'); - const hashtags = getTags(event.tags, 't'); - - // Determine if this is a recipe (has zapcooking tags) - const isRecipe = hashtags.some(tag => tag.toLowerCase().includes('zapcooking')); - - // Use published_at if available, otherwise use created_at - const displayDate = publishedAt ? parseInt(publishedAt) : event.created_at; - - // Check if the current user can zap this event's author - const canZapAuthor = user && canZap(metadata); - - return ( -
- {/* Header image */} - {imageUrl && ( -
- {title} - {isRecipe && ( - - 🍳 Recipe - - )} -
- )} - - {/* Article header */} -
-

{title}

- - {summary && ( -

{summary}

- )} - - {/* Author info */} -
- {author.isLoading ? ( - <> - -
- - -
- - ) : ( - <> - - - - - {displayName[0]?.toUpperCase()} - - - -
- - {displayName} - -
- {nip05 && ( - <> - - · - - )} -
- - {formatFullDate(displayDate)} -
-
-
- - )} -
- - {/* Hashtags */} - {hashtags.length > 0 && ( -
- {hashtags.map((tag) => ( - - - {tag} - - ))} -
- )} -
- - - - {/* Article content with markdown rendering */} - - - - - {/* Action buttons */} -
-
- - - - - - - - - {canZapAuthor && ( - - - - )} -
- - -
- - - -
- ); -} diff --git a/src/components/ContentSettings.tsx b/src/components/ContentSettings.tsx index 8ac0ac0a..04a7d6be 100644 --- a/src/components/ContentSettings.tsx +++ b/src/components/ContentSettings.tsx @@ -136,7 +136,7 @@ export function ContentSettings() { } // Import the internals from FeedSettingsForm (we'll need to export them) -import { Clapperboard, BarChart3, Palette, PartyPopper, BookOpen, ChefHat } from 'lucide-react'; +import { Clapperboard, BarChart3, Palette, PartyPopper } from 'lucide-react'; import { ChestIcon } from '@/components/icons/ChestIcon'; import { useFeedSettings } from '@/hooks/useFeedSettings'; import { useEncryptedSettings } from '@/hooks/useEncryptedSettings'; @@ -152,8 +152,6 @@ const ICONS: Record = { treasures: , colors: , packs: , - articles: , - recipes: , }; function KindBadge({ kind }: { kind: number }) { diff --git a/src/components/Feed.tsx b/src/components/Feed.tsx index a353255b..7c51dded 100644 --- a/src/components/Feed.tsx +++ b/src/components/Feed.tsx @@ -3,7 +3,6 @@ import { useInView } from 'react-intersection-observer'; import { useQueryClient } from '@tanstack/react-query'; import { ComposeBox } from '@/components/ComposeBox'; import { NoteCard } from '@/components/NoteCard'; -import { ArticleCard } from '@/components/ArticleCard'; import { PullToRefresh } from '@/components/PullToRefresh'; import { Skeleton } from '@/components/ui/skeleton'; import { Button } from '@/components/ui/button'; @@ -196,25 +195,13 @@ export function Feed() { ) : feedItems.length > 0 ? (
- {feedItems.map((item: FeedItem) => { - // Use ArticleCard for kind 30023 (long-form content) - if (item.event.kind === 30023) { - return ( -
- -
- ); - } - - // Use NoteCard for all other kinds - return ( - - ); - })} + {feedItems.map((item: FeedItem) => ( + + ))} {/* Infinite scroll trigger */} {hasNextPage && (
diff --git a/src/components/LeftSidebar.tsx b/src/components/LeftSidebar.tsx index 2105dbdc..0e21148d 100644 --- a/src/components/LeftSidebar.tsx +++ b/src/components/LeftSidebar.tsx @@ -1,6 +1,6 @@ import { useState, useMemo } from 'react'; import { Link, useLocation, useNavigate } from 'react-router-dom'; -import { Home, Bell, Search, Clapperboard, BarChart3, Palette, PartyPopper, User, Settings, Bookmark, UserPlus, LogOut, Check, Moon, Sun, Cat, Heart, ChevronDown, BookOpen, ChefHat } from 'lucide-react'; +import { Home, Bell, Search, Clapperboard, BarChart3, Palette, PartyPopper, User, Settings, Bookmark, UserPlus, LogOut, Check, Moon, Sun, Cat, Heart, ChevronDown } from 'lucide-react'; import { ChestIcon } from '@/components/icons/ChestIcon'; import { Button } from '@/components/ui/button'; import { Avatar, AvatarImage, AvatarFallback } from '@/components/ui/avatar'; @@ -69,8 +69,6 @@ export function LeftSidebar() { treasures: , colors: , packs: , - articles: , - recipes: , }; const navItems = useMemo(() => { diff --git a/src/contexts/AppContext.ts b/src/contexts/AppContext.ts index c266f894..21e4c694 100644 --- a/src/contexts/AppContext.ts +++ b/src/contexts/AppContext.ts @@ -25,10 +25,6 @@ export interface FeedSettings { showColors: boolean; /** Show Follow Packs (kind 39089) link in sidebar */ showPacks: boolean; - /** Show Articles (kind 30023) link in sidebar */ - showArticles: boolean; - /** Show Recipes (kind 30023 with zapcooking tag) link in sidebar */ - showRecipes: boolean; /** Include Vines in the follows/global feed */ feedIncludeVines: boolean; /** Include Polls in the follows/global feed */ @@ -41,10 +37,6 @@ export interface FeedSettings { feedIncludeColors: boolean; /** Include Follow Packs in the follows/global feed */ feedIncludePacks: boolean; - /** Include Articles in the follows/global feed */ - feedIncludeArticles: boolean; - /** Include Recipes in the follows/global feed */ - feedIncludeRecipes: boolean; } export interface AppConfig { diff --git a/src/lib/extraKinds.ts b/src/lib/extraKinds.ts index 8ffb5f25..f709c712 100644 --- a/src/lib/extraKinds.ts +++ b/src/lib/extraKinds.ts @@ -98,24 +98,6 @@ export const EXTRA_KINDS: ExtraKindDef[] = [ route: 'packs', addressable: true, }, - { - kind: 30023, - showKey: 'showArticles', - feedKey: 'feedIncludeArticles', - label: 'Articles', - description: 'Long-form content', - route: 'articles', - addressable: true, - }, - { - kind: 30023, - showKey: 'showRecipes', - feedKey: 'feedIncludeRecipes', - label: 'Recipes', - description: 'Cooking recipes', - route: 'recipes', - addressable: true, - }, ]; /** Return the kind numbers the user has opted to include in mixed feeds. */ diff --git a/src/pages/ArticlesFeedPage.tsx b/src/pages/ArticlesFeedPage.tsx deleted file mode 100644 index 67ef0fda..00000000 --- a/src/pages/ArticlesFeedPage.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import { useSeoMeta } from '@unhead/react'; -import { ArrowLeft } from 'lucide-react'; -import { Link } from 'react-router-dom'; -import { MainLayout } from '@/components/MainLayout'; -import { ArticleCard } from '@/components/ArticleCard'; -import { Skeleton } from '@/components/ui/skeleton'; -import { Card, CardContent } from '@/components/ui/card'; -import { useStreamKind } from '@/hooks/useStreamKind'; -import { cn, STICKY_HEADER_CLASS } from '@/lib/utils'; - -interface ArticlesFeedPageProps { - /** Optional tag filter (e.g., "zapcooking" for recipes) */ - tagFilter?: string; - title: string; - icon?: React.ReactNode; - description?: string; -} - -export function ArticlesFeedPage({ tagFilter, title, icon, description }: ArticlesFeedPageProps) { - useSeoMeta({ - title: `${title} | Mew`, - description: description || `${title} on Nostr`, - }); - - const { events, isLoading } = useStreamKind(30023); - - // Filter by tag if specified - const filteredEvents = tagFilter - ? events.filter((event) => - event.tags.some(([name, value]) => - name === 't' && value.toLowerCase().includes(tagFilter.toLowerCase()) - ) - ) - : events; - - return ( - -
- {/* Header */} -
- - - -
- {icon} -
-

{title}

- {description &&

{description}

} -
-
-
- - {/* Feed */} - {isLoading && filteredEvents.length === 0 ? ( -
- {Array.from({ length: 3 }).map((_, i) => ( - - ))} -
- ) : filteredEvents.length > 0 ? ( -
- {filteredEvents.map((event) => ( - - ))} -
- ) : ( -
- - -
-

- {tagFilter - ? `No ${title.toLowerCase()} found yet. Check back soon!` - : 'No articles found yet. Check back soon!' - } -

-
-
-
-
- )} -
-
- ); -} - -function ArticleSkeleton() { - return ( - - - {/* Image skeleton */} - - -
- {/* Author skeleton */} -
- - -
- - {/* Title skeleton */} - - - - {/* Summary skeleton */} -
- - - -
- - {/* Hashtags skeleton */} -
- - - -
- - {/* Footer skeleton */} -
- -
- - - - -
-
-
-
-
- ); -} diff --git a/src/pages/PostDetailPage.tsx b/src/pages/PostDetailPage.tsx index c7f48aa9..d26dc48e 100644 --- a/src/pages/PostDetailPage.tsx +++ b/src/pages/PostDetailPage.tsx @@ -28,15 +28,10 @@ import { FoundLogContent } from '@/components/FoundLogContent'; import { ColorMomentContent } from '@/components/ColorMomentContent'; import { FollowPackContent } from '@/components/FollowPackContent'; import { FollowPackDetailContent } from '@/components/FollowPackDetailContent'; -import { ArticleDetail } from '@/components/ArticleDetail'; import { useEvent, useAddrEvent, type AddrCoords } from '@/hooks/useEvent'; /** Kinds that get the full follow-pack detail view. */ const FOLLOW_PACK_KINDS = new Set([30000, 39089]); - -/** Kinds that get the article detail view (long-form content). */ -const ARTICLE_KINDS = new Set([30023]); - import { useReplies } from '@/hooks/useReplies'; import { useAuthor } from '@/hooks/useAuthor'; import { useCurrentUser } from '@/hooks/useCurrentUser'; @@ -223,19 +218,6 @@ export function PostDetailPage({ eventId, relays, authorHint }: PostDetailPagePr ); } - // Articles (kind 30023) get the article detail view with markdown rendering - if (ARTICLE_KINDS.has(resolvedEvent.kind)) { - return ( - - -
- -
-
-
- ); - } - return ( @@ -292,19 +274,6 @@ export function AddrPostDetailPage({ addr, relays }: AddrPostDetailPageProps) { ); } - // Articles (kind 30023) get the article detail view with markdown rendering - if (ARTICLE_KINDS.has(resolvedEvent.kind)) { - return ( - - -
- -
-
-
- ); - } - return ( diff --git a/src/test/TestApp.tsx b/src/test/TestApp.tsx index 6e210345..d481097b 100644 --- a/src/test/TestApp.tsx +++ b/src/test/TestApp.tsx @@ -38,16 +38,12 @@ export function TestApp({ children }: TestAppProps) { showTreasureFoundLogs: true, showColors: false, showPacks: true, - showArticles: true, - showRecipes: true, feedIncludeVines: false, feedIncludePolls: false, feedIncludeTreasureGeocaches: false, feedIncludeTreasureFoundLogs: false, feedIncludeColors: false, feedIncludePacks: false, - feedIncludeArticles: false, - feedIncludeRecipes: false, }, nip85StatsPubkey: '5f68e85ee174102ca8978eef302129f081f03456c884185d5ec1c1224ab633ea', nip85OnlyMode: false,