import { useCallback, useEffect } from 'react'; import { AddWidgetButton } from '@app/space/components/button'; import { FeedWidgetForm } from '@app/space/components/forms/feed'; import { HashTagWidgetForm } from '@app/space/components/forms/hashtag'; import { ArticleWidget } from '@app/space/components/widgets/article'; import { FeedWidget } from '@app/space/components/widgets/feed'; import { FileWidget } from '@app/space/components/widgets/file'; import { HashtagWidget } from '@app/space/components/widgets/hashtag'; import { NetworkWidget } from '@app/space/components/widgets/network'; import { ThreadBlock } from '@app/space/components/widgets/thread'; import { TrendingNotesWidget } from '@app/space/components/widgets/trendingNotes'; import { TrendingProfilesWidget } from '@app/space/components/widgets/trendingProfile'; import { UserWidget } from '@app/space/components/widgets/user'; import { useStorage } from '@libs/storage/provider'; import { LoaderIcon } from '@shared/icons'; import { WidgetKinds, useWidgets } from '@stores/widgets'; import { Widget } from '@utils/types'; export function SpaceScreen() { const { db } = useStorage(); const [widgets, fetchWidgets] = useWidgets((state) => [ state.widgets, state.fetchWidgets, ]); const renderItem = useCallback( (widget: Widget) => { if (!widget) return; switch (widget.kind) { case WidgetKinds.feed: return ; case WidgetKinds.thread: return ; case WidgetKinds.hashtag: return ; case WidgetKinds.user: return ; case WidgetKinds.trendingProfiles: return ; case WidgetKinds.trendingNotes: return ; case WidgetKinds.network: return ; case WidgetKinds.article: return ; case WidgetKinds.file: return ; case WidgetKinds.xhashtag: return ; case WidgetKinds.xfeed: return ; default: break; } }, [widgets] ); useEffect(() => { fetchWidgets(db); }, [fetchWidgets]); return (
{!widgets ? (
) : ( widgets.map((widget) => renderItem(widget)) )}
); }