32 lines · 1.0 KB
import { createFileRoute } from "@tanstack/react-router";
import { getTree } from "~/fns/browse";
import { useRepo } from "~/hooks/use-repo";
import { FileEditor } from "~/components/FileEditor";
import { requireSignedIn } from "~/lib/route-guards";

export const Route = createFileRoute("/$owner/$repo/new/$")({
  beforeLoad: requireSignedIn,
  loader: ({ params }) => getTree({ data: { owner: params.owner, repo: params.repo, splat: params._splat ?? "" } }),
  component: NewFilePage,
});

function NewFilePage() {
  const tree = Route.useLoaderData();
  const header = useRepo();
  const { owner, repo } = Route.useParams();
  const branch = tree.kind === "tree" ? tree.ref.name : header.repo.defaultBranch;
  const directory = tree.kind === "tree" && tree.path ? `${tree.path}/` : "";
  return (
    <FileEditor
      owner={owner}
      repo={repo}
      branch={branch}
      headSha={tree.kind === "tree" ? tree.ref.sha : null}
      initialPath={directory}
      previousPath={null}
      initialContent=""
      allowDelete={false}
    />
  );
}