From: Moriel Schottlender Date: Thu, 22 Jun 2017 01:21:56 +0000 (-0700) Subject: RCFilters: Actually recognize a saved query default and delete when removed X-Git-Tag: 1.31.0-rc.0~2920^2 X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_aide%28?a=commitdiff_plain;h=0e530143cc0bdd1aeda1d07d2b0f33e8c6328738;p=lhc%2Fweb%2Fwiklou.git RCFilters: Actually recognize a saved query default and delete when removed Compare ID to saved default even if those were saved in different formats (number vs string) when setting default on initialization and when deleting the default when deleting the item. Change-Id: Ia211a7166b3ff514c0e2a34bb370cf2d50057745 --- diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js index 3ffc12e5eb..efccc11053 100644 --- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js +++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js @@ -68,7 +68,8 @@ * @fires initialize */ mw.rcfilters.dm.SavedQueriesModel.prototype.initialize = function ( savedQueries, baseState ) { - var items = []; + var items = [], + defaultItem = null; savedQueries = savedQueries || {}; @@ -76,7 +77,9 @@ this.clearItems(); $.each( savedQueries.queries || {}, function ( id, obj ) { - var normalizedData = $.extend( true, {}, baseState, obj.data ); + var item, + normalizedData = $.extend( true, {}, baseState, obj.data ), + isDefault = String( savedQueries.default ) === String( id ); // Backwards-compat fix: We stored the 'highlight' state with // "1" and "0" instead of true/false; for already-stored states, @@ -87,17 +90,23 @@ // for existing users, who are only betalabs users at the moment. normalizedData.highlights.highlight = !!Number( normalizedData.highlights.highlight ); - items.push( - new mw.rcfilters.dm.SavedQueryItemModel( - id, - obj.label, - normalizedData, - { 'default': savedQueries.default === id } - ) + item = new mw.rcfilters.dm.SavedQueryItemModel( + id, + obj.label, + normalizedData, + { 'default': isDefault } ); + + if ( isDefault ) { + defaultItem = item; + } + + items.push( item ); } ); - this.default = savedQueries.default; + if ( defaultItem ) { + this.default = defaultItem.getID(); + } this.addItems( items ); @@ -124,6 +133,25 @@ ] ); }; + /** + * Remove query from model + * + * @param {string} queryID Query ID + */ + mw.rcfilters.dm.SavedQueriesModel.prototype.removeQuery = function ( queryID ) { + var query = this.getItemByID( queryID ); + + if ( query ) { + // Check if this item was the default + if ( String( this.getDefault() ) === String( queryID ) ) { + // Nulify the default + this.savedQueriesModel.setDefault( null ); + } + + this.savedQueriesModel.removeItems( [ query ] ); + } + }; + /** * Get an item that matches the requested query * diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js index 95e11d59f3..ebf22014c8 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js @@ -257,15 +257,8 @@ * @param {string} queryID Query id */ mw.rcfilters.Controller.prototype.removeSavedQuery = function ( queryID ) { - var query = this.savedQueriesModel.getItemByID( queryID ); + this.savedQueriesModel.removeQuery( queryID ); - this.savedQueriesModel.removeItems( [ query ] ); - - // Check if this item was the default - if ( this.savedQueriesModel.getDefault() === queryID ) { - // Nulify the default - this.savedQueriesModel.setDefault( null ); - } this._saveSavedQueries(); };