- {events
- .slice(0, showCount)
- .filter(
- (event: Event) =>
- (listMode !== 'posts' || !isReplyNoteEvent(event)) &&
- (skipTrustCheck || !hideUntrustedNotes || isUserTrusted(event.pubkey))
- )
- .map((event) => (
-
- ))}
-
- )}
+ {events
+ .slice(0, showCount)
+ .filter(
+ (event: Event) =>
+ (listMode !== 'posts' || !isReplyNoteEvent(event)) &&
+ (skipTrustCheck || !hideUntrustedNotes || isUserTrusted(event.pubkey))
+ )
+ .map((event) => (
+
diff --git a/src/components/PictureContent/index.tsx b/src/components/PictureContent/index.tsx
deleted file mode 100644
index 40d58cc..0000000
--- a/src/components/PictureContent/index.tsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import {
- EmbeddedEmojiParser,
- EmbeddedHashtagParser,
- EmbeddedLNInvoiceParser,
- EmbeddedMentionParser,
- EmbeddedNormalUrlParser,
- EmbeddedWebsocketUrlParser,
- parseContent
-} from '@/lib/content-parser'
-import { getImageInfosFromEvent } from '@/lib/event'
-import { getEmojiInfosFromEmojiTags } from '@/lib/tag'
-import { cn } from '@/lib/utils'
-import { Event } from 'nostr-tools'
-import { memo, useMemo } from 'react'
-import {
- EmbeddedHashtag,
- EmbeddedLNInvoice,
- EmbeddedMention,
- EmbeddedNormalUrl,
- EmbeddedWebsocketUrl
-} from '../Embedded'
-import Emoji from '../Emoji'
-import { ImageCarousel } from '../ImageCarousel'
-
-const PictureContent = memo(({ event, className }: { event: Event; className?: string }) => {
- const images = useMemo(() => getImageInfosFromEvent(event), [event])
-
- const nodes = parseContent(event.content, [
- EmbeddedNormalUrlParser,
- EmbeddedLNInvoiceParser,
- EmbeddedWebsocketUrlParser,
- EmbeddedHashtagParser,
- EmbeddedMentionParser,
- EmbeddedEmojiParser
- ])
-
- const emojiInfos = getEmojiInfosFromEmojiTags(event.tags)
-
- return (
-
-
-
- {nodes.map((node, index) => {
- if (node.type === 'text') {
- return node.data
- }
- if (node.type === 'url') {
- return
- }
- if (node.type === 'invoice') {
- return
- }
- if (node.type === 'websocket-url') {
- return
- }
- if (node.type === 'hashtag') {
- return
- }
- if (node.type === 'mention') {
- return
- }
- if (node.type === 'emoji') {
- const shortcode = node.data.split(':')[1]
- const emoji = emojiInfos.find((e) => e.shortcode === shortcode)
- if (!emoji) return node.data
- return
- }
- })}
-
-
- )
-})
-PictureContent.displayName = 'PictureContent'
-export default PictureContent
diff --git a/src/components/PictureNote/index.tsx b/src/components/PictureNote/index.tsx
deleted file mode 100644
index f3881f1..0000000
--- a/src/components/PictureNote/index.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import { getUsingClient } from '@/lib/event'
-import { Event } from 'nostr-tools'
-import { useMemo } from 'react'
-import { FormattedTimestamp } from '../FormattedTimestamp'
-import NoteStats from '../NoteStats'
-import UserAvatar from '../UserAvatar'
-import Username from '../Username'
-import PictureContent from '../PictureContent'
-import NoteOptions from '../NoteOptions'
-
-export default function PictureNote({
- event,
- className,
- hideStats = false,
- fetchNoteStats = false
-}: {
- event: Event
- className?: string
- hideStats?: boolean
- fetchNoteStats?: boolean
-}) {
- const usingClient = useMemo(() => getUsingClient(event), [event])
-
- return (
-
-
-
-
-
-
-
- {usingClient && (
-
using {usingClient}
- )}
-
-
-
-
-
-
-
-
-
- {!hideStats && (
-
- )}
-
- )
-}
diff --git a/src/components/PictureNoteCard/index.tsx b/src/components/PictureNoteCard/index.tsx
deleted file mode 100644
index b231579..0000000
--- a/src/components/PictureNoteCard/index.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-import { EmbeddedHashtagParser, EmbeddedMentionParser, parseContent } from '@/lib/content-parser'
-import { getImageInfosFromEvent } from '@/lib/event'
-import { toNote } from '@/lib/link'
-import { tagNameEquals } from '@/lib/tag'
-import { cn } from '@/lib/utils'
-import { useSecondaryPage } from '@/PageManager'
-import { Images } from 'lucide-react'
-import { Event } from 'nostr-tools'
-import { useMemo } from 'react'
-import { EmbeddedHashtag, EmbeddedMention } from '../Embedded'
-import Image from '../Image'
-import LikeButton from '../NoteStats/LikeButton'
-import UserAvatar from '../UserAvatar'
-import Username from '../Username'
-
-export default function PictureNoteCard({
- event,
- className
-}: {
- event: Event
- className?: string
-}) {
- const { push } = useSecondaryPage()
- const images = useMemo(() => getImageInfosFromEvent(event), [event])
- const title = useMemo(() => {
- const nodes = parseContent(event.tags.find(tagNameEquals('title'))?.[1] ?? event.content, [
- EmbeddedMentionParser,
- EmbeddedHashtagParser
- ])
- return nodes.map((node, index) => {
- if (node.type === 'text') {
- return node.data
- }
- if (node.type === 'mention') {
- return
- }
- if (node.type === 'hashtag') {
- return
- }
- })
- }, [event])
- if (!images.length) return null
-
- return (
-
push(toNote(event))}>
-
- {images.length > 1 && (
-
-
-
- )}
-
-
- )
-}
diff --git a/src/components/PictureNoteCardMasonry/index.tsx b/src/components/PictureNoteCardMasonry/index.tsx
deleted file mode 100644
index 8026ef1..0000000
--- a/src/components/PictureNoteCardMasonry/index.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import { cn } from '@/lib/utils'
-import { Event } from 'nostr-tools'
-import { useMemo } from 'react'
-import PictureNoteCard from '../PictureNoteCard'
-
-export function PictureNoteCardMasonry({
- events,
- columnCount,
- className
-}: {
- events: Event[]
- columnCount: 2 | 3
- className?: string
-}) {
- const columns = useMemo(() => {
- const newColumns: React.ReactNode[][] = Array.from({ length: columnCount }, () => [])
- events.forEach((event, i) => {
- newColumns[i % columnCount].push(
-
- )
- })
- return newColumns
- }, [events, columnCount])
-
- return (
-
- {columns.map((column, i) => (
-
- {column}
-
- ))}
-
- )
-}
diff --git a/src/components/QuoteList/index.tsx b/src/components/QuoteList/index.tsx
index 9f42797..ce240be 100644
--- a/src/components/QuoteList/index.tsx
+++ b/src/components/QuoteList/index.tsx
@@ -135,7 +135,7 @@ export default function QuoteList({ event, className }: { event: Event; classNam
diff --git a/src/components/ui/carousel.tsx b/src/components/ui/carousel.tsx
deleted file mode 100644
index 103226e..0000000
--- a/src/components/ui/carousel.tsx
+++ /dev/null
@@ -1,233 +0,0 @@
-import * as React from 'react'
-import useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react'
-import { ArrowLeft, ArrowRight } from 'lucide-react'
-
-import { cn } from '@/lib/utils'
-import { Button } from '@/components/ui/button'
-
-type CarouselApi = UseEmblaCarouselType[1]
-type UseCarouselParameters = Parameters