From 8de793cb5e58ea711e11fabb84336587dfc6fa29 Mon Sep 17 00:00:00 2001 From: Stephane Bisson Date: Thu, 21 Sep 2017 16:43:23 -0400 Subject: [PATCH] RCFilters: Make live update polling configurable Introducing $wgStructuredChangeFiltersLiveUpdatePollingRate to configure the polling rate for live update. Allows disabling polling completely by setting it to 0. Change-Id: I13d3a4bb642c55a16e442f8f8d650c637f13f72c --- includes/DefaultSettings.php | 7 +++++++ includes/specialpage/ChangesListSpecialPage.php | 5 +++++ .../src/mediawiki.rcfilters/mw.rcfilters.Controller.js | 7 +++++-- resources/src/mediawiki.rcfilters/mw.rcfilters.js | 2 +- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index cdb7ce86d1..3ca8d8c8b9 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -6864,6 +6864,13 @@ $wgStructuredChangeFiltersEnableExperimentalViews = false; */ $wgStructuredChangeFiltersOnWatchlist = false; +/** + * Polling rate, in seconds, used by the 'live update' and 'view newest' features + * of the RCFilters app on SpecialRecentChanges and Special:Watchlist. + * 0 to disable completely. + */ +$wgStructuredChangeFiltersLiveUpdatePollingRate = 3; + /** * Use new page patrolling to check new pages on Special:Newpages */ diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index dd0dd92a98..6415b2cdb1 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -624,6 +624,11 @@ abstract class ChangesListSpecialPage extends SpecialPage { ] ); + $out->addJsConfigVars( + 'StructuredChangeFiltersLiveUpdatePollingRate', + $this->getConfig()->get( 'StructuredChangeFiltersLiveUpdatePollingRate' ) + ); + if ( static::$savedQueriesPreferenceName ) { $savedQueries = FormatJson::decode( $this->getUser()->getOption( static::$savedQueriesPreferenceName ) diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js index 507c97938b..ed2a73f343 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js @@ -263,7 +263,10 @@ this.initializing = false; this.switchView( 'default' ); - this._scheduleLiveUpdate(); + this.pollingRate = mw.config.get( 'StructuredChangeFiltersLiveUpdatePollingRate' ); + if ( this.pollingRate ) { + this._scheduleLiveUpdate(); + } }; /** @@ -519,7 +522,7 @@ * @private */ mw.rcfilters.Controller.prototype._scheduleLiveUpdate = function () { - setTimeout( this._doLiveUpdate.bind( this ), 3000 ); + setTimeout( this._doLiveUpdate.bind( this ), this.pollingRate * 1000 ); }; /** diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.js index d2033289b5..e28f34abd3 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.js @@ -46,7 +46,7 @@ } }, featureFlags: { - liveUpdate: mw.config.get( 'wgStructuredChangeFiltersLiveUpdateSupported' ) && + liveUpdate: mw.config.get( 'StructuredChangeFiltersLiveUpdatePollingRate' ) && ( mw.user.options.get( 'rcenhancedfilters' ) || new mw.Uri().query.liveupdate ) } }; -- 2.20.1