RC Filters: Don't apply/clear highlighting while still initializing
authorKosta Harlan <kharlan@wikimedia.org>
Wed, 27 Jun 2018 20:58:22 +0000 (16:58 -0400)
committerRoan Kattouw <roan.kattouw@gmail.com>
Wed, 27 Jun 2018 22:37:01 +0000 (15:37 -0700)
this.controller.isInitialized() is still false on page load, we don't want to
clear/apply highlights at this stage.

Remove Controller's this.initializing in favor of this.initialized,
expose it through isInitialized(), and remove ChangesListWrapperWidget's
this.filterModelInitialized since it's now unused.

Bug: T198359
Change-Id: I284ded2c6dd891dfb3efab5c6800c26a806ce306

resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js

index 3e900f0..52438ca 100644 (file)
@@ -34,7 +34,7 @@
                this.requestCounter = {};
                this.baseFilterState = {};
                this.uriProcessor = null;
-               this.initializing = false;
+               this.initialized = false;
                this.wereSavedQueriesSaved = false;
 
                this.prevLoggedItems = [];
                        }
                }
 
-               // Check whether we need to load defaults.
-               // We do this by checking whether the current URI query
-               // contains any parameters recognized by the system.
-               // If it does, we load the given state.
-               // If it doesn't, we have no values at all, and we assume
-               // the user loads the base-page and we load defaults.
-               // Defaults should only be applied on load (if necessary)
-               // or on request
-               this.initializing = true;
-
                if ( defaultSavedQueryExists ) {
                        // This came from the server, meaning that we have a default
                        // saved query, but the server could not load it, probably because
                        );
                }
 
-               this.initializing = false;
+               this.initialized = true;
                this.switchView( 'default' );
 
                this.pollingRate = mw.config.get( 'StructuredChangeFiltersLiveUpdatePollingRate' );
                }
        };
 
+       /**
+        * Check if the controller has finished initializing.
+        * @return {boolean} Controller is initialized
+        */
+       mw.rcfilters.Controller.prototype.isInitialized = function () {
+               return this.initialized;
+       };
+
        /**
         * Extracts information from the changes list DOM
         *
index 94b2505..3a83eec 100644 (file)
                this.changesListViewModel = changesListViewModel;
                this.controller = controller;
                this.highlightClasses = null;
-               this.filtersModelInitialized = false;
 
                // Events
                this.filtersViewModel.connect( this, {
                        itemUpdate: 'onItemUpdate',
-                       highlightChange: 'onHighlightChange',
-                       initialize: 'onFiltersModelInitialize'
+                       highlightChange: 'onHighlightChange'
                } );
                this.changesListViewModel.connect( this, {
                        invalidate: 'onModelInvalidate',
 
        OO.inheritClass( mw.rcfilters.ui.ChangesListWrapperWidget, OO.ui.Widget );
 
-       /**
-        * Respond to filters model initialize event
-        */
-       mw.rcfilters.ui.ChangesListWrapperWidget.prototype.onFiltersModelInitialize = function () {
-               this.filtersModelInitialized = true;
-       };
-
        /**
         * Get all available highlight classes
         *
@@ -94,7 +85,9 @@
         * Respond to a filter item model update
         */
        mw.rcfilters.ui.ChangesListWrapperWidget.prototype.onItemUpdate = function () {
-               if ( this.filtersModelInitialized && this.filtersViewModel.isHighlightEnabled() ) {
+               if ( this.controller.isInitialized() && this.filtersViewModel.isHighlightEnabled() ) {
+                       // this.controller.isInitialized() is still false during page load,
+                       // we don't want to clear/apply highlights at this stage.
                        this.clearHighlight();
                        this.applyHighlight();
                }