From a01142f92caeb98d54aa6de738c33fcdae11427c Mon Sep 17 00:00:00 2001 From: Stephane Bisson Date: Wed, 13 Dec 2017 10:10:41 -0500 Subject: [PATCH] RCFilters: Fix live update When Id55702ecbe6b96ee57453d4f86f20bd94a401d7c introduced the MainWrapperWidget, it changed the order on initialization, which prevents ChangesListViewModel from getting the initial value of the 'from' parameter and thus disables polling for new changes. This patch ensures ChangesListViewModel is given the initial form in its constructor so it can extract what it needs from it before the page DOM is being transformed. Bug: T182788 Change-Id: I1b72790194877ff0f200c87e4f40a942f1ccac3b --- .../dm/mw.rcfilters.dm.ChangesListViewModel.js | 11 +++++++---- .../src/mediawiki.rcfilters/mw.rcfilters.init.js | 5 +++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js index 15fe334261..96b44100ea 100644 --- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js +++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js @@ -4,17 +4,19 @@ * * @mixins OO.EventEmitter * + * @param {jQuery} $initialFieldset The initial server-generated legacy form content * @constructor */ - mw.rcfilters.dm.ChangesListViewModel = function MwRcfiltersDmChangesListViewModel() { + mw.rcfilters.dm.ChangesListViewModel = function MwRcfiltersDmChangesListViewModel( $initialFieldset ) { // Mixin constructor OO.EventEmitter.call( this ); this.valid = true; this.newChangesExist = false; - this.nextFrom = null; this.liveUpdate = false; this.unseenWatchedChanges = false; + + this.extractNextFrom( $initialFieldset ); }; /* Initialization */ @@ -74,7 +76,6 @@ * @param {jQuery|string} changesListContent * @param {jQuery} $fieldset * @param {string} noResultsDetails Type of no result error - * timeout. * @param {boolean} [isInitialDOM] Using the initial (already attached) DOM elements * @param {boolean} [separateOldAndNew] Whether a logical separation between old and new changes is needed * @fires update @@ -114,7 +115,9 @@ */ mw.rcfilters.dm.ChangesListViewModel.prototype.extractNextFrom = function ( $fieldset ) { var data = $fieldset.find( '.rclistfrom > a, .wlinfo' ).data( 'params' ); - this.nextFrom = data ? data.from : null; + if ( data && data.from ) { + this.nextFrom = data.from; + } }; /** diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js index 582d25fa34..565ac0a8b8 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js @@ -11,11 +11,12 @@ var $topSection, mainWrapperWidget, conditionalViews = {}, + $initialFieldset = $( 'fieldset.cloptions' ), savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ), daysPreferenceName = mw.config.get( 'wgStructuredChangeFiltersDaysPreferenceName' ), limitPreferenceName = mw.config.get( 'wgStructuredChangeFiltersLimitPreferenceName' ), filtersModel = new mw.rcfilters.dm.FiltersViewModel(), - changesListModel = new mw.rcfilters.dm.ChangesListViewModel(), + changesListModel = new mw.rcfilters.dm.ChangesListViewModel( $initialFieldset ), savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel( filtersModel ), specialPage = mw.config.get( 'wgCanonicalSpecialPageName' ), controller = new mw.rcfilters.Controller( @@ -82,7 +83,7 @@ '.mw-changeslist-timeout', '.mw-changeslist-notargetpage' ].join( ', ' ) ), - $formContainer: $( 'fieldset.cloptions' ) + $formContainer: $initialFieldset } ); -- 2.20.1