@judgeme/shopify-hydrogen
Version:
- This module helps integrate Judge.me Widgets to Hydrogen V2 storefront app. Currently, it works fully on the client side and widget data will be fetched from Judge.me CDN - To see support for Hydrogen V1, please visit https://www.npmjs.com/package/@judg
50 lines • 2.02 kB
JavaScript
import { useEffect } from "react";
const useJudgeme = ({ shopDomain, publicToken, cdnHost, delay = 500, }) => {
useEffect(() => {
if (!shopDomain || !publicToken || !cdnHost) {
console.log("CONFIG ERROR: Missing config values for store domain, store public token, cdn host");
return;
}
const shopCredentials = `
if (typeof jdgm === 'undefined') {
let jdgm = {};
jdgm.SHOP_DOMAIN = '${shopDomain}';
jdgm.PLATFORM = 'shopify';
jdgm.PUBLIC_TOKEN = '${publicToken}';
window.jdgm = jdgm;
};
`;
fetch(cdnHost + "/widget_preloader.js")
.then((res) => res.text())
.then((text) => {
const preloaderFunction = `function jdgm_preloader(){${text}}`;
const shopCredentialsScript = document.createElement("script");
const preloaderScript = document.createElement("script");
const installedScript = document.createElement("script");
shopCredentialsScript.innerText = shopCredentials;
preloaderScript.innerText = preloaderFunction;
installedScript.src = cdnHost + "/assets/installed.js";
document.head.append(shopCredentialsScript, preloaderScript, installedScript);
console.log("Judge.me script loaded");
});
}, []);
useEffect(() => {
if (window.jdgm_rerender) {
window.clearTimeout(window.jdgm_rerender);
}
window.jdgm_rerender = window.setTimeout(() => {
window.clearTimeout(window.jdgm_rerender);
if (window.jdgm_preloader && !window.jdgmCacheServer) {
window.jdgm_preloader();
}
else if (window.jdgmCacheServer) {
window.jdgmCacheServer.reloadAll();
}
else {
console.log("missing Judge.me script");
}
}, delay);
});
};
export default useJudgeme;
//# sourceMappingURL=JudgemeLoader.js.map