diff --git a/docs/apis/metadata.mdx b/docs/apis/metadata.mdx index 336ee6dac2b35d4ecf5f7b911306539d0758f19c..b04ed3111b442dae9478171d45f3fc174b150c0f 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 c41155d5d39869b260f6f1f327c1ed591ce94b23..5dd1b141119793fcea81186175e80841f7874b27 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 27286d75b562ecd7e33ead0d8f9ac584970a99fb..8428ee400c3a7effea48f3ea9b35b9a0ef3ae2ab 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 92edc859181a72772443a241b8a1636b418221ce..19f9a41fddabce61a9f64fc9cd3d3ae060e39beb 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 06d16ba10758fcd067270e36219f5578d8827a5a..fd049d6e82d54058630dc978578f082f2156677d 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 6590d2cda47c3073adf9045c7554b74dfa4fd639..41d9103958bb16cb188b22da645bb57dc40bf132 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 336ee6dac2b35d4ecf5f7b911306539d0758f19c..b04ed3111b442dae9478171d45f3fc174b150c0f 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 c41155d5d39869b260f6f1f327c1ed591ce94b23..5dd1b141119793fcea81186175e80841f7874b27 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} />