diff --git a/src/latest/scripts/interpreter/permalink.ts b/src/latest/scripts/interpreter/permalink.ts index 00e6886..8ae7435 100644 --- a/src/latest/scripts/interpreter/permalink.ts +++ b/src/latest/scripts/interpreter/permalink.ts @@ -4,7 +4,7 @@ import { gunzipString, gzipString } from "gzip-utils"; const compat = JSON.parse(compatRaw); const releaseDates = JSON.parse(datesRaw); -const LATEST_VYXAL_VERSION_CONSTANT_RETURNED_FROM_DETERMINE_VERSION = "hacky ahh solution" +const LATEST_VYXAL_VERSION_CONSTANT_RETURNED_FROM_DETERMINE_VERSION = "latest" type OldPermalinks = { format: 2, @@ -16,7 +16,7 @@ type OldPermalinks = { version: string, }; -const latestPermalink = 4; +const latestPermalink = 3; export type Permalink = { format: typeof latestPermalink, flags: string[], @@ -28,6 +28,7 @@ export type Permalink = { }; function decodeVersion(version: string): string { + // This is what happens when you let lyxal write a hack // solution to something that probably required a bigger // refactoring. (Comment written by, surprisingly, lyxal) @@ -51,15 +52,16 @@ function decodeVersion(version: string): string { // Now, iterate through the release dates and find the // first release after the given date. - const candidates = Object.entries(releaseDates).filter(([_, d]) => new Date(d.toString()) > date); + const parsedDates: [string, Date][] = Object.entries(releaseDates).map(([v, d]) => [v, new Date(Date.parse(d as string))]); + const candidates = parsedDates.filter(([_, d]) => new Date(d) > date); if (candidates.length === 0) { return LATEST_VYXAL_VERSION_CONSTANT_RETURNED_FROM_DETERMINE_VERSION; } - return candidates[0][1].toString(); + return candidates[0][0]; } function incompatible(permalinkVersion: string) { - if (permalinkVersion === LATEST_VYXAL_VERSION_CONSTANT_RETURNED_FROM_DETERMINE_VERSION) { return true; } + if (permalinkVersion === LATEST_VYXAL_VERSION_CONSTANT_RETURNED_FROM_DETERMINE_VERSION) { return false; } return compat[permalinkVersion] ?? false; } @@ -120,8 +122,10 @@ export async function decodeHash(hash: string): Promise { } try { let realVersion = decodeVersion(permalink.version); - if (incompatible(permalink.version)) { - return { compatible: false, version: permalink.version }; + console.log("Real version:", realVersion); + console.log("Permalink version:", permalink.version); + if (incompatible(realVersion)) { + return { compatible: false, version: realVersion }; } switch (permalink.format) { case 2: { diff --git a/src/latest/scripts/main.tsx b/src/latest/scripts/main.tsx index d73c259..c53558f 100644 --- a/src/latest/scripts/main.tsx +++ b/src/latest/scripts/main.tsx @@ -20,7 +20,9 @@ const fallback = document.getElementById("fallback-ui")!; fallback.hidden = true; const permalink = window.location.hash.length ? await decodeHash(window.location.hash.slice(1)) : null; if (permalink != null && !permalink.compatible) { - window.location.replace(`https://vyxal.github.io/versions/v${permalink.version}#${location.hash.substring(1)}`); + console.error("Incompatible permalink version!", permalink.version); + // window.location.replace(`https://vyxal.github.io/versions/v${permalink.version}#${location.hash.substring(1)}`); + } else { // @ts-expect-error DATA_URI gets replaced by Webpack const elementData = parseElementData(await fetch(`${DATA_URI}/theseus.json`).then((r) => r.json())); diff --git a/src/latest/scripts/ui/Theseus.tsx b/src/latest/scripts/ui/Theseus.tsx index d6f44b0..11348d3 100644 --- a/src/latest/scripts/ui/Theseus.tsx +++ b/src/latest/scripts/ui/Theseus.tsx @@ -116,7 +116,7 @@ export function Theseus({ permalink }: TheseusProps) { footer, flags: [...serializeFlags(elementData.flagDefs, flags)], inputs: inputs.map(({ name, inputs }) => [name, inputs.map(({ input }) => input)]), - version: `${date.getDate()}/${date.getMonth() + 1}/${date.getFullYear()}`, + version: `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`, }).then((hash) => history.replaceState(undefined, "", "#" + hash)); }, [header, code, footer, flags, inputs, elementData]);