From b6393ea9a32c720bef6a5ab22348e49165113187 Mon Sep 17 00:00:00 2001 From: stabldev Date: Tue, 17 Jun 2025 17:39:35 +0530 Subject: [PATCH 1/5] refactor: change repo route --- src/app/(app)/[repo]/page.tsx | 30 ------------------- .../[repo]/_components/content-item.tsx | 0 .../[repo]/_components/contents-skeleton.tsx | 0 .../dialogs/create-config-alert-dialog.tsx | 0 .../[repo]/_components/recent-actions.tsx | 0 .../[repo]/_components/repo-contents.tsx | 0 src/app/(app)/{ => ~}/[repo]/client-page.tsx | 0 src/app/(app)/~/[repo]/page.tsx | 17 +++++++++++ 8 files changed, 17 insertions(+), 30 deletions(-) delete mode 100644 src/app/(app)/[repo]/page.tsx rename src/app/(app)/{ => ~}/[repo]/_components/content-item.tsx (100%) rename src/app/(app)/{ => ~}/[repo]/_components/contents-skeleton.tsx (100%) rename src/app/(app)/{ => ~}/[repo]/_components/dialogs/create-config-alert-dialog.tsx (100%) rename src/app/(app)/{ => ~}/[repo]/_components/recent-actions.tsx (100%) rename src/app/(app)/{ => ~}/[repo]/_components/repo-contents.tsx (100%) rename src/app/(app)/{ => ~}/[repo]/client-page.tsx (100%) create mode 100644 src/app/(app)/~/[repo]/page.tsx 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)/[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/contents-skeleton.tsx b/src/app/(app)/~/[repo]/_components/contents-skeleton.tsx similarity index 100% rename from src/app/(app)/[repo]/_components/contents-skeleton.tsx rename to src/app/(app)/~/[repo]/_components/contents-skeleton.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 100% 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 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/repo-contents.tsx b/src/app/(app)/~/[repo]/_components/repo-contents.tsx similarity index 100% rename from src/app/(app)/[repo]/_components/repo-contents.tsx rename to src/app/(app)/~/[repo]/_components/repo-contents.tsx diff --git a/src/app/(app)/[repo]/client-page.tsx b/src/app/(app)/~/[repo]/client-page.tsx similarity index 100% rename from src/app/(app)/[repo]/client-page.tsx rename to src/app/(app)/~/[repo]/client-page.tsx diff --git a/src/app/(app)/~/[repo]/page.tsx b/src/app/(app)/~/[repo]/page.tsx new file mode 100644 index 0000000..9a655af --- /dev/null +++ b/src/app/(app)/~/[repo]/page.tsx @@ -0,0 +1,17 @@ +import { Metadata } from 'next'; +import ClientPage from './client-page'; + +interface Props { + params: Promise<{ repo: string }>; +} + +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 ; +} From f03ae5ff6a737c1d3a72d1b154611cfad3fe1b9e Mon Sep 17 00:00:00 2001 From: stabldev Date: Tue, 17 Jun 2025 17:43:33 +0530 Subject: [PATCH 2/5] chore: update repo-contents breadcrumbs --- src/app/(app)/~/[repo]/_components/repo-contents.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/(app)/~/[repo]/_components/repo-contents.tsx b/src/app/(app)/~/[repo]/_components/repo-contents.tsx index 03e13e6..2827e81 100644 --- a/src/app/(app)/~/[repo]/_components/repo-contents.tsx +++ b/src/app/(app)/~/[repo]/_components/repo-contents.tsx @@ -13,7 +13,7 @@ import ContentsSkeleton from './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) => ( From bff373eb998f13d6ca8db9178b93315a32b2d96a Mon Sep 17 00:00:00 2001 From: stabldev Date: Tue, 17 Jun 2025 17:47:39 +0530 Subject: [PATCH 3/5] chore: update /new import href --- src/app/(app)/new/_components/repo-list.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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()} -
))} From e01d1c721e1b6ce340cbe976bf48a7a338a97970 Mon Sep 17 00:00:00 2001 From: stabldev Date: Tue, 17 Jun 2025 17:49:07 +0530 Subject: [PATCH 4/5] chore: rename skeleton to repo-contents-skeleton --- .../{contents-skeleton.tsx => repo-contents-skeleton.tsx} | 2 +- src/app/(app)/~/[repo]/_components/repo-contents.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/app/(app)/~/[repo]/_components/{contents-skeleton.tsx => repo-contents-skeleton.tsx} (87%) 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 index 2827e81..2565249 100644 --- a/src/app/(app)/~/[repo]/_components/repo-contents.tsx +++ b/src/app/(app)/~/[repo]/_components/repo-contents.tsx @@ -9,7 +9,7 @@ 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; @@ -118,7 +118,7 @@ export default function RepoContents({ repo, setIsConfigDialogOpen }: Props) { )} {isLoading || status === 'loading' || !contents ? ( - + ) : ( contents.map((content) => ( Date: Tue, 17 Jun 2025 17:52:28 +0530 Subject: [PATCH 5/5] chore: remove React type usage for set-action --- .../~/[repo]/_components/dialogs/create-config-alert-dialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 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; }