Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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}/>}.</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>
)
}