|
|
|
@ -7,6 +7,7 @@ import { isSafari } from '@/lib/utils' |
|
|
|
import { useMuteList } from '@/providers/MuteListProvider' |
|
|
|
import { useMuteList } from '@/providers/MuteListProvider' |
|
|
|
import { useNostr } from '@/providers/NostrProvider' |
|
|
|
import { useNostr } from '@/providers/NostrProvider' |
|
|
|
import { useScreenSize } from '@/providers/ScreenSizeProvider' |
|
|
|
import { useScreenSize } from '@/providers/ScreenSizeProvider' |
|
|
|
|
|
|
|
import { useUserTrust } from '@/providers/UserTrustProvider' |
|
|
|
import client from '@/services/client.service' |
|
|
|
import client from '@/services/client.service' |
|
|
|
import storage from '@/services/local-storage.service' |
|
|
|
import storage from '@/services/local-storage.service' |
|
|
|
import relayInfoService from '@/services/relay-info.service' |
|
|
|
import relayInfoService from '@/services/relay-info.service' |
|
|
|
@ -19,8 +20,6 @@ import PullToRefresh from 'react-simple-pull-to-refresh' |
|
|
|
import NoteCard, { NoteCardLoadingSkeleton } from '../NoteCard' |
|
|
|
import NoteCard, { NoteCardLoadingSkeleton } from '../NoteCard' |
|
|
|
import { PictureNoteCardMasonry } from '../PictureNoteCardMasonry' |
|
|
|
import { PictureNoteCardMasonry } from '../PictureNoteCardMasonry' |
|
|
|
import Tabs from '../Tabs' |
|
|
|
import Tabs from '../Tabs' |
|
|
|
import { useUserTrust } from '@/providers/UserTrustProvider' |
|
|
|
|
|
|
|
import { useFeed } from '@/providers/FeedProvider' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const LIMIT = 100 |
|
|
|
const LIMIT = 100 |
|
|
|
const ALGO_LIMIT = 500 |
|
|
|
const ALGO_LIMIT = 500 |
|
|
|
@ -34,7 +33,8 @@ export default function NoteList({ |
|
|
|
filterMutedNotes = true, |
|
|
|
filterMutedNotes = true, |
|
|
|
needCheckAlgoRelay = false, |
|
|
|
needCheckAlgoRelay = false, |
|
|
|
isMainFeed = false, |
|
|
|
isMainFeed = false, |
|
|
|
topSpace = 0 |
|
|
|
topSpace = 0, |
|
|
|
|
|
|
|
skipTrustCheck = false |
|
|
|
}: { |
|
|
|
}: { |
|
|
|
relayUrls?: string[] |
|
|
|
relayUrls?: string[] |
|
|
|
filter?: Filter |
|
|
|
filter?: Filter |
|
|
|
@ -44,6 +44,7 @@ export default function NoteList({ |
|
|
|
needCheckAlgoRelay?: boolean |
|
|
|
needCheckAlgoRelay?: boolean |
|
|
|
isMainFeed?: boolean |
|
|
|
isMainFeed?: boolean |
|
|
|
topSpace?: number |
|
|
|
topSpace?: number |
|
|
|
|
|
|
|
skipTrustCheck?: boolean |
|
|
|
}) { |
|
|
|
}) { |
|
|
|
const { t } = useTranslation() |
|
|
|
const { t } = useTranslation() |
|
|
|
const { isLargeScreen } = useScreenSize() |
|
|
|
const { isLargeScreen } = useScreenSize() |
|
|
|
@ -63,13 +64,12 @@ export default function NoteList({ |
|
|
|
const bottomRef = useRef<HTMLDivElement | null>(null) |
|
|
|
const bottomRef = useRef<HTMLDivElement | null>(null) |
|
|
|
const topRef = useRef<HTMLDivElement | null>(null) |
|
|
|
const topRef = useRef<HTMLDivElement | null>(null) |
|
|
|
const { isUserTrusted, hideUntrustedNotes } = useUserTrust() |
|
|
|
const { isUserTrusted, hideUntrustedNotes } = useUserTrust() |
|
|
|
const { feedInfo } = useFeed() |
|
|
|
|
|
|
|
const filteredNewEvents = useMemo(() => { |
|
|
|
const filteredNewEvents = useMemo(() => { |
|
|
|
return newEvents.filter((event: Event) => { |
|
|
|
return newEvents.filter((event: Event) => { |
|
|
|
return ( |
|
|
|
return ( |
|
|
|
(!filterMutedNotes || !mutePubkeys.includes(event.pubkey)) && |
|
|
|
(!filterMutedNotes || !mutePubkeys.includes(event.pubkey)) && |
|
|
|
(listMode !== 'posts' || !isReplyNoteEvent(event)) && |
|
|
|
(listMode !== 'posts' || !isReplyNoteEvent(event)) && |
|
|
|
(!hideUntrustedNotes || isUserTrusted(event.pubkey)) |
|
|
|
(skipTrustCheck || !hideUntrustedNotes || isUserTrusted(event.pubkey)) |
|
|
|
) |
|
|
|
) |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, [newEvents, listMode, filterMutedNotes, mutePubkeys, hideUntrustedNotes]) |
|
|
|
}, [newEvents, listMode, filterMutedNotes, mutePubkeys, hideUntrustedNotes]) |
|
|
|
@ -346,11 +346,11 @@ export default function NoteList({ |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
{events |
|
|
|
{events |
|
|
|
.slice(0, showCount) |
|
|
|
.slice(0, showCount) |
|
|
|
.filter((event: Event) => |
|
|
|
.filter( |
|
|
|
|
|
|
|
(event: Event) => |
|
|
|
(listMode !== 'posts' || !isReplyNoteEvent(event)) && |
|
|
|
(listMode !== 'posts' || !isReplyNoteEvent(event)) && |
|
|
|
(author |
|
|
|
(skipTrustCheck || !hideUntrustedNotes || isUserTrusted(event.pubkey)) |
|
|
|
|| (feedInfo.feedType !== 'relay' && feedInfo.feedType !== 'relays') |
|
|
|
) |
|
|
|
|| !hideUntrustedNotes || isUserTrusted(event.pubkey))) |
|
|
|
|
|
|
|
.map((event) => ( |
|
|
|
.map((event) => ( |
|
|
|
<NoteCard |
|
|
|
<NoteCard |
|
|
|
key={event.id} |
|
|
|
key={event.id} |
|
|
|
|