Set timers to refresh cart fragments before they expire.
This commit is contained in:
parent
e94969f5dd
commit
61e6f708d5
|
@ -48,9 +48,17 @@ jQuery( function( $ ) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Named callback for refreshing cart fragment */
|
||||||
|
function refresh_cart_fragment() {
|
||||||
|
$.ajax( $fragment_refresh );
|
||||||
|
}
|
||||||
|
|
||||||
/* Cart Handling */
|
/* Cart Handling */
|
||||||
if ( $supports_html5_storage ) {
|
if ( $supports_html5_storage ) {
|
||||||
|
|
||||||
|
var cart_timeout = null,
|
||||||
|
day_in_ms = ( 24 * 60 * 60 * 1000 );
|
||||||
|
|
||||||
$( document.body ).bind( 'added_to_cart', function( event, fragments, cart_hash ) {
|
$( document.body ).bind( 'added_to_cart', function( event, fragments, cart_hash ) {
|
||||||
var prev_cart_hash = sessionStorage.getItem( 'wc_cart_hash' );
|
var prev_cart_hash = sessionStorage.getItem( 'wc_cart_hash' );
|
||||||
|
|
||||||
|
@ -62,12 +70,16 @@ jQuery( function( $ ) {
|
||||||
sessionStorage.setItem( 'wc_cart_hash', cart_hash );
|
sessionStorage.setItem( 'wc_cart_hash', cart_hash );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$( document.body ).bind( 'wc_fragments_refreshed', function() {
|
||||||
|
clearTimeout( cart_timeout );
|
||||||
|
cart_timeout = setTimeout( refresh_cart_fragment, day_in_ms );
|
||||||
|
} );
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var wc_fragments = $.parseJSON( sessionStorage.getItem( wc_cart_fragments_params.fragment_name ) ),
|
var wc_fragments = $.parseJSON( sessionStorage.getItem( wc_cart_fragments_params.fragment_name ) ),
|
||||||
cart_hash = sessionStorage.getItem( 'wc_cart_hash' ),
|
cart_hash = sessionStorage.getItem( 'wc_cart_hash' ),
|
||||||
cookie_hash = $.cookie( 'woocommerce_cart_hash'),
|
cookie_hash = $.cookie( 'woocommerce_cart_hash'),
|
||||||
cart_created = sessionStorage.getItem( 'wc_cart_created' ),
|
cart_created = sessionStorage.getItem( 'wc_cart_created' );
|
||||||
day_in_ms = ( 24 * 60 * 60 * 1000 );
|
|
||||||
|
|
||||||
if ( cart_hash === null || cart_hash === undefined || cart_hash === '' ) {
|
if ( cart_hash === null || cart_hash === undefined || cart_hash === '' ) {
|
||||||
cart_hash = '';
|
cart_hash = '';
|
||||||
|
@ -81,9 +93,14 @@ jQuery( function( $ ) {
|
||||||
throw 'No cart_created';
|
throw 'No cart_created';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( cart_created && ( ( 1 * cart_created ) + day_in_ms ) < ( new Date() ).getTime() ) {
|
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';
|
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 ) {
|
if ( wc_fragments && wc_fragments['div.widget_shopping_cart_content'] && cart_hash === cookie_hash ) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue