-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
47 changed files
with
1,508 additions
and
2,842 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
VITE_GUIDE_ASSETS_URL=https://guide-assets.appliedenergistics.org/index.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
import { GuideVersion } from "./GuideVersionIndex.ts"; | ||
import { PropsWithChildren, useCallback } from "react"; | ||
import useLoadEffect from "./useLoadEffect.ts"; | ||
import { Guide, GuideProvider } from "./Guide.ts"; | ||
import LoadState from "./components/LoadState.tsx"; | ||
|
||
export type GuideLoaderProps = PropsWithChildren<{ | ||
version: GuideVersion; | ||
}>; | ||
|
||
/** | ||
* In Format 1, the guide data is an explicitly gzip compressed JSON file. | ||
*/ | ||
async function loadGuideFromResponseV1( | ||
version: GuideVersion, | ||
response: Response | ||
): Promise<Guide> { | ||
// Decompress | ||
const blob = await response.blob(); | ||
const ds = new DecompressionStream("gzip"); | ||
const decompressedStream = blob.stream().pipeThrough(ds); | ||
const jsonBody = await new Response(decompressedStream).json(); | ||
|
||
// Use the directory we loaded the guide from to load further assets | ||
const baseUrl = new URL("./", response.url).toString(); | ||
console.info("Deducing base URL %s for guide data %s", baseUrl, response.url); | ||
return new Guide(baseUrl, version, jsonBody); | ||
} | ||
|
||
async function loadGuideFromResponse( | ||
version: GuideVersion, | ||
response: Response | ||
): Promise<Guide> { | ||
const format = version.format; | ||
if (format === 1) { | ||
return loadGuideFromResponseV1(version, response); | ||
} else { | ||
throw new Error(`Unsupported guide format: '${format}'`); | ||
} | ||
} | ||
|
||
function GuideLoader({ version, children }: GuideLoaderProps) { | ||
const loader = useCallback( | ||
(response: Response) => loadGuideFromResponse(version, response), | ||
[version] | ||
); | ||
const loadResult = useLoadEffect<Guide>( | ||
version.url, | ||
`guide ${version.gameVersion}`, | ||
loader | ||
); | ||
|
||
if (loadResult.state === "success") { | ||
return <GuideProvider value={loadResult.data}>{children}</GuideProvider>; | ||
} else { | ||
return ( | ||
<LoadState | ||
operation={`Loading Guide for ${version.gameVersion}`} | ||
result={loadResult} | ||
/> | ||
); | ||
} | ||
} | ||
|
||
export default GuideLoader; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import { createContext, useContext } from "react"; | ||
|
||
export type GuideVersion = { | ||
format: number; | ||
gameVersion: string; | ||
modVersion: string; | ||
generated: number; | ||
url: string; | ||
}; | ||
|
||
export type GuideVersionIndex = { | ||
versions: GuideVersion[]; | ||
}; | ||
|
||
const GuideVersionIndexContext = createContext<GuideVersionIndex | undefined>( | ||
undefined | ||
); | ||
|
||
export const GuideVersionIndexProvider = GuideVersionIndexContext.Provider; | ||
|
||
export function useGuideVersionIndex(): GuideVersionIndex { | ||
const guideVersions = useContext(GuideVersionIndexContext); | ||
if (!guideVersions) { | ||
throw new Error( | ||
"No guide versions available. Missing <GuideVersionsProvider></GuideVersionsProvider>" | ||
); | ||
} | ||
return guideVersions; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
import { PropsWithChildren } from "react"; | ||
import { guideAssetsUrl } from "./config.ts"; | ||
import { | ||
GuideVersionIndex, | ||
GuideVersionIndexProvider, | ||
} from "./GuideVersionIndex.ts"; | ||
import Loading from "./components/Loading.tsx"; | ||
import useLoadEffect from "./useLoadEffect.ts"; | ||
|
||
function GuideVersionIndexLoader({ children }: PropsWithChildren) { | ||
const loadingResult = useLoadEffect<GuideVersionIndex>( | ||
guideAssetsUrl, | ||
"guide versions" | ||
); | ||
|
||
if (loadingResult.state === "success") { | ||
return ( | ||
<GuideVersionIndexProvider value={loadingResult.data}> | ||
{children} | ||
</GuideVersionIndexProvider> | ||
); | ||
} else if (loadingResult.state === "error") { | ||
return ( | ||
<div> | ||
ERROR | ||
<button type="button" onClick={() => loadingResult.retry()}> | ||
Retry | ||
</button> | ||
</div> | ||
); | ||
} else { | ||
return <Loading />; | ||
} | ||
} | ||
|
||
export default GuideVersionIndexLoader; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import { GuideVersion, GuideVersionIndex } from "./GuideVersionIndex.ts"; | ||
|
||
type GuideVersionSelectionProps = { | ||
versionIndex: GuideVersionIndex; | ||
}; | ||
|
||
function GuideVersion({ version }: { version: GuideVersion }) { | ||
const lastUpdate = new Date(version.generated); | ||
|
||
return ( | ||
<div> | ||
<a href={"#/" + version.gameVersion + "/"}> | ||
Minecraft {version.gameVersion}, Mod {version.modVersion} | ||
</a>{" "} | ||
({lastUpdate.toLocaleDateString()}) | ||
</div> | ||
); | ||
} | ||
|
||
function GuideVersionSelection({ versionIndex }: GuideVersionSelectionProps) { | ||
return ( | ||
<div> | ||
Select a version of the guidebook to view: | ||
<ul> | ||
{versionIndex.versions.map((version, idx) => ( | ||
<GuideVersion key={idx} version={version} /> | ||
))} | ||
</ul> | ||
</div> | ||
); | ||
} | ||
|
||
export default GuideVersionSelection; |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.