Hasil Pencarian
const fsServerRequestURLObj = new URL(window.fsServerRequestURL);
function fsGetSession() {
const SESSION_TOKEN_LIFE = 1800;
const now = Math.round(Date.now() / 1000);
const sessionLC = localStorage.getItem("fast-session-token");
if (sessionLC) {
const currentSession = JSON.parse(sessionLC);
if (now - currentSession.lastActive >= SESSION_TOKEN_LIFE) {
return withLS(JSON.stringify({
lastActive: now,
start: now,
}));
} else {
return withLS(JSON.stringify({
lastActive: now,
start: currentSession.start
}));
}
} else {
return withLS(JSON.stringify({
lastActive: now,
start: now,
}));
}
}
const fsSession = fsGetSession();
function fsSaveDelayedReport(productData, position, rec) {
const delayedReportObj = {
uuid: responseData.body.uuid,
storeID: fsServerRequestURLObj.searchParams.get('store_id'),
platform: 'Shopify',
userSession: localStorage.getItem("isp_token_1" || ''),
sessionToken: fsSession?.start,
cartToken: localStorage.getItem("__isp_cart") || '',
qs: getReferrerBasedAudiences(),
params: {
sort_by: responseData.body?.sort_by || fsServerRequestURLObj.searchParams.get('sort_by'),
pagenum: responseData.body?.p ?? 1,
id: productData.id,
pos: position,
original_category_id: responseData.body?.category_id,
original_smart_navigation: responseData.body?.category_name,
rec: rec
},
endpoint: "post_load"
}
localStorage.setItem("product-seen-from-category-fs-delayed-report", JSON.stringify(delayedReportObj));
}
function fsReportCallback(event) {
const targetEl = event.target.closest('.fs-results-product-card');
const productPos = Number(targetEl.dataset.productPosition);
const productID = targetEl.dataset.productId;
const productData = responseData.body.items.find(item => item.id === productID);
const personalizedProducts = responseData.body?.personalized_products || [];
const rec = personalizedProducts.includes(Number(productData.id)) ? '1' : '0';
fsSaveDelayedReport(productData, productPos, rec);
}
const serverProductElements = [...targetElement.querySelectorAll('.fs-results-product-card')];
serverProductElements.forEach((el, idx) => el.addEventListener('click', fsReportCallback));
function reportPageView() {
const serverData = responseData.body;
const personalizationParams = window.fastSimonUtils?.getPersonalizationParams('category');
const variation = localStorage.getItem("fast-debug-variation") || localStorage.getItem("fast-variation") || undefined;
let promotilesDataToReport = [];
serverData.items.forEach(item => {
if(item?.promotile) {
promotilesDataToReport.push({id: item.id, name: item.title, link: item.link, thumbnail: item.image});
}
})
const repParams = {
UUID: serverData.uuid,
store_id: fsServerRequestURLObj.searchParams.get('store_id'),
pagenum: serverData?.p ?? 1,
sort_by: serverData?.sort_by || fsServerRequestURLObj.searchParams.get('sort_by'),
original_category_id: serverData?.category_id,
original_smart_navigation: serverData?.category_name,
serp: serverData?.category_name,
products: serverData.items.filter(item => !item?.promotile).map(item => item.id).toString(),
rescount: serverData.total_results,
pp: personalizationParams ? (serverData?.personalized_products || []).toString() : undefined,
spv: personalizationParams ? personalizationParams.spv : undefined,
cart_token: localStorage.getItem("__isp_cart") || '',
session: fsSession?.start,
st: localStorage.getItem("isp_token_1") || undefined,
prev_up_type: 20,
doc_ref: document.referrer,
qs: getReferrerBasedAudiences(),
variation_id: variation,
promo_tiles: promotilesDataToReport?.length ? JSON.stringify(promotilesDataToReport) : undefined
}
for (const key in repParams) {
if (repParams[key] === undefined) {
delete repParams[key];
}
}
const report = new URLSearchParams(repParams);
const queryString = report.toString();
const serverURL = `https://ping.fastsimon.com/post_load?${queryString}`;
fetch(serverURL, {keepalive: true});
window.fsPageViewedReportFired = true;
}
reportPageView();
} catch (e) {
console.log('fs error:', e);
}
}