import {useContext, useEffect, useState} from 'react' import {SMClient} from "../api/sm/sm-client"; import Context from "../context/token"; import {Token} from "./use-token"; import {BearerAuthentication} from "../api/authentication"; import {grabRawToken} from "../functions/token"; const grabClient = (token: Token | null, rawToken: string | null): SMClient => { let authentication = {} if (rawToken) { authentication = { authentication: new BearerAuthentication(rawToken) } } return new SMClient({ baseUrl: token?.host || 'localhost', ...authentication }) } export function useApi(): SMClient { let {token} = useContext(Context) let [client, setClient] = useState(grabClient(token, grabRawToken())) useEffect(() => { setClient(grabClient(token, grabRawToken())) }, [token]) return client }