diff --git a/job-tracker-ui/src/components/CvTemplateThumbnail.tsx b/job-tracker-ui/src/components/CvTemplateThumbnail.tsx index c0498f8..8d7e01d 100644 --- a/job-tracker-ui/src/components/CvTemplateThumbnail.tsx +++ b/job-tracker-ui/src/components/CvTemplateThumbnail.tsx @@ -1,12 +1,9 @@ -import React, { useEffect, useState } from "react"; +import React from "react"; import { Box } from "@mui/material"; -import { CvTheme, cvBuilderApi } from "../cvBuilder"; - -const previewCache = new Map(); +import { CvTheme } from "../cvBuilder"; export default function CvTemplateThumbnail({ theme, height = 150 }: { theme?: CvTheme; height?: number }) { - const [previewHtml, setPreviewHtml] = useState(() => theme ? previewCache.get(theme.id) ?? "" : ""); const accent = theme?.swatches?.[0] || "#3157d5"; const sidebar = theme?.swatches?.[1] || "#eef1f4"; const paper = theme?.swatches?.[2] || "#ffffff"; @@ -15,34 +12,6 @@ export default function CvTemplateThumbnail({ theme, height = 150 }: { theme?: C const sidebarRight = layout === "sidebar-right"; const lines = [92, 72, 84, 61, 88, 76, 95, 67]; - useEffect(() => { - if (!theme) return; - const cached = previewCache.get(theme.id); - if (cached) { - setPreviewHtml(cached); - return; - } - setPreviewHtml(""); - let active = true; - void cvBuilderApi.themePreview(theme.id).then((render) => { - previewCache.set(theme.id, render.html); - if (active) setPreviewHtml(render.html); - }).catch(() => undefined); - return () => { active = false; }; - }, [theme]); - - if (previewHtml) { - const scale = height / (297 * 96 / 25.4); - return ( - - -