diff --git a/src/views/JSONSchema.js b/src/views/JSONSchema.js index 2077164ba9bc86dcad8c7c75c3771b3a45729e32..68e73b554d81c2021027b42fb27a30ae03124a94 100644 --- a/src/views/JSONSchema.js +++ b/src/views/JSONSchema.js @@ -8,6 +8,7 @@ import {useActivePlugin, useActiveVersion,} from '@docusaurus/plugin-content-doc import useAsync from '@hooks/useAsync' import getLatestVersion from "@lib/utils/getLatestVersion"; +import getVersionList from '@lib/utils/getVersionList' import DownloadLabel from "@components/DownloadLabel"; import VersionSelect from "@components/VersionSelect"; @@ -42,21 +43,34 @@ export default function JSONSchema(props) { const schemaName = name === 'set' ? SCHEMA_FILE_NAME_SET : SCHEMA_FILE_NAME; const gitlabId = name === 'set' ? GITLAB_PROJECT_ID_SET : GITLAB_PROJECT_ID; + const {execute: executeList, status: statusList, value: versions} = useAsync(getVersionList, { + projectId: GITLAB_PROJECT_ID, + includePrerelease: includePrerelease !== undefined, + }, false) + const {execute, status, error, value: latestVersion} = useAsync(getLatestVersion, { siteVersion: selectedVersion === undefined ? '*' : selectedVersion, projectId: GITLAB_PROJECT_ID, - includePrerelease: includePrerelease !== undefined + includePrerelease: includePrerelease !== undefined, }, false) if (isInBrowser) { useEffect(() => { - execute() + executeList() }, []) useEffect(async () => { - setJsonSchema(await loadSchema(selectedVersion, name)) + if (!selectedVersion.includes('*')) { + setJsonSchema(await loadSchema(selectedVersion, name)) + } }, [selectedVersion]) + useEffect(async () => { + if (statusList === 'success') { + execute() + } + }, [statusList]) + useEffect(async () => { if (status === 'success') { setSelectedVersion(latestVersion) @@ -73,7 +87,12 @@ export default function JSONSchema(props) { <code>{selectedVersion}</code>} {status === 'success' && <DownloadLabel baseURL={schemaUrl} version={selectedVersion} artifact={schemaName} label="JSON Schema"/>}. </p> - <VersionSelect version={selectedVersion} setVersion={setSelectedVersion} gitlabId={gitlabId}/> + {statusList === 'success' && <VersionSelect + versions={versions} + version={selectedVersion} + setVersion={setSelectedVersion} + gitlabId={gitlabId}/> + } <br /> <div className="json-schema-viewer admonition admonition-note alert alert--secondary pl-5">