RCFilters UI: Check that filter exists before changing its state
[lhc/web/wiklou.git] / resources / src / mediawiki.rcfilters / mw.rcfilters.Controller.js
index 14eabe2..669420c 100644 (file)
        mw.rcfilters.Controller.prototype.toggleFilterSelect = function ( filterName, isSelected ) {
                var filterItem = this.filtersModel.getItemByName( filterName );
 
+               if ( !filterItem ) {
+                       // If no filter was found, break
+                       return;
+               }
+
                isSelected = isSelected === undefined ? !filterItem.isSelected() : isSelected;
 
                if ( filterItem.isSelected() !== isSelected ) {
        mw.rcfilters.Controller.prototype.toggleHighlight = function () {
                this.filtersModel.toggleHighlight();
                this.updateURL();
+
+               if ( this.filtersModel.isHighlightEnabled() ) {
+                       mw.hook( 'RcFilters.highlight.enable' ).fire();
+               }
        };
 
        /**
         * @param {array|object|string} filters
         */
        mw.rcfilters.Controller.prototype.trackHighlight = function ( action, filters ) {
-               filters = $.type( filters ) === 'string' ? { name: filters } : filters;
-               filters = $.type( filters ) === 'object' ? [ filters ] : filters;
+               filters = typeof filters === 'string' ? { name: filters } : filters;
+               filters = !Array.isArray( filters ) ? [ filters ] : filters;
                mw.track(
                        'event.ChangesListHighlights',
                        {