From f2ce44bad86e1ea9f28ad077e7e6feb2599799d8 Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Sun, 13 Aug 2023 20:40:44 +0200 Subject: [PATCH] Fix version selection. --- src/GuideRoot.tsx | 12 ++++++++---- src/InitialGuideSelection.tsx | 14 +++++--------- .../version-select/GuideVersionSelection.tsx | 11 ++--------- src/data/GuideVersionIndex.ts | 4 ++++ 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/GuideRoot.tsx b/src/GuideRoot.tsx index dd30b07..7987a87 100644 --- a/src/GuideRoot.tsx +++ b/src/GuideRoot.tsx @@ -10,8 +10,12 @@ import GuideShell from "./GuideShell.tsx"; import GuidebookPageError from "./components/GuidebookPageError.tsx"; import GuidebookPageNotFound from "./components/GuidebookPageNotFound.tsx"; -function createRouter(guide: Guide) { - const basename = "/" + guide.gameVersion; +export type GuideRootProps = { + pathPrefix: string; +}; + +function createRouter(pathPrefix: string, guide: Guide) { + const basename = pathPrefix; let indexRoute: RouteObject | undefined = undefined; const indexPageId = guide.defaultNamespace + ":index.md"; @@ -56,9 +60,9 @@ function createRouter(guide: Guide) { ); } -function GuideRoot() { +function GuideRoot({ pathPrefix }: GuideRootProps) { const guide = useGuide(); - const router = useMemo(() => createRouter(guide), [guide]); + const router = useMemo(() => createRouter(pathPrefix, guide), [guide]); return ; } diff --git a/src/InitialGuideSelection.tsx b/src/InitialGuideSelection.tsx index 1c4245e..a754580 100644 --- a/src/InitialGuideSelection.tsx +++ b/src/InitialGuideSelection.tsx @@ -1,4 +1,5 @@ import { + getVersionSlug, GuideVersion, GuideVersionIndex, useGuideVersionIndex, @@ -20,16 +21,11 @@ function getSelectedGuideVersion( console.debug("No game present in fragment: '%s'", fragment); return undefined; } - const gameVersion = m[1]; - let version: GuideVersion | undefined; - if (gameVersion === "development") { - version = versionIndex.versions.find((v) => v.development); - } else { - version = versionIndex.versions.find((v) => v.gameVersion === gameVersion); - } + const slug = m[1]; + const version = versionIndex.versions.find((v) => getVersionSlug(v) === slug); if (!version) { - console.info("Unknown game version found in fragment: '%s'", gameVersion); + console.info("Unknown game version found in fragment: '%s'", slug); } return version; @@ -66,7 +62,7 @@ function InitialGuideSelection() { if (selectedVersion) { return ( - + ); } else { diff --git a/src/components/version-select/GuideVersionSelection.tsx b/src/components/version-select/GuideVersionSelection.tsx index adfee0d..493f413 100644 --- a/src/components/version-select/GuideVersionSelection.tsx +++ b/src/components/version-select/GuideVersionSelection.tsx @@ -1,4 +1,5 @@ import { + getVersionSlug, GuideVersion, GuideVersionIndex, } from "../../data/GuideVersionIndex.ts"; @@ -8,19 +9,11 @@ type GuideVersionSelectionProps = { versionIndex: GuideVersionIndex; }; -function getBaseUrl(version: GuideVersion): string { - if (version.development) { - return "#/development/"; - } else { - return "#/" + version.gameVersion + "/"; - } -} - function GuideVersion({ version }: { version: GuideVersion }) { const lastUpdate = new Date(version.generated); return ( - +
{version.gameVersion}
diff --git a/src/data/GuideVersionIndex.ts b/src/data/GuideVersionIndex.ts index 1723935..487d1dd 100644 --- a/src/data/GuideVersionIndex.ts +++ b/src/data/GuideVersionIndex.ts @@ -19,6 +19,10 @@ const GuideVersionIndexContext = createContext( export const GuideVersionIndexProvider = GuideVersionIndexContext.Provider; +export function getVersionSlug(version: GuideVersion) { + return version.development ? "development" : version.gameVersion; +} + export function useGuideVersionIndex(): GuideVersionIndex { const guideVersions = useContext(GuideVersionIndexContext); if (!guideVersions) {