const params = new Proxy(new URLSearchParams(window.location.search), { get: (searchParams, prop) => searchParams.get(prop), }); if (params.clickid) { setCookie('clickid', params.clickid, 30); } let clickid = getCookie('clickid'); if (params.clickid) { clickid = params.clickid; } if (clickid) { updateCart(); } function setCookie(cname, cvalue, exdays) { const d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); let expires = "expires="+ d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } function getCookie(name) { var cookies = document.cookie.split(';') for(var i=0; i < cookies.length; i++) { var c = cookies[i].replace(/^s+/, '') if(c.indexOf(name+'=') == 1) { console.log(decodeURIComponent(c.substring(name.length+2).split('+').join(' '))); return decodeURIComponent(c.substring(name.length+2).split('+').join(' ')) } } return null } async function updateCart() { const cart = getCart(); try { setCartAttributes({ ...cart.attributes, clickid: clickid }) } catch(e) { console.error(`Error updating cart: ${e}`); } } async function getCart() { console.log('getting cart'); try { const cart = await fetch("/cart.json"); const result = await cart.text(); console.log('cart output'); console.log(result); } catch (e) { console.error(`Failed to get request, Shopify returned: ${e}`); } } function setCartAttributes(attributes = {}) { console.log('Setting cart referral attributes.'); console.log(attributes); var xhr = new XMLHttpRequest(); xhr.open('POST', '/cart/update.json', true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.send(JSON.stringify({ attributes: attributes })); }