diff --git a/packages/app/src/Element/Deck/Articles.tsx b/packages/app/src/Element/Deck/Articles.tsx index 8c7eff25..7ada5d01 100644 --- a/packages/app/src/Element/Deck/Articles.tsx +++ b/packages/app/src/Element/Deck/Articles.tsx @@ -1,15 +1,21 @@ import { NostrLink } from "@snort/system"; +import { useReactions } from "@snort/system-react"; + import { useArticles } from "Feed/ArticlesFeed"; import { orderDescending } from "SnortUtils"; import Note from "../Event/Note"; -import { useReactions } from "Feed/Reactions"; import { useContext } from "react"; import { DeckContext } from "Pages/DeckLayout"; export default function Articles() { const data = useArticles(); const deck = useContext(DeckContext); - const related = useReactions("articles:reactions", data.data?.map(v => NostrLink.fromEvent(v)) ?? []); + const related = useReactions( + "articles:reactions", + data.data?.map(v => NostrLink.fromEvent(v)) ?? [], + undefined, + true, + ); return ( <> diff --git a/packages/app/src/Element/Event/NostrFileHeader.tsx b/packages/app/src/Element/Event/NostrFileHeader.tsx index 94d634fe..30656d0b 100644 --- a/packages/app/src/Element/Event/NostrFileHeader.tsx +++ b/packages/app/src/Element/Event/NostrFileHeader.tsx @@ -1,8 +1,8 @@ import { FormattedMessage } from "react-intl"; import { NostrEvent, NostrLink } from "@snort/system"; +import { useEventFeed } from "@snort/system-react"; import { findTag } from "SnortUtils"; -import { useEventFeed } from "Feed/EventFeed"; import PageSpinner from "Element/PageSpinner"; import Reveal from "Element/Event/Reveal"; import { MediaElement } from "Element/Embed/MediaElement"; diff --git a/packages/app/src/Element/Event/NoteQuote.tsx b/packages/app/src/Element/Event/NoteQuote.tsx index cba78dcb..e2d7c418 100644 --- a/packages/app/src/Element/Event/NoteQuote.tsx +++ b/packages/app/src/Element/Event/NoteQuote.tsx @@ -1,5 +1,6 @@ -import { useEventFeed } from "Feed/EventFeed"; import { NostrLink } from "@snort/system"; +import { useEventFeed } from "@snort/system-react"; + import Note from "Element/Event/Note"; import PageSpinner from "Element/PageSpinner"; diff --git a/packages/app/src/Element/Feed/Timeline.tsx b/packages/app/src/Element/Feed/Timeline.tsx index c8c52d08..28dae201 100644 --- a/packages/app/src/Element/Feed/Timeline.tsx +++ b/packages/app/src/Element/Feed/Timeline.tsx @@ -1,16 +1,13 @@ import "./Timeline.css"; import { FormattedMessage } from "react-intl"; import { useCallback, useMemo } from "react"; -import { useInView } from "react-intersection-observer"; -import { TaggedNostrEvent, EventKind, u256 } from "@snort/system"; +import { TaggedNostrEvent, EventKind } from "@snort/system"; -import Icon from "Icons/Icon"; import { dedupeByPubkey, findTag } from "SnortUtils"; -import ProfileImage from "Element/User/ProfileImage"; import useTimelineFeed, { TimelineFeed, TimelineSubject } from "Feed/TimelineFeed"; -import Note from "Element/Event/Note"; import useModeration from "Hooks/useModeration"; import { LiveStreams } from "Element/LiveStreams"; +import { TimelineRenderer } from "./TimelineFragment"; export interface TimelineProps { postsOnly: boolean; @@ -37,8 +34,6 @@ const Timeline = (props: TimelineProps) => { const feed: TimelineFeed = useTimelineFeed(props.subject, feedOptions); const { muted, isMuted } = useModeration(); - const { ref, inView } = useInView(); - const filterPosts = useCallback( (nts: readonly TaggedNostrEvent[]) => { const a = [...nts.filter(a => a.kind !== EventKind.LiveEvent)]; @@ -56,12 +51,6 @@ const Timeline = (props: TimelineProps) => { const latestFeed = useMemo(() => { return filterPosts(feed.latest ?? []).filter(a => !mainFeed.some(b => b.id === a.id)); }, [feed, filterPosts]); - const relatedFeed = useCallback( - (id: u256) => { - return (feed.related ?? []).filter(a => findTag(a, "e") === id); - }, - [feed.related], - ); const liveStreams = useMemo(() => { return (feed.main ?? []).filter(a => a.kind === EventKind.LiveEvent && findTag(a, "status") === "live"); }, [feed]); @@ -80,42 +69,12 @@ const Timeline = (props: TimelineProps) => { return ( <> - {latestFeed.length > 0 && ( - <> -
onShowLatest()} ref={ref}> - {latestAuthors.slice(0, 3).map(p => { - return ; - })} - - -
- {!inView && ( -
onShowLatest(true)}> - {latestAuthors.slice(0, 3).map(p => { - return ; - })} - - -
- )} - - )} - {mainFeed.map(e => ( - - ))} + onShowLatest(t)} + /> {(props.loadMore === undefined || props.loadMore === true) && (