diff --git a/src/cv-maker/core/template.tsx b/src/cv-maker/core/template.tsx index 12a0a05..c7cdcd2 100644 --- a/src/cv-maker/core/template.tsx +++ b/src/cv-maker/core/template.tsx @@ -145,7 +145,6 @@ function ResumeHead(resume: ResumeObject) { function CompanyProject(project: ProjectDetails, isLast: boolean) { let clazz = "project no-break pb-3"; if (!isLast) clazz += " border-b-1 border-gray-300 border-dashed mb-2"; - console.log({ title: project.title, isLast }) return (
diff --git a/src/cv-maker/core/utils.ts b/src/cv-maker/core/utils.ts index 9c5ea7f..d7c058d 100644 --- a/src/cv-maker/core/utils.ts +++ b/src/cv-maker/core/utils.ts @@ -40,4 +40,15 @@ export function debounce void>( func(...args); }, wait); }; -} \ No newline at end of file +} + +export function getUrlParam(name: string) { + const params = new URLSearchParams(location.search); + return params.get(name); +} + +export function setUrlParam(name: string, value: string) { + const url = new URL(location.href); + url.searchParams.set(name, value); + window.history.replaceState(null, '', url); +} diff --git a/src/cv-maker/index.html b/src/cv-maker/index.html index ed5b76b..b55af91 100644 --- a/src/cv-maker/index.html +++ b/src/cv-maker/index.html @@ -84,6 +84,7 @@
diff --git a/src/cv-maker/main.ts b/src/cv-maker/main.ts index 92a5ec0..694a358 100644 --- a/src/cv-maker/main.ts +++ b/src/cv-maker/main.ts @@ -1,5 +1,5 @@ import Alpine from "alpinejs"; -import { debounce, getResumeObject, parseJSON, resumeObjectToHTML } from "./core/utils"; +import { debounce, getResumeObject, getUrlParam, parseJSON, resumeObjectToHTML, setUrlParam } from "./core/utils"; import type resumeSchema from "./static/resume-schema.json" import { makeJsonEditor } from "#/common/editor/make"; import { hasMajorError } from "#/common/editor/text-model"; @@ -56,7 +56,7 @@ const state: { mode: "view", editorHasError: false, availableResumes: [], - currentResume: "example" + currentResume: getUrlParam("resume") ?? "example" }); Alpine.data("state", () => state); @@ -80,6 +80,12 @@ async function loadStoredResume() { name: key }); }; + + const lastResumeId = state.availableResumes.at(-1)?.id; + + if (lastResumeId) { + state.currentResume = lastResumeId; + } } @@ -96,6 +102,7 @@ function selectResume() { }; state.resumeObject = resume; state.resumeHtml = resumeObjectToHTML(resume); + setUrlParam("resume", state.currentResume); } async function setup() { @@ -181,6 +188,15 @@ async function setup() { if (!name) return; localStorage.setItem(name, JSON.stringify(state.resumeObject)); state.availableResumes.push({ id: name, name }); + state.currentResume = name; + selectResume(); + prepareEditor(); + }); + + window.addEventListener('delete', () => { + localStorage.removeItem(state.currentResume); + loadStoredResume(); + selectResume(); }); window.addEventListener('resize', () => {