Followup I59dfcfb25c, language change work with out event logging

In I59dfcfb25c, for logging events when page is navigating away, we
used callbacks with mw.hook. That is wrong approach. If event logging
is disabled those callbacks will never called: it broke language change
and all use cases which navigates away from current page.

Event logging should not interfere with any ULS functionality. If ULS
functionality depends on callbacks from event logging, it is wrong.

In this patch, we give a small time window to make sure event logging is
fired, but we won't wait for its success or failure.

If eventlogging is disabled, this time window does not exist.

Change-Id: I0b7d9d8b9d1d01b99422010596ebfa80b2589d04
This commit is contained in:
Santhosh Thottingal
2013-08-17 11:15:33 +05:30
committed by Nikerabbit
parent 1f66cb22bc
commit 7649b47f5c
4 changed files with 50 additions and 36 deletions

View File

@@ -247,10 +247,19 @@
// It looks like the tipsy is always created from scratch so that
// there wont be multiple event handlers bound to same click.
$( 'a.uls-prevlang-link' ).on( 'click.ulstipsy', function ( event ) {
var deferred = $.Deferred();
event.preventDefault();
mw.hook( 'mw.uls.language.revert' ).fire( function () {
deferred.done( function () {
mw.uls.changeLanguage( event.target.lang );
} );
mw.hook( 'mw.uls.language.revert' ).fire( deferred );
// Delay is zero if event logging is not enabled
window.setTimeout( function () {
deferred.resolve();
}, mw.config.get( 'wgULSEventLogging' ) * 500 );
} );
tipsyTimer = window.setTimeout( function () {
hideTipsy();