import NoteList, { TNoteListRef } from '@/components/NoteList' import Tabs from '@/components/Tabs' import { useKindFilter } from '@/providers/KindFilterProvider' import { useUserTrust } from '@/providers/UserTrustProvider' import storage from '@/services/local-storage.service' import { TFeedSubRequest, TNoteListMode } from '@/types' import { useMemo, useRef, useState } from 'react' import KindFilter from '../KindFilter' import { RefreshButton } from '../RefreshButton' import { isTouchDevice } from '@/lib/utils' export default function NormalFeed({ subRequests, areAlgoRelays = false, isMainFeed = false }: { subRequests: TFeedSubRequest[] areAlgoRelays?: boolean isMainFeed?: boolean }) { const { hideUntrustedNotes } = useUserTrust() const { showKinds } = useKindFilter() const [temporaryShowKinds, setTemporaryShowKinds] = useState(showKinds) const [listMode, setListMode] = useState(() => storage.getNoteListMode()) const supportTouch = useMemo(() => isTouchDevice(), []) const noteListRef = useRef(null) const handleListModeChange = (mode: TNoteListMode) => { setListMode(mode) if (isMainFeed) { storage.setNoteListMode(mode) } noteListRef.current?.scrollToTop('smooth') } const handleShowKindsChange = (newShowKinds: number[]) => { setTemporaryShowKinds(newShowKinds) noteListRef.current?.scrollToTop() } return ( <> { handleListModeChange(listMode as TNoteListMode) }} options={ <> {!supportTouch && noteListRef.current?.refresh()} />} } /> ) }