import React from "react"; import { ComponentDataSourceContext, ZappPipesDataProps } from "./types"; import { StaticFeedResolver } from "./resolvers/StaticFeedResolver"; import { UrlFeedResolver } from "./resolvers/UrlFeedResolver"; import { NullFeedResolver } from "./resolvers/NullFeedResolver"; type ResolverSelectorProps = ComponentDataSourceContext & { children: (dataProps: ZappPipesDataProps) => React.ReactNode; }; export function ResolverSelector(props: ResolverSelectorProps) { const { getStaticComponentFeed, component, feedUrl, children } = props; const renderDefaultResolver = ( fallbackChildren: (dataProps: ZappPipesDataProps) => React.ReactNode ) => { if (feedUrl || component?.data?.source) { return {fallbackChildren}; } return {fallbackChildren}; }; if (getStaticComponentFeed) { return ( {(zappPipesDataProps) => { const { data, loading, error } = zappPipesDataProps.zappPipesData; const shouldFallback = !loading && data === null && !error; if (shouldFallback) { return renderDefaultResolver(children); } return children(zappPipesDataProps); }} ); } return renderDefaultResolver(children); }