import { useQuery } from '@tanstack/react-query'; import { useCallback } from 'react'; import { UserBlock } from '@app/space//components/blocks/user'; import { AddBlock } from '@app/space/components/add'; import { FeedBlock } from '@app/space/components/blocks/feed'; import { FollowingBlock } from '@app/space/components/blocks/following'; import { HashtagBlock } from '@app/space/components/blocks/hashtag'; import { ImageBlock } from '@app/space/components/blocks/image'; import { ThreadBlock } from '@app/space/components/blocks/thread'; import { getBlocks } from '@libs/storage'; import { LoaderIcon } from '@shared/icons'; import { Block } from '@utils/types'; export function SpaceScreen() { const { status, data: blocks, isFetching, } = useQuery( ['blocks'], async () => { return await getBlocks(); }, { staleTime: Infinity, refetchOnMount: false, refetchOnReconnect: false, refetchOnWindowFocus: false, } ); const renderBlock = useCallback( (block: Block) => { switch (block.kind) { case 0: return ; case 1: return ; case 2: return ; case 3: return ; case 5: return ; default: break; } }, [blocks] ); return (
{status === 'loading' ? (
) : ( blocks.map((block: Block) => renderBlock(block)) )} {isFetching && (
)}
); }