import { useCallback, useState, createContext, useContext } from 'react' import * as React from 'react' import { AssetsApi } from '../../../types' type UseAssetManagerResult = ReturnType const AssetContext = createContext({ api: {} as AssetsApi, setAssetsApi: () => {}, }) function useAssetsManager(): { api: AssetsApi setAssetsApi: (api: AssetsApi) => void } { const [api, setApi] = useState({} as AssetsApi) const setAssetsApi = useCallback((api: AssetsApi) => { setApi(api) }, []) return { api, setAssetsApi } } export const AssetsProvider: React.FunctionComponent<{ children?: React.ReactNode }> = ({ children }) => ( {children} ) export const useAssetApi = (): AssetsApi => { const { api } = useContext(AssetContext) return api } export const useSetAssetApi = (): UseAssetManagerResult['setAssetsApi'] => { const { setAssetsApi } = useContext(AssetContext) return setAssetsApi }