UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

46 lines (38 loc) 1.28 kB
import { RequestBuilder } from "@applicaster/zapp-pipes-v2-client"; import * as React from "react"; import { useInflatedUrl } from "@applicaster/zapp-react-native-utils/reactHooks/feed/useInflatedUrl"; import { reactHooksLogger } from "../logger"; export const logger = reactHooksLogger.addSubsystem("build-pipes-url"); type PipesBuildRequestObject = { url: string; requestParams?: AxiosRequestConfig | null; error?: Error; }; export function useBuildPipesUrl({ url, mapping = {}, requestBuilder = new RequestBuilder(), }): PipesBuildRequestObject { const [requestParams, setRequestParams] = React.useState<object | null>(null); const [error, setError] = React.useState(null); const inflatedUrl = useInflatedUrl({ feedUrl: url, mapping }); const buildRequest = async (_url) => { try { const result = await requestBuilder.build(_url); setRequestParams(result); } catch (e) { setError(e); logger.error({ message: e.message, data: { url: inflatedUrl } }); } }; React.useEffect(() => { if (inflatedUrl && !requestParams) { buildRequest(inflatedUrl); } }, [inflatedUrl]); return { url: inflatedUrl || "", requestParams, // TODO should it be: || {} ? error: error || undefined, }; }