Skip to content
Snippets Groups Projects
Commit e0c32061 authored by David Schwarzmann's avatar David Schwarzmann
Browse files

fix: Fix version loading for metadata and routing api

parent 1e851ff2
No related branches found
No related tags found
No related merge requests found
......@@ -5,4 +5,4 @@ hide_table_of_contents: true
import JSONSchema from '@site/src/components/JSONSchema'
<JSONSchema />
<JSONSchema enforceLatest={true} />
......@@ -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} />
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>
}
}
......@@ -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)
......
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>
)
}
......
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})
})
}
}
......@@ -5,4 +5,4 @@ hide_table_of_contents: true
import JSONSchema from '@site/src/components/JSONSchema'
<JSONSchema />
<JSONSchema enforceLatest={true} />
......@@ -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} />
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment