import React, {useEffect} from 'react' import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment' import useDocusaurusContext from '@docusaurus/useDocusaurusContext' import BrowserOnly from '@docusaurus/BrowserOnly' import useAsync from '@site/src/hooks/useAsync' import getLatestVersion from "@site/src/utils/getLatestVersion"; import DownloadLabel from "./DownloadLabel"; const SCHEMA_BASE_URL = 'https://schema.fitko.de/fit-connect/openapi' const GITLAB_PROJECT_ID = 1 export default function ApiSpec(props) { const isInBrowser = ExecutionEnvironment.canUseDOM const {siteVersion = 'next'} = useDocusaurusContext().siteMetadata const {execute, status, error, value: latestVersion} = useAsync(getLatestVersion, { siteVersion, projectId: GITLAB_PROJECT_ID }, false) if (isInBrowser) { useEffect(() => { execute() }, []) } return ( <BrowserOnly fallback={<div>Lädt...</div>}> {() => { import('rapidoc') return ( <div> <p>Die aktuell angezeigte Version der API ist {status === 'success' && <code>{latestVersion}</code>} {status === 'success' && <DownloadLabel baseURL={SCHEMA_BASE_URL} version={latestVersion} artifact={props.artifact}/>}. Alle vorherigen Versionen <a href={SCHEMA_BASE_URL}>finden sich hier.</a> </p> {status === 'success' && latestVersion && <rapi-doc render-style="view" layout="column" spec-url={`${SCHEMA_BASE_URL}/${latestVersion}/${props.artifact}`} theme="light" show-info="false" show-header="false" show-components="false" allow-spec-file-load="false" info-description-headings-in-navbar="false" allow-try="false" primary-color="#11171a" allow-server-selection="false" server-url="" />} {status === 'error' && <p>Die API-Spezifikation konnte leider nicht geladen werden.</p>} </div> ) }} </BrowserOnly> ) }