WordPress.org

Make WordPress Core

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

File 23216-small-heartbeat-changes.diff, 3.5 KB (added by carldanley, 5 years 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 ) {