diff --git a/packages/app/src/Element/Event/NoteInner.tsx b/packages/app/src/Element/Event/NoteInner.tsx index ecb6fd5c..8a4d625a 100644 --- a/packages/app/src/Element/Event/NoteInner.tsx +++ b/packages/app/src/Element/Event/NoteInner.tsx @@ -39,8 +39,13 @@ export function NoteInner(props: NoteProps) { const { isEventMuted } = useModeration(); const { ref, inView } = useInView({ triggerOnce: true, rootMargin: "2000px" }); - const { reactions, reposts, deletions, zaps } = useEventReactions(NostrLink.fromEvent(ev), related); const login = useLogin(); + const { preferences } = useLogin(s => ({ preferences: s.appData.item.preferences })); + const { reactions, reposts, deletions, zaps } = preferences.lowDataMode? {reactions:{ + all: [], + positive: [], + negative: [], + }, reposts:[], deletions:[], zaps:[]} : useEventReactions(NostrLink.fromEvent(ev), related); const { pinned, bookmarked } = useLogin(); const { publisher, system } = useEventPublisher(); const [translated, setTranslated] = useState(); diff --git a/packages/app/src/Feed/ThreadFeed.ts b/packages/app/src/Feed/ThreadFeed.ts index 91c1a91d..1049d853 100644 --- a/packages/app/src/Feed/ThreadFeed.ts +++ b/packages/app/src/Feed/ThreadFeed.ts @@ -1,10 +1,12 @@ import { useEffect, useMemo, useState } from "react"; import { EventKind, NostrLink, RequestBuilder, NoteCollection, EventExt } from "@snort/system"; import { useReactions, useRequestBuilder } from "@snort/system-react"; +import useLogin from "@/Hooks/useLogin"; export default function useThreadFeed(link: NostrLink) { const [root, setRoot] = useState(); const [allEvents, setAllEvents] = useState>([]); + const { preferences } = useLogin(s => ({ preferences: s.appData.item.preferences })); const sub = useMemo(() => { const sub = new RequestBuilder(`thread:${link.id.slice(0, 12)}`); @@ -62,7 +64,7 @@ export default function useThreadFeed(link: NostrLink) { } }, [store.data?.length]); - const reactions = useReactions(`thread:${link.id.slice(0, 12)}:reactions`, [link, ...allEvents]); + const reactions = preferences.lowDataMode ? [] :useReactions(`thread:${link.id.slice(0, 12)}:reactions`, [link, ...allEvents]); return { thread: store.data ?? [], diff --git a/packages/app/src/Feed/TimelineFeed.ts b/packages/app/src/Feed/TimelineFeed.ts index 0f702e9a..3421d07c 100644 --- a/packages/app/src/Feed/TimelineFeed.ts +++ b/packages/app/src/Feed/TimelineFeed.ts @@ -131,7 +131,7 @@ export default function useTimelineFeed(subject: TimelineSubject, options: Timel }, [pref.autoShowLatest, createBuilder]); const latest = useRequestBuilder(NoteCollection, subRealtime); - const reactions = useReactions(`${sub?.id}-reactions`, main.data?.map(a => NostrLink.fromEvent(a)) ?? []); + const reactions = pref.lowDataMode? [] : useReactions(`${sub?.id}-reactions`, main.data?.map(a => NostrLink.fromEvent(a)) ?? []); return { main: main.data, diff --git a/packages/app/src/Hooks/useThreadContext.tsx b/packages/app/src/Hooks/useThreadContext.tsx index 537bb363..5897ddc8 100644 --- a/packages/app/src/Hooks/useThreadContext.tsx +++ b/packages/app/src/Hooks/useThreadContext.tsx @@ -5,6 +5,7 @@ import useThreadFeed from "@/Feed/ThreadFeed"; import { ReactNode, createContext, useMemo, useState } from "react"; import { useLocation } from "react-router-dom"; import useModeration from "./useModeration"; +import useLogin from "./useLogin"; export interface ThreadContext { current: string; @@ -38,6 +39,7 @@ export function ThreadContextWrapper({ link, children }: { link: NostrLink; chil const [currentId, setCurrentId] = useState(unwrap(link.toEventTag())[1]); const feed = useThreadFeed(link); const { isBlocked } = useModeration(); + const { preferences } = useLogin(s => ({ preferences: s.appData.item.preferences })); const chains = useMemo(() => { const chains = new Map>(); @@ -79,7 +81,7 @@ export function ThreadContextWrapper({ link, children }: { link: NostrLink; chil current: currentId, root, chains, - reactions: feed.reactions, + reactions: preferences.lowDataMode? [] : feed.reactions, data: feed.thread, setCurrent: v => setCurrentId(v), };