import Layout from "@theme/Layout"; import BrowserOnly from "@docusaurus/BrowserOnly"; import React, { useEffect, useState } from "react"; import { API } from '@stoplight/elements'; import '@stoplight/elements/styles.min.css'; import './rest-api.css' import { parseJson } from "nx/src/utils/json"; import { TbLoader2 } from "react-icons/tb"; type TokenFormProps = { onSubmit: (token: string) => void, isTokenValid: boolean, isLoading: boolean, token: string, } const TokenForm = ({onSubmit, isTokenValid, token, isLoading}: TokenFormProps)=> { const updateToken = (event: React.ChangeEvent) => { localStorage.setItem('TryIt_securitySchemeValues', JSON.stringify({bearerAuth: event.target.value})) onSubmit(event.target.value) } return !isTokenValid && (

Token invalid

) } const RestApiComponent = () => { const [openApiJson, setOpenApiJson] = useState({}) const [isTokenValid, setIsTokenValid] = useState(false) const [isLoading, setIsLoading] = useState(false) const storedToken = parseJson(localStorage.getItem('TryIt_securitySchemeValues'))?.bearerAuth ?? '' const validateToken = (openApiJson) => setIsTokenValid(!!openApiJson.tags) const getJson = async (token: string ) => { setIsLoading(true) return await fetch( "https://api.twenty.com/open-api", {headers: {Authorization: `Bearer ${token}`}} ) .then((res)=> res.json()) .then((result)=> { validateToken(result) setIsLoading(false) return result }) .catch(() => setIsLoading(false)) } const submitToken = async (token) => { if (isLoading) return const json = await getJson(token) setOpenApiJson(json) } useEffect(()=> { (async ()=> { await submitToken(storedToken) })() },[]) return isTokenValid !== undefined && ( <> { isTokenValid && ( ) } ) } const restApi = () => ( {() => } ); export default restApi;