import { Accelerator } from "@strata-foundation/accelerator"; import React, { useContext, useMemo } from "react"; import { useAsync } from "react-async-hook"; export const AcceleratorContext = React.createContext({ loading: true, }); export interface IAcceleratorReactState { error?: Error; loading: boolean; accelerator?: Accelerator; } async function tryProm(prom: Promise): Promise { try { return await prom; } catch (e) { console.error(e); } return undefined; } async function getSdk(url: string): Promise { return tryProm(Accelerator.init(url)); } export const AcceleratorProviderRaw: React.FC> = ({ children, url, }) => { const { result, loading, error } = useAsync(getSdk, [url]); const sdks = useMemo( () => ({ accelerator: result, error, loading, }), [result, loading, error] ); return ( {children} ); }; export const AcceleratorProvider: React.FC> = ({ children, url, }) => { return {children}; }; export const useAccelerator = (): IAcceleratorReactState => { return useContext(AcceleratorContext); };