WordPress.org

Make WordPress Core

Ticket #23216: 23216-small-heartbeat-changes.3.diff

File 23216-small-heartbeat-changes.3.diff, 3.9 KB (added by carldanley, 9 months ago)
  • wp-includes/js/heartbeat.js

     
    4040                        isUserActive, 
    4141                        userActiveEvents, 
    4242                        winBlurTimeout, 
    43                         frameBlurTimeout = -1; 
     43                        frameBlurTimeout = -1, 
     44                        hasConnectionError = false; 
    4445 
    45                 this.autostart = true; 
    46                 this.connectionLost = false; 
     46                /** 
     47                 * Returns a boolean that's indicative of whether or not there is a connection error 
     48                 * 
     49                 * @returns boolean 
     50                 * @private 
     51                 */ 
     52                this.hasConnectionError = function() { 
     53                        return hasConnectionError; 
     54                }; 
    4755 
    4856                if ( typeof( window.heartbeatSettings ) == 'object' ) { 
    4957                        settings = $.extend( {}, window.heartbeatSettings ); 
     
    121129                                                break; 
    122130                                } 
    123131 
    124                                 if ( trigger && ! self.connectionLost ) { 
    125                                         self.connectionLost = true; 
     132                                if ( trigger && self.hasConnectionError() === false ) { 
     133                                        hasConnectionError = true; 
    126134                                        $(document).trigger( 'heartbeat-connection-lost', [error] ); 
    127135                                } 
    128                         } else if ( self.connectionLost ) { 
     136                        } else if ( self.hasConnectionError() === true ) { 
    129137                                errorcount = 0; 
    130                                 self.connectionLost = false; 
     138                                hasConnectionError = false; 
    131139                                $(document).trigger( 'heartbeat-connection-restored' ); 
    132140                        } 
    133141                } 
     
    152160 
    153161                        // If nothing to send (nothing is expecting a response), 
    154162                        // schedule the next tick and bail 
    155                         if ( empty && ! self.connectionLost ) { 
     163                        if ( empty && self.hasConnectionError() === false ) { 
    156164                                connecting = false; 
    157165                                next(); 
    158166                                return; 
     
    179187                                        return errorstate( 'empty' ); 
    180188 
    181189                                // Clear error state 
    182                                 if ( self.connectionLost ) 
     190                                if ( self.hasConnectionError() === true ) 
    183191                                        errorstate(); 
    184192 
    185193                                if ( response.nonces_expired ) { 
     
    205213                                errorstate( textStatus || 'unknown' ); 
    206214                                self.error( jqXHR, textStatus, error ); 
    207215                        }); 
    208                 }; 
     216                } 
    209217 
    210218                function next() { 
    211219                        var delta = time() - tick, t = interval; 
     
    332340 
    333341                // Check for user activity every 30 seconds. 
    334342                window.setInterval( function(){ checkUserActive(); }, 30000 ); 
     343                $(document).ready( function() { 
     344                        // Start one tick (15 sec) after DOM ready 
     345                        running = true; 
     346                        tick = time(); 
     347                        next(); 
     348                }); 
    335349 
    336                 if ( this.autostart ) { 
    337                         $(document).ready( function() { 
    338                                 // Start one tick (15 sec) after DOM ready 
    339                                 running = true; 
    340                                 tick = time(); 
    341                                 next(); 
    342                         }); 
    343                 } 
    344  
    345350                this.hasFocus = function() { 
    346351                        return hasFocus; 
    347                 } 
     352                }; 
    348353 
    349354                /** 
    350355                 * Get/Set the interval 
     
    401406                        return tempInterval ? tempInterval / 1000 : interval / 1000; 
    402407                }; 
    403408 
    404                 // Start. Has no effect if heartbeat is already running 
    405                 this.start = function() { 
    406                         if ( running ) 
    407                                 return false; 
    408  
    409                         running = true; 
    410                         connect(); 
    411                         return true; 
    412                 }; 
    413  
    414                 // Stop. If a XHR is in progress, abort it 
    415                 this.stop = function() { 
    416                         if ( self.xhr && self.xhr.readyState != 4 ) 
    417                                 self.xhr.abort(); 
    418  
    419                         // Reset the error state 
    420                         errorstate(); 
    421                         running = false; 
    422                         return true; 
    423                 } 
    424  
    425409                /** 
    426410                 * Enqueue data to send with the next XHR 
    427411                 * 
     
    447431                                return true; 
    448432                        } 
    449433                        return false; 
    450                 } 
     434                }; 
    451435 
    452436                /** 
    453437                 * Check if data with a particular handle is queued 
     
    457441                 */ 
    458442                this.isQueued = function( handle ) { 
    459443                        return queue[handle]; 
    460                 } 
    461         } 
     444                }; 
     445        }; 
    462446 
    463447        $.extend( Heartbeat.prototype, { 
    464448                tick: function( data, textStatus, jqXHR ) { 
  • wp-includes/js/autosave.js

     
    242242 
    243243function autosave_enable_buttons() { 
    244244        jQuery(document).trigger('autosave-enable-buttons'); 
    245         if ( ! wp.heartbeat.connectionLost ) { 
     245        if ( wp.heartbeat.hasConnectionError() === false ) { 
    246246                // delay that a bit to avoid some rare collisions while the DOM is being updated. 
    247247                setTimeout(function(){ 
    248248                        var parent = jQuery('#submitpost');