UNPKG

@mcmhomes/panorama-viewer

Version:
42 lines (32 loc) 1.46 kB
import React from 'react'; import {PanoramaLoaderVariationsParser} from './PanoramaLoaderVariationsParser.jsx'; import {useVariationJsonData} from '../utils/PanoramaVariationObtainingUtilsReact.jsx'; import {memo, useMemo} from '../utils/PanoramaUtilsReact.jsx'; import {STRING} from '../utils/PanoramaUtils.jsx'; export const PanoramaLoaderVariationsRetriever = memo(({variations:givenVariations = undefined, homeVersion:givenHomeVersion, ...props}) => { const {homeId, host, getErrorWidget, getLoadingWidget} = props; const [variations, variationsLoading, variationsError] = useVariationJsonData({homeId, homeVersion:givenHomeVersion, host}); const errorComponent = useMemo(() => { if(variationsLoading) { return null; } if(!variations?.version || !variations?.url || !variations?.data) { return getErrorWidget({canRetry:true, id:'could-not-connect-to-home', message:'Couldn\'t connect to home: ' + homeId, reason:STRING(variationsError), data:{homeId, homeVersion:givenHomeVersion, host}}); } }, [variationsLoading, variationsError, homeId, givenHomeVersion, host, getErrorWidget, variations?.version, variations?.url, variations?.data]); if(variationsLoading) { return getLoadingWidget(); } if(errorComponent) { return errorComponent; } return (<> <PanoramaLoaderVariationsParser homeVersion={STRING(variations.version)} homeUrl={STRING(variations.url)} variations={variations.data} {...props}/> </>); });