Skip to content

Commit

Permalink
Fix version selection.
Browse files Browse the repository at this point in the history
  • Loading branch information
shartte committed Aug 13, 2023
1 parent 55009a8 commit f2ce44b
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 22 deletions.
12 changes: 8 additions & 4 deletions src/GuideRoot.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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 <RouterProvider router={router}></RouterProvider>;
}
Expand Down
14 changes: 5 additions & 9 deletions src/InitialGuideSelection.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {
getVersionSlug,
GuideVersion,
GuideVersionIndex,
useGuideVersionIndex,
Expand All @@ -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;
Expand Down Expand Up @@ -66,7 +62,7 @@ function InitialGuideSelection() {
if (selectedVersion) {
return (
<GuideLoader version={selectedVersion}>
<GuideRoot />
<GuideRoot pathPrefix={"/" + getVersionSlug(selectedVersion)} />
</GuideLoader>
);
} else {
Expand Down
11 changes: 2 additions & 9 deletions src/components/version-select/GuideVersionSelection.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {
getVersionSlug,
GuideVersion,
GuideVersionIndex,
} from "../../data/GuideVersionIndex.ts";
Expand All @@ -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 (
<a href={getBaseUrl(version)} className={css.version}>
<a href={`#/${getVersionSlug(version)}/`} className={css.version}>
<div className={css.minecraftLogo}>
<span>{version.gameVersion}</span>
</div>
Expand Down
4 changes: 4 additions & 0 deletions src/data/GuideVersionIndex.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ const GuideVersionIndexContext = createContext<GuideVersionIndex | undefined>(

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) {
Expand Down

0 comments on commit f2ce44b

Please sign in to comment.