@kyakaze/shopify-hydrogen-2
Version:
This module helps integrate Judge.me Widgets to Hydrogen V2 storefront app. Currently, it works mostly on the client side. Review data will be fetched from Judge.me CDN To see support for Hydrogen V1, please visit https://www.npmjs.com/package/@judgeme/sh
50 lines • 2.01 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("Judgeme 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 script");
}
}, delay);
});
};
export default useJudgeme;
//# sourceMappingURL=JudgemeLoader.js.map