/* global wc_cart_fragments_params, Cookies */
jQuery( function( $ ) {
// wc_cart_fragments_params is required to continue, ensure the object exists
if ( typeof wc_cart_fragments_params === 'undefined' ) {
return false;
}
/* Storage Handling */
var $supports_html5_storage = true,
cart_hash_key = wc_cart_fragments_params.cart_hash_key;
try {
$supports_html5_storage = ( 'sessionStorage' in window && window.sessionStorage !== null );
window.sessionStorage.setItem( 'wc', 'test' );
window.sessionStorage.removeItem( 'wc' );
window.localStorage.setItem( 'wc', 'test' );
window.localStorage.removeItem( 'wc' );
} catch( err ) {
$supports_html5_storage = false;
}
/* Cart session creation time to base expiration on */
function set_cart_creation_timestamp() {
if ( $supports_html5_storage ) {
sessionStorage.setItem( 'wc_cart_created', ( new Date() ).getTime() );
}
}
/** Set the cart hash in both session and local storage */
function set_cart_hash( cart_hash ) {
if ( $supports_html5_storage ) {
localStorage.setItem( cart_hash_key, cart_hash );
sessionStorage.setItem( cart_hash_key, cart_hash );
}
}
var $fragment_refresh = {
url: wc_cart_fragments_params.wc_ajax_url.toString().replace( '%%endpoint%%', 'get_refreshed_fragments' ),
type: 'POST',
data: {
time: new Date().getTime()
},
timeout: wc_cart_fragments_params.request_timeout,
success: function( data ) {
if ( data && data.fragments ) {
$.each( data.fragments, function( key, value ) {
$( key ).replaceWith( value );
});
if ( $supports_html5_storage ) {
sessionStorage.setItem( wc_cart_fragments_params.fragment_name, JSON.stringify( data.fragments ) );
set_cart_hash( data.cart_hash );
if ( data.cart_hash ) {
set_cart_creation_timestamp();
}
}
$( document.body ).trigger( 'wc_fragments_refreshed' );
}
},
error: function() {
$( document.body ).trigger( 'wc_fragments_ajax_error' );
}
};
/* Named callback for refreshing cart fragment */
function refresh_cart_fragment() {
$.ajax( $fragment_refresh );
}
/* Cart Handling */
if ( $supports_html5_storage ) {
var cart_timeout = null,
day_in_ms = ( 24 * 60 * 60 * 1000 );
$( document.body ).on( 'wc_fragment_refresh updated_wc_div', function() {
refresh_cart_fragment();
});
$( document.body ).on( 'added_to_cart removed_from_cart', function( event, fragments, cart_hash ) {
var prev_cart_hash = sessionStorage.getItem( cart_hash_key );
if ( prev_cart_hash === null || prev_cart_hash === undefined || prev_cart_hash === '' ) {
set_cart_creation_timestamp();
}
sessionStorage.setItem( wc_cart_fragments_params.fragment_name, JSON.stringify( fragments ) );
set_cart_hash( cart_hash );
});
$( document.body ).on( 'wc_fragments_refreshed', function() {
clearTimeout( cart_timeout );
cart_timeout = setTimeout( refresh_cart_fragment, day_in_ms );
} );
// Refresh when storage changes in another tab
$( window ).on( 'storage onstorage', function ( e ) {
if (
cart_hash_key === e.originalEvent.key && localStorage.getItem( cart_hash_key ) !== sessionStorage.getItem( cart_hash_key )
) {
refresh_cart_fragment();
}
});
// Refresh when page is shown after back button (safari)
$( window ).on( 'pageshow' , function( e ) {
if ( e.originalEvent.persisted ) {
$( '.widget_shopping_cart_content' ).empty();
$( document.body ).trigger( 'wc_fragment_refresh' );
}
} );
try {
var wc_fragments = JSON.parse( sessionStorage.getItem( wc_cart_fragments_params.fragment_name ) ),
cart_hash = sessionStorage.getItem( cart_hash_key ),
cookie_hash = Cookies.get( 'woocommerce_cart_hash'),
cart_created = sessionStorage.getItem( 'wc_cart_created' );
if ( cart_hash === null || cart_hash === undefined || cart_hash === '' ) {
cart_hash = '';
}
if ( cookie_hash === null || cookie_hash === undefined || cookie_hash === '' ) {
cookie_hash = '';
}
if ( cart_hash && ( cart_created === null || cart_created === undefined || cart_created === '' ) ) {
throw 'No cart_created';
}
if ( cart_created ) {
var cart_expiration = ( ( 1 * cart_created ) + day_in_ms ),
timestamp_now = ( new Date() ).getTime();
if ( cart_expiration < timestamp_now ) {
throw 'Fragment expired';
}
cart_timeout = setTimeout( refresh_cart_fragment, ( cart_expiration - timestamp_now ) );
}
if ( wc_fragments && wc_fragments['div.widget_shopping_cart_content'] && cart_hash === cookie_hash ) {
$.each( wc_fragments, function( key, value ) {
$( key ).replaceWith(value);
});
$( document.body ).trigger( 'wc_fragments_loaded' );
} else {
throw 'No fragment';
}
} catch( err ) {
refresh_cart_fragment();
}
} else {
refresh_cart_fragment();
}
/* Cart Hiding */
if ( Cookies.get( 'woocommerce_items_in_cart' ) > 0 ) {
$( '.hide_cart_widget_if_empty' ).closest( '.widget_shopping_cart' ).show();
} else {
$( '.hide_cart_widget_if_empty' ).closest( '.widget_shopping_cart' ).hide();
}
$( document.body ).on( 'adding_to_cart', function() {
$( '.hide_cart_widget_if_empty' ).closest( '.widget_shopping_cart' ).show();
});
// Customiser support.
var hasSelectiveRefresh = (
'undefined' !== typeof wp &&
wp.customize &&
wp.customize.selectiveRefresh &&
wp.customize.widgetsPreview &&
wp.customize.widgetsPreview.WidgetPartial
);
if ( hasSelectiveRefresh ) {
wp.customize.selectiveRefresh.bind( 'partial-content-rendered', function() {
refresh_cart_fragment();
} );
}
});
1WIN Official In Russia – Segurança Fênix
Ir para o conteúdo
1win Скачать App На Андроид Apk Ios ️ киромарусом Официального Сайта Content Отличия спасась Настольной Версии Установка Мобильного Клиента На Андроид как Получить Выплату в 1win Приложении? Стратегии Игры: а Повысить Шансы в Выиг͏рыш основные Возможности Приложения “мобильная Версия Сайта 1 Win И Приложения 1win Преимущества использования 1win На Пк Функционал Мобильной Утилиты следуйте Инструкциям […]
“1win Официальный Сайт Букмекерской Конторы 1вин Content Играйте же Lucky” “jet Играть а Авиатор 1вин Онлайн Игры На Деньги в Онлайн Казино 1win In (1вин) – Букмекерская Контора No Deposit Bonus В Казино 1win официальным Сайт 1win только: Основные Характеристики официального Сайта 1win как Создать Аккаунт на Сайте 1 Вин Казино? нельзя Ли Заработать а […]
1win%3A Букмекерская Контора И Онлайн Казино “1win Ставки На Спорт И Онлайн Казино Бонус 500% Content Игровые Автоматы От 1win%3A Играйте В Новые Слоты! Является конечно 1win Надежным Казино%3F Служба помощи” “казино 1win%3A Здесь%2C этого Помочь Вам Приложение мысленно Оплаты В Онлайн-казино 1win In Бонусы In Ставки На Спорт Как Получить Бонусы%3F Почему Выбрать 1win%3F […]
1win Ставки На Спорт а Онлайн Казино Бонус 500% 1win Вход и Учетную Запись Content Работа Техподдержки Клиентов Вход и Официальный Сайт 1win Официальный Сайт Бк 1win Зеркало 1win In Войти том Казино Скачайте Приложение 1win дли Мобильных Устройств Ios%2Fandroid! In Регистрация” “прошло Соцсети Топ 5 знаменитых Игровых Автоматов а 1вин Казино Win Ставки Игровые […]