mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-08-25 15:52:21 +10:00
v5.1.0 (#2970)
* chore(release): v5.1.0 * feat: implement resume thumbnails * fix: remove unused mcp tools * docs: fix formatting of docs
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import type { ResumeData } from "@reactive-resume/schema/resume/data";
|
||||
import type { RouterOutput } from "@/libs/orpc/client";
|
||||
import { ORPCError } from "@orpc/client";
|
||||
import { createFileRoute, lazyRouteComponent, notFound, redirect } from "@tanstack/react-router";
|
||||
import { orpc } from "@/libs/orpc/client";
|
||||
|
||||
type LoaderData = Omit<RouterOutput["resume"]["getBySlug"], "data"> & { data: ResumeData };
|
||||
|
||||
export const Route = createFileRoute("/$username/$slug")({
|
||||
component: lazyRouteComponent(() => import("./-components/public-resume"), "PublicResumeRoute"),
|
||||
loader: async ({ context, params }) => {
|
||||
const { username, slug } = params;
|
||||
const resume = await context.queryClient.ensureQueryData(
|
||||
orpc.resume.getBySlug.queryOptions({ input: { username, slug } }),
|
||||
);
|
||||
|
||||
return { resume: resume as LoaderData };
|
||||
},
|
||||
head: ({ loaderData }) => {
|
||||
const resume = loaderData?.resume;
|
||||
const title = resume ? resume.name || resume.data.basics.name || "Resume" : "Reactive Resume";
|
||||
return { meta: [{ title: `${title} - Reactive Resume` }] };
|
||||
},
|
||||
onError: (error) => {
|
||||
if (error instanceof ORPCError && error.code === "NEED_PASSWORD") {
|
||||
const data = error.data as { username?: string; slug?: string } | undefined;
|
||||
const username = data?.username;
|
||||
const slug = data?.slug;
|
||||
|
||||
if (username && slug) {
|
||||
throw redirect({
|
||||
to: "/auth/resume-password",
|
||||
search: { redirect: `/${username}/${slug}` },
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
throw notFound();
|
||||
},
|
||||
ssr: "data-only",
|
||||
});
|
||||
Reference in New Issue
Block a user