diff --git a/src/app/(app)/[repo]/page.tsx b/src/app/(app)/[repo]/page.tsx deleted file mode 100644 index 0b474d9..0000000 --- a/src/app/(app)/[repo]/page.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Metadata } from 'next'; -import { notFound } from 'next/navigation'; -import ClientPage from './client-page'; - -interface Props { - params: Promise<{ repo: string }>; -} - -export async function generateMetadata({ params }: Props): Promise { - const { repo: rawRepo } = await params; - const repo = decodeURIComponent(rawRepo); - - return { - title: repo, - }; -} - -export default async function Page({ params }: Props) { - const { repo: rawRepo } = await params; - const repo = decodeURIComponent(rawRepo); - - // check if it has prefix '@' - // otherwise call notFount - if (!repo.startsWith('@')) { - notFound(); - } - - // render client-side page - return ; // without "@" prefix -} diff --git a/src/app/(app)/new/_components/repo-list.tsx b/src/app/(app)/new/_components/repo-list.tsx index 3f7413c..2a65505 100644 --- a/src/app/(app)/new/_components/repo-list.tsx +++ b/src/app/(app)/new/_components/repo-list.tsx @@ -73,8 +73,8 @@ export default function RepoList() { {datetime(repo.updated_at).fromNow()} - ))} diff --git a/src/app/(app)/[repo]/_components/content-item.tsx b/src/app/(app)/~/[repo]/_components/content-item.tsx similarity index 100% rename from src/app/(app)/[repo]/_components/content-item.tsx rename to src/app/(app)/~/[repo]/_components/content-item.tsx diff --git a/src/app/(app)/[repo]/_components/dialogs/create-config-alert-dialog.tsx b/src/app/(app)/~/[repo]/_components/dialogs/create-config-alert-dialog.tsx similarity index 98% rename from src/app/(app)/[repo]/_components/dialogs/create-config-alert-dialog.tsx rename to src/app/(app)/~/[repo]/_components/dialogs/create-config-alert-dialog.tsx index 52cd62d..075da7f 100644 --- a/src/app/(app)/[repo]/_components/dialogs/create-config-alert-dialog.tsx +++ b/src/app/(app)/~/[repo]/_components/dialogs/create-config-alert-dialog.tsx @@ -18,7 +18,7 @@ import { toast } from 'sonner'; interface Props { open: boolean; - setOpen: React.Dispatch>; + setOpen: (val: boolean) => void; repo: string; } diff --git a/src/app/(app)/[repo]/_components/recent-actions.tsx b/src/app/(app)/~/[repo]/_components/recent-actions.tsx similarity index 100% rename from src/app/(app)/[repo]/_components/recent-actions.tsx rename to src/app/(app)/~/[repo]/_components/recent-actions.tsx diff --git a/src/app/(app)/[repo]/_components/contents-skeleton.tsx b/src/app/(app)/~/[repo]/_components/repo-contents-skeleton.tsx similarity index 87% rename from src/app/(app)/[repo]/_components/contents-skeleton.tsx rename to src/app/(app)/~/[repo]/_components/repo-contents-skeleton.tsx index b22b8d8..c824c33 100644 --- a/src/app/(app)/[repo]/_components/contents-skeleton.tsx +++ b/src/app/(app)/~/[repo]/_components/repo-contents-skeleton.tsx @@ -1,6 +1,6 @@ import { Skeleton } from '@/components/ui/skeleton'; -export default function ContentsSkeleton() { +export default function RepoContentsSkeleton() { return Array.from({ length: 1 }).map((_, idx) => (
diff --git a/src/app/(app)/[repo]/_components/repo-contents.tsx b/src/app/(app)/~/[repo]/_components/repo-contents.tsx similarity index 95% rename from src/app/(app)/[repo]/_components/repo-contents.tsx rename to src/app/(app)/~/[repo]/_components/repo-contents.tsx index 03e13e6..2565249 100644 --- a/src/app/(app)/[repo]/_components/repo-contents.tsx +++ b/src/app/(app)/~/[repo]/_components/repo-contents.tsx @@ -9,11 +9,11 @@ import { Folder, Plus, Search } from 'lucide-react'; import { useCallback, useEffect } from 'react'; import { toast } from 'sonner'; import ContentItem from './content-item'; -import ContentsSkeleton from './contents-skeleton'; +import RepoContentsSkeleton from './repo-contents-skeleton'; interface Props { repo: string; - setIsConfigDialogOpen: React.Dispatch>; + setIsConfigDialogOpen: (val: boolean) => void; } export default function RepoContents({ repo, setIsConfigDialogOpen }: Props) { @@ -65,7 +65,7 @@ export default function RepoContents({ repo, setIsConfigDialogOpen }: Props) { return (
-
+
{session?.user?.name?.[0]} @@ -75,7 +75,7 @@ export default function RepoContents({ repo, setIsConfigDialogOpen }: Props) { className="text-sm font-bold hover:underline" onClick={() => navigateBackTo('')} > - @{repo} + {repo} {breadcrumbs.length > 0 && /} {breadcrumbs.map((crumb, idx) => ( @@ -118,7 +118,7 @@ export default function RepoContents({ repo, setIsConfigDialogOpen }: Props) { )} {isLoading || status === 'loading' || !contents ? ( - + ) : ( contents.map((content) => ( ; +} + +export async function generateMetadata({ params }: Props): Promise { + const { repo } = await params; + return { title: `${repo}: GitLoom` }; +} + +export default async function Page({ params }: Props) { + const { repo } = await params; + // render client-side page + return ; +}