UNPKG

@nosto/shopify-hydrogen

Version:

Component library to implement Nosto within Shopify Hydrogen

29 lines (28 loc) 1.5 kB
import * as React from 'react'; import { parseGid } from '@shopify/hydrogen'; import createScriptLoader from '../createScriptLoader'; import { useHydrogenRootFallback } from '../lib/useHydrogenRootFallback'; import { NostoProvider as NostoComponent } from "@nosto/nosto-react"; import { NostoSession } from './NostoSession'; export function NostoProvider({ children, currency: currencyProp, nonce, ...props }) { const root = useHydrogenRootFallback(); const language = props.shopifyMarkets?.language ?? root.language; const currentVariation = props.currentVariation ?? currencyProp; const rootMarketGid = root.nostoProviderData?.localization?.country?.market?.id; const propMarketId = props.shopifyMarkets?.marketId; const marketId = propMarketId != null ? typeof propMarketId === 'number' ? propMarketId : propMarketId.startsWith('gid://') ? (parseGid(propMarketId).id ?? propMarketId) : propMarketId : rootMarketGid ? (parseGid(rootMarketGid).id ?? rootMarketGid) : undefined; const shopifyMarkets = language && marketId ? { language, marketId } : undefined; const scriptLoader = React.useMemo(() => createScriptLoader(nonce), [nonce]); return (<NostoComponent {...props} {...(shopifyMarkets ? { shopifyMarkets } : {})} currentVariation={currentVariation} scriptLoader={scriptLoader}> <NostoSession /> {children} </NostoComponent>); }