import * as metaDataAPI from '../apis/metaDataApi' import { metaDataActions } from '../state/metaData' import { SagaStore } from '../state/types' export const callApiWithMetaData = async ( store: SagaStore, api: Promise<{ isSuccess: boolean data: any }>, isCallWithMetaData = true, ) => { const { metaData: { isLoaded = false }, } = store.getState() if (isCallWithMetaData === false || isLoaded) { try { return await api } catch (error) {} } try { const dataAll = await Promise.all([metaDataAPI.getMetaDataApi(), api]) const [metaDataResponse, apiResponse] = dataAll const { isSuccess: isSuccessMetaData, data: { metaData = {} }, } = metaDataResponse if (isSuccessMetaData) { store.dispatch( metaDataActions.save({ metaData, isLoaded: true, loading: false, }), ) } else { // } const { isSuccess, data } = apiResponse if (isSuccess) { return { isSuccess: true, data: data, } } else { // throw new CustomError('Get list of horse failed.') } } catch (error) {} } export const getMetaDataProps = async (store: SagaStore) => { const { metaData: { isLoaded = false }, } = store.getState() if (isLoaded === false) { const metaDataResponse = await metaDataAPI.getMetaDataApi() const { isSuccess, data: { metaData = {} }, } = metaDataResponse if (isSuccess) { await store.dispatch( metaDataActions.save({ metaData, isLoaded: true, loading: false, }), ) } } }