;(async () => { console.log('SCRIPT PIXEL LOADED') try { console.log('SCRIPT PIXEL: self.document.cookie', self.document.cookie) } catch (error) { console.log(error) console.log('SCRIPT PIXEL ERROR: self.document.cookie') } try { console.log('SCRIPT PIXEL: self.localStorage', self.localStorage) } catch (error) { console.log(error) console.log('SCRIPT PIXEL ERROR: self.localStorage') } const storeId = '2125c473-357d-4f20-9954-783342d7a4e5' const mutation = ` mutation CreatePixelEventByStoreId($id: String!, $input: CreatePixelEventInput!) { createPixelEventByStoreId(id: $id, input: $input) { code } } ` const uuidv4 = () => ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) => (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)) const getCookie = (name) => { console.log('PIXEL ENDPOINT: getCookie() ---> self.document.cookie', self.document.cookie) let match = self.document.cookie.match(new RegExp(name + '=([^;]+)')) const cookie = match ? match[1] : '' console.log('PIXEL ENDPOINT: getCookie() ---> cookie VALUE!!!', cookie) return cookie } const setCookie = (name, value) => { console.log('PIXEL ENDPOINT: setCookie() ---> name, value', name, value) console.log('PIXEL ENDPOINT: setCookie() ---> self.document.cookie', self.document.cookie) const maxAge = 60 * 60 * 24 * 365 * 2 // 2 years self.document.cookie = `${name}=${value}; max-age=${maxAge}; path=/` console.log('PIXEL ENDPOINT: setCookie() ---> successssss?!?!?!?!?!') } let pixelEndpoint = 'https://expressjs-production-d8a0.up.railway.app' + '/api/v1/data' const sendBeacon = (payload) => { console.log('sendBeacon POST!!!!...', JSON.stringify(payload)) try { fetch(pixelEndpoint, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(payload), keepalive: true, }) } catch (e) { console.log(e) console.log("fetch didn't work") } } console.log('PIXEL ENDPOINT: localStorage CHECK Get ---> self.localStorage', self.localStorage) let id = self.localStorage.getItem('FoxTraxId') console.log('PIXEL ENDPOINT: localStorage CHECK Get ----> Id', id) if (!id) { id = getCookie('FoxTraxId') console.log('PIXEL ENDPOINT ----> cookie Id', id) if (id) { console.log('PIXEL ENDPOINT: localStorage CHECK Set ---> self.localStorage', self.localStorage) self.localStorage.setItem('FoxTraxId', id) console.log('PIXEL ENDPOINT: localStorage CHECK Set ----> Id', id) } } if (!id) { id = uuidv4() console.log('PIXEL ENDPOINT ----> generated uuid', id) try { setCookie('FoxTraxId', id) } catch (e) {} try { console.log('PIXEL ENDPOINT: localStorage GEN Set ---> self.localStorage', self.localStorage) self.localStorage.setItem('FoxTraxId', id) console.log('PIXEL ENDPOINT: localStorage GEN Set ----> Id', id) } catch (e) {} } console.log('SCRIPT PIXEL: self.Shopify Object:', self.Shopify) if (self.Shopify) { console.log('SCRIPT PIXEL: self.Shopify.on', self.Shopify.on) if (self.Shopify.on) { self.Shopify.on('CheckoutAmended', function (newOrder, previousOrder) { console.log('SCRIPT PIXEL: CheckoutAmended', newOrder, previousOrder) const variables = { id: storeId, input: { // anonymousId: localStorage.getItem('FoxTraxId'), anonymousId: self.localStorage.getItem('FoxTraxId'), order: { email: newOrder.customer.email, sourceOrderId: newOrder.id.toString(), currency: newOrder.currency, totalPrice: parseFloat(newOrder.totalPrice), checkoutToken: newOrder.checkoutToken, isUpdate: true, }, url: self.location.href, }, } console.log('SCRIPT PIXEL: self.Shopify.on("CheckoutAmended")', { query: mutation, variables }) sendBeacon({ query: mutation, variables }) }) } const order = self.Shopify.order const checkout = self.Shopify.checkout const variables = { id: storeId, input: { anonymousId: self.localStorage.getItem('FoxTraxId'), order: { email: order ? order.customer.email : checkout.email, sourceOrderId: order ? order.id.toString() : checkout.order_id.toString(), currency: order ? order.currency : checkout.currency, totalPrice: order ? parseFloat(order.totalPrice) : parseFloat(checkout.total_price), checkoutToken: order ? order.checkoutToken : checkout.token, isUpdate: false, }, url: self.location.href, }, } console.log('SCRIPT PIXEL: self.Shopify', { query: mutation, variables }) sendBeacon({ query: mutation, variables }) } else { const variables = { id: storeId, input: { // anonymousId: localStorage.getItem('FoxTraxId'), anonymousId: self.localStorage.getItem('FoxTraxId'), url: self.location.href, }, } console.log('SCRIPT PIXEL: BASIC', { query: mutation, variables }) sendBeacon({ query: mutation, variables }) } })()