From 054964b22d2339cb4ff064ea4ff5cbdb5352bb41 Mon Sep 17 00:00:00 2001 From: Moriel Schottlender Date: Mon, 17 Jul 2017 14:38:58 -0700 Subject: [PATCH] RCFilters: Don't emit wikipage.content on first load If the first load uses existing DOM elements, don't emit that hook. Only emit if we're pulling from the server for new results. Bug: T165350 Change-Id: Ib17fdd16a908808f99fe8506c50c61d90ad4addc --- .../dm/mw.rcfilters.dm.ChangesListViewModel.js | 5 +++-- .../src/mediawiki.rcfilters/mw.rcfilters.Controller.js | 3 ++- .../ui/mw.rcfilters.ui.ChangesListWrapperWidget.js | 10 +++++++--- .../ui/mw.rcfilters.ui.FormWrapperWidget.js | 10 +++++++--- 4 files changed, 19 insertions(+), 9 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 c839a13fbe..49c0b82ca8 100644 --- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js +++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js @@ -52,10 +52,11 @@ * * @param {jQuery|string} changesListContent * @param {jQuery} $fieldset + * @param {boolean} [isInitialDOM] Using the initial (already attached) DOM elements */ - mw.rcfilters.dm.ChangesListViewModel.prototype.update = function ( changesListContent, $fieldset ) { + mw.rcfilters.dm.ChangesListViewModel.prototype.update = function ( changesListContent, $fieldset, isInitialDOM ) { this.valid = true; - this.emit( 'update', changesListContent, $fieldset ); + this.emit( 'update', changesListContent, $fieldset, isInitialDOM ); }; }( mediaWiki ) ); diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js index 58585668df..0abfb34257 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js @@ -136,7 +136,8 @@ // so it gets processed this.changesListModel.update( $changesList.length ? $changesList : 'NO_RESULTS', - $( 'fieldset.rcoptions' ).first() + $( 'fieldset.rcoptions' ).first(), + true // We're using existing DOM elements ); } diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js index 843acce780..6512f04f68 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js @@ -87,8 +87,10 @@ * Respond to changes list model update * * @param {jQuery|string} $changesListContent The content of the updated changes list + * @param {jQuery} $fieldset The content of the updated fieldset + * @param {boolean} isInitialDOM Whether $changesListContent is the existing (already attached) DOM */ - mw.rcfilters.ui.ChangesListWrapperWidget.prototype.onModelUpdate = function ( $changesListContent ) { + mw.rcfilters.ui.ChangesListWrapperWidget.prototype.onModelUpdate = function ( $changesListContent, $fieldset, isInitialDOM ) { var conflictItem, $message = $( '
' ) .addClass( 'mw-rcfilters-ui-changesListWrapperWidget-results' ), @@ -130,8 +132,10 @@ // Apply highlight this.applyHighlight(); - // Make sure enhanced RC re-initializes correctly - mw.hook( 'wikipage.content' ).fire( this.$element ); + if ( !isInitialDOM ) { + // Make sure enhanced RC re-initializes correctly + mw.hook( 'wikipage.content' ).fire( this.$element ); + } } this.popPending(); }; diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js index dbee65c776..9c82451778 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js @@ -99,14 +99,18 @@ * * @param {jQuery|string} $changesList Updated changes list * @param {jQuery} $fieldset Updated fieldset + * @param {boolean} isInitialDOM Whether $changesListContent is the existing (already attached) DOM */ - mw.rcfilters.ui.FormWrapperWidget.prototype.onChangesModelUpdate = function ( $changesList, $fieldset ) { + mw.rcfilters.ui.FormWrapperWidget.prototype.onChangesModelUpdate = function ( $changesList, $fieldset, isInitialDOM ) { this.$submitButton.prop( 'disabled', false ); // Replace the entire fieldset this.$element.empty().append( $fieldset.contents() ); - // Make sure enhanced RC re-initializes correctly - mw.hook( 'wikipage.content' ).fire( this.$element ); + + if ( !isInitialDOM ) { + // Make sure enhanced RC re-initializes correctly + mw.hook( 'wikipage.content' ).fire( this.$element ); + } this.cleanUpFieldset(); -- 2.20.1