WordPress.org

Make WordPress Core

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

File 23216-small-heartbeat-changes.diff, 3.5 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                        shouldAutoStart = true, 
     45                        hasActiveConnection = true; 
    4446 
    45                 this.autostart = true; 
    46                 this.connectionLost = false; 
     47                /** 
     48                 * If a value is specified, this function will set the internal value of the `shouldAutoStart` setting. Always 
     49                 * returns the value of `shouldAutoStart` 
     50                 * 
     51                 * @param value 
     52                 * @returns boolean 
     53                 * @private 
     54                 */ 
     55                self.shouldAutoStart = function( value ) { 
     56                        if ( typeof value === 'boolean' ) { 
     57                                return shouldAutoStart = value; 
     58                        } 
    4759 
     60                        return shouldAutoStart; 
     61                }; 
     62 
     63                /** 
     64                 * If a value is specified, this function will set the internal value of the `hasActiveConnection` setting. 
     65                 * Always returns the value of `hasActiveConnection` 
     66                 * 
     67                 * @param value (optional) 
     68                 * @returns boolean 
     69                 * @private 
     70                 */ 
     71                self.hasActiveConnection = function( value ) { 
     72                        if ( typeof value === 'boolean' ) { 
     73                                return hasActiveConnection = value; 
     74                        } 
     75 
     76                        return hasActiveConnection; 
     77                }; 
     78 
    4879                if ( typeof( window.heartbeatSettings ) == 'object' ) { 
    4980                        settings = $.extend( {}, window.heartbeatSettings ); 
    5081 
     
    121152                                                break; 
    122153                                } 
    123154 
    124                                 if ( trigger && ! self.connectionLost ) { 
    125                                         self.connectionLost = true; 
     155                                if ( trigger && self.hasActiveConnection() === true ) { 
     156                                        self.hasActiveConnection( false ); 
    126157                                        $(document).trigger( 'heartbeat-connection-lost', [error] ); 
    127158                                } 
    128                         } else if ( self.connectionLost ) { 
     159                        } else if ( self.hasActiveConnection() === false ) { 
    129160                                errorcount = 0; 
    130                                 self.connectionLost = false; 
     161                                self.hasActiveConnection( true ); 
    131162                                $(document).trigger( 'heartbeat-connection-restored' ); 
    132163                        } 
    133164                } 
     
    152183 
    153184                        // If nothing to send (nothing is expecting a response), 
    154185                        // schedule the next tick and bail 
    155                         if ( empty && ! self.connectionLost ) { 
     186                        if ( empty && self.hasActiveConnection() === true ) { 
    156187                                connecting = false; 
    157188                                next(); 
    158189                                return; 
     
    179210                                        return errorstate( 'empty' ); 
    180211 
    181212                                // Clear error state 
    182                                 if ( self.connectionLost ) 
     213                                if ( self.hasActiveConnection() === false ) 
    183214                                        errorstate(); 
    184215 
    185216                                if ( response.nonces_expired ) { 
     
    205236                                errorstate( textStatus || 'unknown' ); 
    206237                                self.error( jqXHR, textStatus, error ); 
    207238                        }); 
    208                 }; 
     239                } 
    209240 
    210241                function next() { 
    211242                        var delta = time() - tick, t = interval; 
     
    333364                // Check for user activity every 30 seconds. 
    334365                window.setInterval( function(){ checkUserActive(); }, 30000 ); 
    335366 
    336                 if ( this.autostart ) { 
     367                if ( self.shouldAutoStart() === true ) { 
    337368                        $(document).ready( function() { 
    338369                                // Start one tick (15 sec) after DOM ready 
    339370                                running = true; 
     
    344375 
    345376                this.hasFocus = function() { 
    346377                        return hasFocus; 
    347                 } 
     378                }; 
    348379 
    349380                /** 
    350381                 * Get/Set the interval 
     
    420451                        errorstate(); 
    421452                        running = false; 
    422453                        return true; 
    423                 } 
     454                }; 
    424455 
    425456                /** 
    426457                 * Enqueue data to send with the next XHR 
     
    447478                                return true; 
    448479                        } 
    449480                        return false; 
    450                 } 
     481                }; 
    451482 
    452483                /** 
    453484                 * Check if data with a particular handle is queued 
     
    457488                 */ 
    458489                this.isQueued = function( handle ) { 
    459490                        return queue[handle]; 
    460                 } 
    461         } 
     491                }; 
     492        }; 
    462493 
    463494        $.extend( Heartbeat.prototype, { 
    464495                tick: function( data, textStatus, jqXHR ) {