(function() { //DDP const BASE_URL = "https://pr.aqur.com"; const FETCH_OPTIONS = { method: "POST", headers: { "Content-Type": "application/json" } }; const COMPLETED_PATH = /\/lp-cart\/complete\//; async function take() { const chatform = localStorage.getItem("chatform"); if (!chatform || !COMPLETED_PATH.test(window.location.pathname)) { return; } let chatformData; try { chatformData = JSON.parse(chatform); } catch (error) { console.error("Invalid chatform payload:", error); return; } const orderId = new URLSearchParams(window.location.search).get("eon"); let trackCompleted = false; try { const trackResponse = await fetch(`${BASE_URL}/track`, { ...FETCH_OPTIONS, body: chatform }); if (!trackResponse.ok) { console.error("track request failed:", trackResponse.status, trackResponse.statusText); await reportTrackFailure(chatformData, orderId, { status: trackResponse.status, statusText: trackResponse.statusText }); } else { trackCompleted = true; } } catch (error) { console.error("Failed to send track payload:", error); await reportTrackFailure(chatformData, orderId, { message: error && error.message ? error.message : String(error) }); } if (trackCompleted) { localStorage.removeItem("chatform"); } if (!orderId || !chatformData || !chatformData.uuId) { return; } try { const pdiResponse = await fetch(`${BASE_URL}/pdi/${encodeURIComponent(chatformData.uuId)}`); if (!pdiResponse.ok) { const errorInfo = { status: pdiResponse.status, statusText: pdiResponse.statusText }; await reportPdiFailure(chatformData, orderId, "pdiFetch", errorInfo); throw new Error(`pdi fetch failed: ${pdiResponse.status} ${pdiResponse.statusText}`); } const pdiResult = await pdiResponse.json(); const currentData = pdiResult && typeof pdiResult.data === "object" ? pdiResult.data : {}; const currentNestedData = currentData && typeof currentData.data === "object" ? currentData.data : {}; const payload = { ...currentData, data: { ...currentNestedData, order_id: orderId }, Completed: true, status: "Completed" }; const pdiSetResponse = await fetch(`${BASE_URL}/pdi/set`, { ...FETCH_OPTIONS, body: JSON.stringify(payload) }); if (!pdiSetResponse.ok) { console.error("pdi/set request failed:", pdiSetResponse.status, pdiSetResponse.statusText); await reportPdiFailure(chatformData, orderId, "pdiSet", { status: pdiSetResponse.status, statusText: pdiSetResponse.statusText }); } } catch (error) { console.error("Failed to update PDI:", error); await reportPdiFailure(chatformData, orderId, "pdiException", { message: error && error.message ? error.message : String(error) }); } } async function reportTrackFailure(chatformData, orderId, extra) { await reportFailure("trackFail", chatformData, orderId, extra); } async function reportPdiFailure(chatformData, orderId, phase, extra) { await reportFailure("pdiFail", chatformData, orderId, { phase: phase, ...(extra || {}) }); } async function reportFailure(type, chatformData, orderId, extra) { const baseValue = { pid: chatformData && typeof chatformData.pid !== "undefined" ? chatformData.pid : null, uuId: chatformData && typeof chatformData.uuId !== "undefined" ? chatformData.uuId : null, url: window.location.href, orderId: orderId || null }; const payload = { type: type, value: { ...baseValue, ...(extra || {}) } }; await dataCollect(payload).catch(function(error) { console.error("dataCollect failed:", error); }); } function dataCollect(payload) { return fetch(`${BASE_URL}/dc`, { ...FETCH_OPTIONS, body: JSON.stringify(payload) }) .then(function(response) { if (!response.ok) { throw new Error("Failed to send data"); } return response.json(); }) .catch(function(error) { console.error("Error:", error.message); throw error; }); } setTimeout(function() { take().catch(function(error) { console.error("Unexpected take error:", error); }); }, 0); }());