<script>
const yotpoAppKey = '{{ APP KEY }}';
function getProductFromSession() {
const sessionProductRaw = sessionStorage.getItem("ccProduct");
if (sessionProductRaw) {
try {
return JSON.parse(sessionProductRaw);
} catch (err) {
console.warn("Failed to parse ccProduct:", err);
}
}
return null;
}
function getProductFromFallback() {
const currentItem = sessionStorage.getItem("currentItem");
if (!currentItem || !window.pageData?.selectedCampaign?.products) {
return null;
}
const [campaignProductId] = currentItem.split(".");
return pageData.selectedCampaign.products.find(
(p) => p.campaignProductId == campaignProductId
) || null;
}
function buildYotpoWidget(product) {
const container = document.getElementById("yotpo-widget-container");
if (!container || !product) {
return;
}
const currency = window.pageData?.selectedCampaign?.currency || "USD";
container.innerHTML = "";
const widget = document.createElement("div");
widget.className = "yotpo yotpo-main-widget";
widget.id = "cc-id-dLCT1UskDWeD";
widget.setAttribute("data-product-id", product.externalProductId);
widget.setAttribute("data-price", product.variants ? product.variants[0].price : product.price);
widget.setAttribute("data-currency", currency);
widget.setAttribute("data-name", product.productName);
widget.setAttribute("data-url", window.location.href);
widget.setAttribute("data-image-url", product.imageUrl);
container.appendChild(widget);
const reviewStars = document.querySelector(".yotpo.bottomLine");
if (reviewStars) {
reviewStars.setAttribute("data-yotpo-product-id", product.externalProductId);
}
}
function loadYotpoScript(appKey) {
const script = document.createElement("script");
script.type = "text/javascript";
script.async = true;
script.src = `//staticw2.yotpo.com/${appKey}/widget.js`;
const firstScript = document.getElementsByTagName("script")[0];
firstScript.parentNode.insertBefore(script, firstScript);
}
const immediateProduct = getProductFromSession();
// Initiate For Storefront
if (immediateProduct) {
buildYotpoWidget(immediateProduct);
loadYotpoScript(yotpoAppKey);
} else {
window.onload = function () {
const fallbackProduct = getProductFromFallback();
if (!fallbackProduct) {
return;
}
buildYotpoWidget(fallbackProduct);
loadYotpoScript(yotpoAppKey);
};
}
</script>