Check whether there is a default saved query on the server side, and if there is,
add the mw-rcfilters-ui-loading class.
Also centralize the code related to the saved query preferences.
Bug: T173533
Change-Id: I4138fde22bdd8cc55c65846b91184c3ad3057244
* @ingroup SpecialPage
*/
abstract class ChangesListSpecialPage extends SpecialPage {
+ /**
+ * Preference name for saved queries. Subclasses that use saved queries should override this.
+ * @var string
+ */
+ protected static $savedQueriesPreferenceName;
+
/** @var string */
protected $rcSubpage;
'wgStructuredChangeFiltersEnableExperimentalViews',
$experimentalStructuredChangeFilters
);
+
$out->addJsConfigVars(
'wgRCFiltersChangeTags',
$this->buildChangeTagList()
'daysDefault' => $this->getDefaultDays(),
]
);
+
+ if ( static::$savedQueriesPreferenceName ) {
+ $savedQueries = FormatJson::decode(
+ $this->getUser()->getOption( static::$savedQueriesPreferenceName )
+ );
+ if ( $savedQueries && isset( $savedQueries->default ) ) {
+ // If there is a default saved query, show a loading spinner,
+ // since the frontend is going to reload the results
+ $out->addBodyClasses( 'mw-rcfilters-ui-loading' );
+ }
+ $out->addJsConfigVars(
+ 'wgStructuredChangeFiltersSavedQueriesPreferenceName',
+ static::$savedQueriesPreferenceName
+ );
+ }
} else {
$out->addBodyClasses( 'mw-rcfilters-disabled' );
}
*/
class SpecialRecentChanges extends ChangesListSpecialPage {
+ protected static $savedQueriesPreferenceName = 'rcfilters-saved-queries';
+
private $watchlistFilterGroupDefinition;
// @codingStandardsIgnoreStart Needed "useless" override to change parameters.
if ( $this->isStructuredFilterUiEnabled() ) {
$out->addJsConfigVars( 'wgStructuredChangeFiltersLiveUpdateSupported', true );
- $out->addJsConfigVars(
- 'wgStructuredChangeFiltersSavedQueriesPreferenceName',
- 'rcfilters-saved-queries'
- );
}
}
* @ingroup SpecialPage
*/
class SpecialWatchlist extends ChangesListSpecialPage {
+ protected static $savedQueriesPreferenceName = 'rcfilters-wl-saved-queries';
+
private $maxDays;
public function __construct( $page = 'Watchlist', $restriction = 'viewmywatchlist' ) {
$output->addModuleStyles( [ 'mediawiki.rcfilters.highlightCircles.seenunseen.styles' ] );
$output->addJsConfigVars( 'wgStructuredChangeFiltersLiveUpdateSupported', false );
- $output->addJsConfigVars(
- 'wgStructuredChangeFiltersSavedQueriesPreferenceName',
- 'rcfilters-wl-saved-queries'
- );
$output->addJsConfigVars(
'wgStructuredChangeFiltersEditWatchlistUrl',
SpecialPage::getTitleFor( 'EditWatchlist' )->getLocalURL()
new mw.rcfilters.ui.ChangesListWrapperWidget(
filtersModel, changesListModel, controller, $( '.mw-changeslist, .mw-changeslist-empty' ) );
+ // Remove the -loading class that may have been added on the server side.
+ // If we are in fact going to load a default saved query, this .initialize()
+ // call will do that and add the -loading class right back.
+ $( 'body' ).removeClass( 'mw-rcfilters-ui-loading' );
+
controller.initialize(
mw.config.get( 'wgStructuredChangeFilters' ),
mw.config.get( 'wgFormattedNamespaces' ),
}
}
- body:not( .mw-rcfilters-ui-initialized ) .mw-changeslist,
body.mw-rcfilters-ui-loading .mw-changeslist {
opacity: 0.5;
}