WordPress.org

Make WordPress Core

Changeset 24749


Ignore:
Timestamp:
07/19/13 01:39:48 (9 months ago)
Author:
nacin
Message:

Simplify heartbeat API.

  • Move to a method to check connection errors, a better framework for future changes.
  • Remove start(), stop(), autostart.

props carldanley.
fixes #23216.

Location:
trunk/wp-includes/js
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/js/autosave.js

    r24747 r24749  
    247247function autosave_enable_buttons() { 
    248248    jQuery(document).trigger('autosave-enable-buttons'); 
    249     if ( ! wp.heartbeat.connectionLost ) { 
     249    if ( ! wp.heartbeat.hasConnectionError() ) { 
    250250        // delay that a bit to avoid some rare collisions while the DOM is being updated. 
    251251        setTimeout(function(){ 
  • trunk/wp-includes/js/heartbeat.js

    r24705 r24749  
    4141            userActiveEvents, 
    4242            winBlurTimeout, 
    43             frameBlurTimeout = -1; 
    44  
    45         this.autostart = true; 
    46         this.connectionLost = false; 
     43            frameBlurTimeout = -1, 
     44            hasConnectionError = false; 
     45 
     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' ) { 
     
    122130                } 
    123131 
    124                 if ( trigger && ! self.connectionLost ) { 
    125                     self.connectionLost = true; 
     132                if ( trigger && ! self.hasConnectionError() ) { 
     133                    hasConnectionError = true; 
    126134                    $(document).trigger( 'heartbeat-connection-lost', [error] ); 
    127135                } 
    128             } else if ( self.connectionLost ) { 
     136            } else if ( self.hasConnectionError() ) { 
    129137                errorcount = 0; 
    130                 self.connectionLost = false; 
     138                hasConnectionError = false; 
    131139                $(document).trigger( 'heartbeat-connection-restored' ); 
    132140            } 
     
    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() ) { 
    156164                connecting = false; 
    157165                next(); 
     
    180188 
    181189                // Clear error state 
    182                 if ( self.connectionLost ) 
     190                if ( self.hasConnectionError() ) 
    183191                    errorstate(); 
    184192 
     
    206214                self.error( jqXHR, textStatus, error ); 
    207215            }); 
    208         }; 
     216        } 
    209217 
    210218        function next() { 
     
    333341        // Check for user activity every 30 seconds. 
    334342        window.setInterval( function(){ checkUserActive(); }, 30000 ); 
    335  
    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         } 
     343        $(document).ready( function() { 
     344            // Start one tick (15 sec) after DOM ready 
     345            running = true; 
     346            tick = time(); 
     347            next(); 
     348        }); 
    344349 
    345350        this.hasFocus = function() { 
    346351            return hasFocus; 
    347         } 
     352        }; 
    348353 
    349354        /** 
     
    401406            return tempInterval ? tempInterval / 1000 : interval / 1000; 
    402407        }; 
    403  
    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         } 
    424408 
    425409        /** 
     
    448432            } 
    449433            return false; 
    450         } 
     434        }; 
    451435 
    452436        /** 
     
    458442        this.isQueued = function( handle ) { 
    459443            return queue[handle]; 
    460         } 
    461     } 
     444        }; 
     445    }; 
    462446 
    463447    $.extend( Heartbeat.prototype, { 
Note: See TracChangeset for help on using the changeset viewer.