From e0c320618eea3906decf9c49d68821886a53bfa9 Mon Sep 17 00:00:00 2001 From: David Schwarzmann <david.schwarzmann@codecentric.de> Date: Thu, 7 Oct 2021 14:02:12 +0200 Subject: [PATCH] fix: Fix version loading for metadata and routing api --- docs/apis/metadata.mdx | 2 +- docs/apis/routing-api.mdx | 2 +- src/components/ApiLink.js | 3 +- src/components/ApiSpec.js | 9 ++--- src/components/JSONSchema.js | 35 ++++++++++--------- src/utils/getLatestVersion.js | 7 ++-- versioned_docs/version-0.14/apis/metadata.mdx | 2 +- .../version-0.14/apis/routing-api.mdx | 2 +- 8 files changed, 30 insertions(+), 32 deletions(-) diff --git a/docs/apis/metadata.mdx b/docs/apis/metadata.mdx index 336ee6dac..b04ed3111 100644 --- a/docs/apis/metadata.mdx +++ b/docs/apis/metadata.mdx @@ -5,4 +5,4 @@ hide_table_of_contents: true import JSONSchema from '@site/src/components/JSONSchema' -<JSONSchema /> +<JSONSchema enforceLatest={true} /> diff --git a/docs/apis/routing-api.mdx b/docs/apis/routing-api.mdx index c41155d5d..5dd1b1411 100644 --- a/docs/apis/routing-api.mdx +++ b/docs/apis/routing-api.mdx @@ -5,4 +5,4 @@ hide_table_of_contents: true import ApiSpec from '@site/src/components/ApiSpec' -<ApiSpec gitlabProjectId={"44"} path={"routing-api"} artifact={"routing-api.yaml"} /> +<ApiSpec gitlabProjectId={"44"} path={"routing-api"} artifact={"routing-api.yaml"} enforceLatest={true} /> diff --git a/src/components/ApiLink.js b/src/components/ApiLink.js index 27286d75b..8428ee400 100644 --- a/src/components/ApiLink.js +++ b/src/components/ApiLink.js @@ -1,12 +1,11 @@ import React from "react" import Link from '@docusaurus/Link' -export default ({ to, withMethod='get', children }) => { +export default ({to, withMethod = 'get', children}) => { const url = `/docs/apis/submission-api#${withMethod.toLowerCase()}-${to.replace(/[{}]/g, '-')}` if (children) { return <Link to={url}>{children}</Link> } else { return <Link to={url}><code>{withMethod.toUpperCase()} {to}</code></Link> } - } diff --git a/src/components/ApiSpec.js b/src/components/ApiSpec.js index 92edc8591..19f9a41fd 100644 --- a/src/components/ApiSpec.js +++ b/src/components/ApiSpec.js @@ -2,10 +2,7 @@ import React, {useEffect} from 'react' import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment' import BrowserOnly from '@docusaurus/BrowserOnly' -import { - useActivePlugin, - useActiveVersion, -} from '@theme/hooks/useDocs' +import {useActivePlugin, useActiveVersion,} from '@theme/hooks/useDocs' import useAsync from '@site/src/hooks/useAsync' import getLatestVersion from "@site/src/utils/getLatestVersion"; @@ -17,10 +14,10 @@ export default function ApiSpec(props) { const isInBrowser = ExecutionEnvironment.canUseDOM const {pluginId} = useActivePlugin({failfast: true}) - const { name: siteVersion } = useActiveVersion(pluginId); + const { name: siteVersion } = useActiveVersion(pluginId) const {execute, status, error, value: latestVersion} = useAsync(getLatestVersion, { - siteVersion, + siteVersion: props.enforceLatest ? '*' : siteVersion, projectId: props.gitlabProjectId }, false) diff --git a/src/components/JSONSchema.js b/src/components/JSONSchema.js index 06d16ba10..fd049d6e8 100644 --- a/src/components/JSONSchema.js +++ b/src/components/JSONSchema.js @@ -1,9 +1,10 @@ import React, {useEffect, useState} from 'react' import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment' -import useDocusaurusContext from '@docusaurus/useDocusaurusContext' import BrowserOnly from '@docusaurus/BrowserOnly' import axios from 'axios' +import {useActivePlugin, useActiveVersion,} from '@theme/hooks/useDocs' + import CodeBlock from '@theme/CodeBlock' import useAsync from '@site/src/hooks/useAsync' @@ -20,41 +21,43 @@ const loadSchema = async (version) => { }).then(({data}) => JSON.stringify(data, null, 2)) } -export default function JSONSchema() { +export default function JSONSchema(props) { const isInBrowser = ExecutionEnvironment.canUseDOM - const {siteVersion = 'next'} = useDocusaurusContext().siteMetadata - - const { - execute: getVersion, - status: versionStatus, - error: versionError, - value: latestVersion - } = useAsync(getLatestVersion, {siteVersion, projectId: GITLAB_PROJECT_ID}, false) + const {pluginId} = useActivePlugin({failfast: true}) + const {name: siteVersion} = useActiveVersion(pluginId) + + const {execute, status, error, value: latestVersion} = useAsync(getLatestVersion, { + siteVersion: props.enforceLatest ? '*' : siteVersion, + projectId: GITLAB_PROJECT_ID, + includePrerelease: true + }, false) + const [metadataSchema, setMetadataSchema] = useState(null) if (isInBrowser) { useEffect(() => { - getVersion() + execute() }, []) useEffect(async () => { - if (versionStatus === 'success') { + if (status === 'success') { + console.log('vvvvvv', latestVersion, siteVersion, props.enforceLatest) setMetadataSchema(await loadSchema(latestVersion)) } - }, [versionStatus]) + }, [status]) } return ( <BrowserOnly fallback={<div>Lädt...</div>}> {() => ( <div> - <p>Die aktuell angezeigte Version des Metadatenschema ist {versionStatus === 'success' && - <code>{latestVersion}</code>} {versionStatus === 'success' && + <p>Die aktuell angezeigte Version des Metadatenschema ist {status === 'success' && + <code>{latestVersion}</code>} {status === 'success' && <DownloadLabel baseURL={SCHEMA_BASE_URL} version={latestVersion} artifact={SCHEMA_FILE_NAME}/>}.</p> {metadataSchema && <CodeBlock className={'json'}>{metadataSchema}</CodeBlock>} - {versionStatus === 'error' && <p>Das Metadatenschema konnte leider nicht geladen werden.</p>} + {status === 'error' && <p>Das Metadatenschema konnte leider nicht geladen werden.</p>} </div> ) } diff --git a/src/utils/getLatestVersion.js b/src/utils/getLatestVersion.js index 6590d2cda..41d910395 100644 --- a/src/utils/getLatestVersion.js +++ b/src/utils/getLatestVersion.js @@ -1,8 +1,7 @@ import axios from "axios"; import semver from "semver"; -export default async function ({siteVersion, projectId}) { - console.log('siteVersion', siteVersion) +export default async function ({siteVersion, projectId, includePrerelease=false}) { if (siteVersion === 'current') { return 'latest' } else { @@ -13,11 +12,11 @@ export default async function ({siteVersion, projectId}) { .then(async ({data}) => { const versionRange = `~${siteVersion}` const suitableVersions = await data - .filter(({name}) => semver.satisfies(name, versionRange)) + .filter(({name}) => semver.satisfies(name, versionRange, {includePrerelease})) .map(({name}) => name) .sort() - return semver.maxSatisfying(suitableVersions, versionRange) + return semver.maxSatisfying(suitableVersions, versionRange, {includePrerelease}) }) } } diff --git a/versioned_docs/version-0.14/apis/metadata.mdx b/versioned_docs/version-0.14/apis/metadata.mdx index 336ee6dac..b04ed3111 100644 --- a/versioned_docs/version-0.14/apis/metadata.mdx +++ b/versioned_docs/version-0.14/apis/metadata.mdx @@ -5,4 +5,4 @@ hide_table_of_contents: true import JSONSchema from '@site/src/components/JSONSchema' -<JSONSchema /> +<JSONSchema enforceLatest={true} /> diff --git a/versioned_docs/version-0.14/apis/routing-api.mdx b/versioned_docs/version-0.14/apis/routing-api.mdx index c41155d5d..5dd1b1411 100644 --- a/versioned_docs/version-0.14/apis/routing-api.mdx +++ b/versioned_docs/version-0.14/apis/routing-api.mdx @@ -5,4 +5,4 @@ hide_table_of_contents: true import ApiSpec from '@site/src/components/ApiSpec' -<ApiSpec gitlabProjectId={"44"} path={"routing-api"} artifact={"routing-api.yaml"} /> +<ApiSpec gitlabProjectId={"44"} path={"routing-api"} artifact={"routing-api.yaml"} enforceLatest={true} /> -- GitLab