Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function() {
- let wait = 0;
- var timeToLaunch = 3000;
- var arrayList = [{
- GIVE_PRISE_BY_TOTAL_CART_LIMIT: false,
- whiteListPrizeProductId: 15136,
- whiteProductList: [14642, 14577, 14522, 14385, 12741, 12720],
- blackListIds: [14582, 13658, 13659, 13660, 13661, 13662, 13663, 13664, 14951],
- totalCartLimitPrizeProductId: 14902,
- PRIZE_PRODUCT_CART_LIMIT: 300,
- prizeProductId: 14530,
- turnList: true,
- }];
- function isUserLogeedIn() {
- var adoricUserStorageKey = localStorage.getItem('adoric_firstName');
- if (!adoricUserStorageKey) {
- return false;
- }
- if (adoricUserStorageKey && adoricUserStorageKey.includes('undefined')) {
- return false;
- }
- return true;
- }
- function customerDataReload() {
- require(['Magento_Customer/js/customer-data'], function(customerData) {
- var sections = ['cart'];
- customerData.invalidate(sections);
- customerData.reload(sections, true);
- });
- }
- function isPrizeProduct(product) {
- return parseInt(product.product_id) === totalCartLimitPrizeProductId;
- }
- function isProductInTheCart(productId) {
- const productItems = getCurrentProductList();
- return productItems.some(item => parseInt(item.product_id) === productId);
- }
- function getCurrentProductList() {
- var cartData = JSON.parse(window.localStorage.getItem('mage-cache-storage'));
- if (!cartData || !cartData.cart || !cartData.cart.items) {
- return [];
- }
- return cartData.cart.items;
- }
- function updateMiniCart() {
- var timeToLaunch = 3500;
- setTimeout(function() {
- require(['Magento_Customer/js/customer-data'], function(customerData) {
- var sections = ['cart'];
- customerData.invalidate(sections);
- customerData.reload(sections, true);
- });
- }, timeToLaunch);
- }
- function checkProductInCartList(productIdList) {
- let addProductToCartFlag = false;
- var productItems = getCurrentProductList();
- productIdList.forEach(item => {
- productItems.forEach(productItem => {
- if (item === parseInt(productItem.product_id)) {
- addProductToCartFlag = true;
- }
- });
- });
- return addProductToCartFlag;
- }
- function addPrizeToCart(productId, whiteListPrizeProductId, totalCartLimitPrizeProductId) {
- /*ADD PRIZE*/
- if (isProductInTheCart(whiteListPrizeProductId)) {
- console.info('whiteListPrizeProductId in the cart!');
- return null;
- }
- if (isProductInTheCart(isPrizeProduct)) {
- console.info('isPrizeProduct in the cart!');
- return null;
- }
- if (isProductInTheCart(totalCartLimitPrizeProductId)) {
- console.info('totalCartLimitPrizeProductId in the cart!');
- return null;
- }
- var PRIZE_PRODUCT_CART_LIMIT = 300;
- var productItems = getCurrentProductList();
- try {
- var formData = new FormData();
- formData.append('product', productId);
- formData.append('selected_configurable_option', '');
- formData.append('related_product', '');
- formData.append('item', productId);
- formData.append('qty', 1);
- var formKey = document.querySelector('INPUT[name="form_key"]');
- if (formKey) {
- formData.append('form_key', formKey.value);
- }
- var xhr = new XMLHttpRequest();
- xhr.addEventListener('readystatechange', function() {
- if (this.readyState === 4) {
- updateMiniCart();
- window.location.reload();
- }
- });
- xhr.open('POST', 'https://il.loccitane.com/checkout/cart/add/uenc//product/' + productId + '/', true);
- xhr.send(formData);
- } catch (error) {
- console.log(error);
- }
- }
- function removePrizeProduct(productId) {
- /*REMOVE PRIZE*/
- var timeToLaunch = 3000;
- var item_id, formKey, formKeyInput = document.querySelector('INPUT[name="form_key"]');
- if (formKeyInput) {
- formKey = formKeyInput.getAttribute('value');
- }
- var productItems = getCurrentProductList();
- if (!isProductInTheCart(productId)) {
- return;
- }
- productItems.forEach(function(item) {
- if (parseInt(item.product_id) === productId) {
- item_id = item.item_id;
- }
- });
- try {
- var productData = {
- id: item_id,
- form_key: formKey,
- product: productId,
- related_product: '',
- qty: 1
- };
- var data = '';
- for (key in productData) {
- data += key + '=' + productData[key] + '&';
- }
- var xhr = new XMLHttpRequest();
- xhr.withCredentials = true;
- xhr.addEventListener('readystatechange', function() {
- if (this.readyState === 4) {
- updateMiniCart();
- window.location.reload();
- }
- });
- xhr.open('POST', 'https://il.loccitane.com/checkout/cart/delete/');
- xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded; charset=UTF-8');
- xhr.setRequestHeader('cache-control', 'no-cache');
- xhr.send(data);
- } catch (error) {
- console.log(error);
- }
- }
- function customerDataReload() {
- require(['Magento_Customer/js/customer-data'], function(customerData) {
- var sections = ['cart'];
- customerData.invalidate(sections);
- customerData.reload(sections, true);
- });
- }
- function checkProductAndPrice(dataFromList) {
- var cartData = JSON.parse(window.localStorage.getItem('mage-cache-storage'));
- if (wait < 100 && (!cartData || !cartData.cart)) {
- wait++;
- setTimeout(function() {
- checkProductAndPrice(dataFromList);
- }, 200);
- return;
- }
- var productItems = getCurrentProductList();
- var checkbox = document.querySelector('#loyalty-birthday');
- if (isUserLogeedIn() && checkProductInCartList(dataFromList.whiteProductList) && (!checkbox || (checkbox && !(checkbox.checked)))) {
- addPrizeToCart(dataFromList.whiteListPrizeProductId, dataFromList.whiteListPrizeProductId, dataFromList.totalCartLimitPrizeProductId);
- } else {
- isProductInTheCart(dataFromList.whiteListPrizeProductId) && removePrizeProduct(dataFromList.whiteListPrizeProductId);
- isProductInTheCart(dataFromList.prizeProductId) && removePrizeProduct(dataFromList.prizeProductId);
- }
- if (dataFromList.GIVE_PRISE_BY_TOTAL_CART_LIMIT && cartData && cartData.cart && cartData.cart.subtotalWithDiscount && cartData.cart.items && cartData.cart.summary_count) {
- var productItems = cartData.cart.items;
- var checkbox = document.querySelector('#loyalty-birthday');
- var currentTotalPrice = parseFloat(cartData.cart.subtotalWithDiscount).toFixed(0);
- if (parseInt(currentTotalPrice) >= dataFromList.PRIZE_PRODUCT_CART_LIMIT && !productItems.some(isPrizeProduct) && !checkProductInCartList(dataFromList.blackListIds)) {
- console.info('log 300+ case in progress!');
- console.info('!isProductInTheCart(totalCartLimitPrizeProductId) - ', !isProductInTheCart(dataFromList.totalCartLimitPrizeProductId));
- !isProductInTheCart(dataFromList.totalCartLimitPrizeProductId) && addPrizeToCart(dataFromList.totalCartLimitPrizeProductId, dataFromList.whiteListPrizeProductId, dataFromList.totalCartLimitPrizeProductId);
- }
- if ((parseInt(currentTotalPrice) < dataFromList.PRIZE_PRODUCT_CART_LIMIT && productItems.some(isPrizeProduct)) || (checkbox && checkbox.checked)) {
- console.info('log -300 case in progress!');
- console.info('isProductInTheCart(totalCartLimitPrizeProductId) - ', isProductInTheCart(dataFromList.totalCartLimitPrizeProductId));
- isProductInTheCart(dataFromList.totalCartLimitPrizeProductId) && removePrizeProduct(dataFromList.totalCartLimitPrizeProductId);
- }
- }
- }
- function countProductsCheck(event) {
- var carouselBtn = event.target.closest('.dai-carousel-btn');
- var homeBtn = event.target.closest('.tocart');
- var moreBtn = event.target.closest('.qty-more');
- var lessBtn = event.target.closest('.qty-less');
- var actionPrimary = event.target.closest('.action-primary');
- if (homeBtn || carouselBtn || moreBtn || lessBtn || actionPrimary) {
- setTimeout(function() {
- checkListAndRunLogik();
- }, timeToLaunch);
- }
- }
- function updateByCheckboxToggle() {
- var checkbox = document.querySelector('#loyalty-birthday');
- checkbox && checkbox.addEventListener('change', checkListAndRunLogik);
- }
- function stateCheck(callback) {
- if (document.readyState === 'complete') {
- callback();
- } else {
- setTimeout(stateCheck, 500, callback);
- }
- }
- function checkListAndRunLogik() {
- arrayList.forEach(function(item) {
- if (item.turnList) checkProductAndPrice(item);
- });
- }
- if (document.readyState !== 'complete') {
- stateCheck(function() {
- setTimeout(function() {
- customerDataReload();
- updateByCheckboxToggle();
- document.querySelector('body').addEventListener('click', countProductsCheck);
- document.querySelector('body').addEventListener('touchend', countProductsCheck);
- checkListAndRunLogik();
- }, timeToLaunch);
- });
- } else {
- setTimeout(function() {
- customerDataReload();
- updateByCheckboxToggle();
- document.querySelector('body').addEventListener('click', countProductsCheck);
- document.querySelector('body').addEventListener('touchend', countProductsCheck);
- checkListAndRunLogik();
- }, timeToLaunch);
- }
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement