import { useCallback, useEffect } from 'react'; import { ToggleWidgetList } from '@app/space/components/toggle'; import { WidgetList } from '@app/space/components/widgetList'; import { useStorage } from '@libs/storage/provider'; import { LoaderIcon } from '@shared/icons'; import { GlobalArticlesWidget, GlobalFilesWidget, GlobalHashtagWidget, LearnNostrWidget, LocalArticlesWidget, LocalFeedsWidget, LocalFilesWidget, LocalNetworkWidget, LocalThreadWidget, LocalUserWidget, TrendingAccountsWidget, TrendingNotesWidget, XfeedsWidget, XhashtagWidget, } from '@shared/widgets'; import { LocalFollowsWidget } from '@shared/widgets/local/follows'; 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.local.network: return ; case WidgetKinds.local.follows: return ; case WidgetKinds.local.feeds: return ; case WidgetKinds.local.files: return ; case WidgetKinds.local.articles: return ; case WidgetKinds.local.user: return ; case WidgetKinds.local.thread: return ; case WidgetKinds.global.hashtag: return ; case WidgetKinds.global.articles: return ; case WidgetKinds.global.files: return ; case WidgetKinds.nostrBand.trendingAccounts: return ; case WidgetKinds.nostrBand.trendingNotes: return ; case WidgetKinds.tmp.xfeed: return ; case WidgetKinds.tmp.xhashtag: return ; case WidgetKinds.tmp.list: return ; case WidgetKinds.other.learnNostr: return ; default: return null; } }, [widgets] ); useEffect(() => { fetchWidgets(db); }, [fetchWidgets]); return (
{!widgets ? (
) : ( widgets.map((widget) => renderItem(widget)) )}
); }