UNPKG

@nosto/nosto-react

Version:

Component library to simply implementing Nosto on React.

52 lines (42 loc) 1.39 kB
import { useState, useEffect } from "react" import type { NostoProviderProps } from "../components/NostoProvider" import scriptLoaderFn from "./scriptLoader" import { init, initNostoStub, isNostoLoaded, nostojs } from "@nosto/nosto-js" type NostoScriptProps = Pick<NostoProviderProps, "account" | "host" | "shopifyMarkets" | "loadScript" | "scriptLoader"> const defaultAttributes = { "nosto-client-script": "" } export function useLoadClientScript(props: NostoScriptProps) { const { scriptLoader = scriptLoaderFn, account, shopifyMarkets, loadScript = true } = props const [clientScriptLoaded, setClientScriptLoaded] = useState(false) useEffect(() => { function scriptOnload() { setClientScriptLoaded(true) } initNostoStub() nostojs(api => api.setAutoLoad(false)) if (!loadScript) { nostojs(scriptOnload) return } async function initClientScript() { await init({ merchantId: account, shopifyInternational: shopifyMarkets, options: { attributes: defaultAttributes }, scriptLoader }) scriptOnload() } // Load Nosto client script if not already loaded externally if (!isNostoLoaded() || shopifyMarkets) { initClientScript() } }, [shopifyMarkets?.marketId, shopifyMarkets?.language]) return { clientScriptLoaded } }