|
1 | 1 | import { createFileRoute, useNavigate } from '@tanstack/react-router' |
2 | 2 | import { useQuery } from '@tanstack/react-query' |
3 | | -import { FeedEntryEditor } from '~/components/admin/FeedEntryEditor' |
| 3 | +import { lazy, Suspense } from 'react' |
4 | 4 | import type { FeedEntry } from '~/components/FeedEntry' |
5 | 5 | import { useCapabilities } from '~/hooks/useCapabilities' |
6 | 6 | import { useCurrentUserQuery } from '~/hooks/useCurrentUser' |
7 | 7 | import { getFeedEntryQueryOptions } from '~/queries/feed' |
8 | 8 | import * as v from 'valibot' |
| 9 | + |
| 10 | +const FeedEntryEditor = lazy(() => |
| 11 | + import('~/components/admin/FeedEntryEditor').then((m) => ({ |
| 12 | + default: m.FeedEntryEditor, |
| 13 | + })), |
| 14 | +) |
| 15 | + |
9 | 16 | export const Route = createFileRoute('/admin/feed/$id')({ |
10 | 17 | component: FeedEditorPage, |
11 | 18 | validateSearch: (search) => v.parse(v.object({}), search), |
@@ -73,13 +80,21 @@ function FeedEditorPage() { |
73 | 80 | return ( |
74 | 81 | <div className="min-h-screen p-8"> |
75 | 82 | <div className="max-w-4xl mx-auto"> |
| 83 | + <Suspense |
| 84 | + fallback={ |
| 85 | + <div className="flex items-center justify-center p-8"> |
| 86 | + <div>Loading editor...</div> |
| 87 | + </div> |
| 88 | + } |
| 89 | + > |
76 | 90 | <FeedEntryEditor |
77 | 91 | entry={ |
78 | 92 | isNew ? null : ((entryQuery.data as FeedEntry | undefined) ?? null) |
79 | 93 | } |
80 | 94 | onSave={() => navigate({ to: '/admin/feed' })} |
81 | 95 | onCancel={() => navigate({ to: '/admin/feed' })} |
82 | 96 | /> |
| 97 | + </Suspense> |
83 | 98 | </div> |
84 | 99 | </div> |
85 | 100 | ) |
|
0 commit comments