mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-11-23 15:36:58 +00:00
ESLint: Prefer arrow callbacks (autofixed)
Change-Id: I01da3714b1f5d9b1926ee4394c15f594efb01245
This commit is contained in:
parent
573e7c74ee
commit
2dd3780966
|
@ -9,6 +9,9 @@
|
|||
"commonjs": true
|
||||
},
|
||||
"rules": {
|
||||
"max-len": "off"
|
||||
"max-len": "off",
|
||||
"prefer-arrow-callback": "error",
|
||||
"implicit-arrow-linebreak": "error",
|
||||
"arrow-body-style": "error"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -158,7 +158,7 @@
|
|||
}
|
||||
|
||||
return fetchNotifPromise
|
||||
.fail( function () {
|
||||
.fail( () => {
|
||||
// Mark API error state
|
||||
me.apiErrorState[ type ][ fetchingSource ] = true;
|
||||
} );
|
||||
|
|
|
@ -61,9 +61,7 @@
|
|||
*/
|
||||
mw.echo.api.EchoApi.prototype.fetchUnreadNotificationPages = function ( sources ) {
|
||||
return this.network.getApiHandler( 'local' ).fetchUnreadNotificationPages( sources )
|
||||
.then( function ( data ) {
|
||||
return OO.getProp( data, 'query', 'unreadnotificationpages' );
|
||||
} );
|
||||
.then( ( data ) => OO.getProp( data, 'query', 'unreadnotificationpages' ) );
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -162,9 +160,7 @@
|
|||
!!isForced,
|
||||
this.convertFiltersToAPIParams( filters )
|
||||
) )
|
||||
.then( function ( result ) {
|
||||
return OO.getProp( result.query, 'notifications' );
|
||||
} );
|
||||
.then( ( result ) => OO.getProp( result.query, 'notifications' ) );
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -191,9 +187,7 @@
|
|||
isForced,
|
||||
this.convertFiltersToAPIParams( filters )
|
||||
) )
|
||||
.then( function ( result ) {
|
||||
return OO.getProp( result.query, 'notifications' );
|
||||
} );
|
||||
.then( ( result ) => OO.getProp( result.query, 'notifications' ) );
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -208,7 +202,7 @@
|
|||
mw.echo.api.EchoApi.prototype.fetchNotificationGroups = function ( sourceArray, type, bundle ) {
|
||||
const overrideParams = { notcrosswikisummary: false, notbundle: bundle };
|
||||
return this.network.getApiHandler( 'local' ).fetchNotifications( type, sourceArray, true, overrideParams )
|
||||
.then( function ( result ) {
|
||||
.then( ( result ) => {
|
||||
const items = OO.getProp( result, 'query', 'notifications', 'list' ),
|
||||
groups = {};
|
||||
|
||||
|
|
|
@ -46,9 +46,7 @@
|
|||
type: type.length === 1 ? type[ 0 ] : 'all',
|
||||
timestampFormat: 'ISO_8601'
|
||||
} )
|
||||
.then( function ( data ) {
|
||||
return data.query.echomarkseen.timestamp;
|
||||
} );
|
||||
.then( ( data ) => data.query.echomarkseen.timestamp );
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -72,9 +70,7 @@
|
|||
}
|
||||
|
||||
return this.api.postWithToken( 'csrf', data )
|
||||
.then( function ( result ) {
|
||||
return OO.getProp( result.query, 'echomarkread', type, 'rawcount' ) || 0;
|
||||
} );
|
||||
.then( ( result ) => OO.getProp( result.query, 'echomarkread', type, 'rawcount' ) || 0 );
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -124,7 +120,7 @@
|
|||
}
|
||||
|
||||
return this.api.get( apiData )
|
||||
.then( function ( result ) {
|
||||
.then( ( result ) => {
|
||||
if ( type === 'message' || type === 'alert' ) {
|
||||
return OO.getProp( result.query, 'notifications', normalizedType, 'rawcount' ) || 0;
|
||||
} else {
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
sourcePageModel = filterModel.getSourcePagesModel();
|
||||
|
||||
return this.api.fetchUnreadNotificationPages()
|
||||
.then( function ( data ) {
|
||||
.then( ( data ) => {
|
||||
const result = {},
|
||||
foreignSources = {};
|
||||
|
||||
|
@ -132,7 +132,7 @@
|
|||
titles: filters.getSourcePagesModel().getGroupedPagesForCurrentTitle()
|
||||
}
|
||||
)
|
||||
.then( function ( data ) {
|
||||
.then( ( data ) => {
|
||||
const dateItemIds = {},
|
||||
dateItems = {},
|
||||
models = {};
|
||||
|
@ -223,12 +223,10 @@
|
|||
} )
|
||||
.then(
|
||||
null,
|
||||
function ( errCode, errObj ) {
|
||||
return {
|
||||
errCode: errCode,
|
||||
errInfo: OO.getProp( errObj, 'error', 'info' )
|
||||
};
|
||||
}
|
||||
( errCode, errObj ) => ( {
|
||||
errCode: errCode,
|
||||
errInfo: OO.getProp( errObj, 'error', 'info' )
|
||||
} )
|
||||
);
|
||||
};
|
||||
/**
|
||||
|
@ -259,7 +257,7 @@
|
|||
return this.api.fetchNotifications( this.manager.getTypeString(), 'local', !!isForced, { unreadFirst: true, bundle: true } /* filters */ )
|
||||
.then(
|
||||
// Success
|
||||
function ( data ) {
|
||||
( data ) => {
|
||||
const allModels = { local: localListModel },
|
||||
createBundledNotification = function ( modelName, rawBundledNotifData ) {
|
||||
const bundleNotifData = controller.createNotificationData( rawBundledNotifData );
|
||||
|
@ -346,7 +344,7 @@
|
|||
return idArray;
|
||||
},
|
||||
// Failure
|
||||
function ( errCode, errObj ) {
|
||||
( errCode, errObj ) => {
|
||||
if ( !controller.manager.getNotificationModel( 'local' ) ) {
|
||||
// Update the controller
|
||||
controller.manager.setNotificationModels( { local: localListModel } );
|
||||
|
@ -457,7 +455,7 @@
|
|||
|
||||
source = source || this.manager.getFiltersModel().getSourcePagesModel().getCurrentSource();
|
||||
|
||||
this.manager.getNotificationsBySource( source ).forEach( function ( notification ) {
|
||||
this.manager.getNotificationsBySource( source ).forEach( ( notification ) => {
|
||||
if ( !notification.isRead() ) {
|
||||
itemIds.push( ...notification.getAllIds() );
|
||||
notification.toggleRead( true );
|
||||
|
@ -494,7 +492,7 @@
|
|||
const readState = this.manager.getFiltersModel().getReadState(),
|
||||
modelItems = {};
|
||||
|
||||
this.manager.getLocalNotifications().forEach( function ( notification ) {
|
||||
this.manager.getLocalNotifications().forEach( ( notification ) => {
|
||||
if ( !notification.isRead() ) {
|
||||
notification.toggleRead( true );
|
||||
|
||||
|
@ -538,7 +536,7 @@
|
|||
|
||||
return this.api.fetchNotificationGroups( xwikiModel.getSourceNames(), this.manager.getTypeString(), true )
|
||||
.then(
|
||||
function ( groupList ) {
|
||||
( groupList ) => {
|
||||
for ( const group in groupList ) {
|
||||
const listModel = xwikiModel.getItemBySource( group );
|
||||
const groupItems = groupList[ group ];
|
||||
|
@ -559,14 +557,12 @@
|
|||
listModel.setItems( items );
|
||||
}
|
||||
},
|
||||
function ( errCode, errObj ) {
|
||||
return {
|
||||
errCode: errCode,
|
||||
errInfo: errCode === 'http' ?
|
||||
mw.msg( 'echo-api-failure-cross-wiki' ) :
|
||||
OO.getProp( errObj, 'error', 'info' )
|
||||
};
|
||||
}
|
||||
( errCode, errObj ) => ( {
|
||||
errCode: errCode,
|
||||
errInfo: errCode === 'http' ?
|
||||
mw.msg( 'echo-api-failure-cross-wiki' ) :
|
||||
OO.getProp( errObj, 'error', 'info' )
|
||||
} )
|
||||
);
|
||||
};
|
||||
|
||||
|
@ -608,7 +604,7 @@
|
|||
// to reflect the new pagination? etc.
|
||||
}
|
||||
|
||||
items.forEach( function ( notification ) {
|
||||
items.forEach( ( notification ) => {
|
||||
allIds.push( ...notification.getAllIds() );
|
||||
if ( readState === 'all' ) {
|
||||
notification.toggleRead( isRead );
|
||||
|
@ -652,7 +648,7 @@
|
|||
// Update pagination count
|
||||
this.manager.updateCurrentPageItemCount();
|
||||
|
||||
notifs.forEach( function ( notif ) {
|
||||
notifs.forEach( ( notif ) => {
|
||||
allIds.push( ...notif.getAllIds() );
|
||||
} );
|
||||
this.manager.getUnreadCounter().estimateChange( -allIds.length );
|
||||
|
@ -677,7 +673,7 @@
|
|||
this.manager.getUnreadCounter().estimateChange( -xwikiModel.getCount() );
|
||||
|
||||
return this.api.fetchNotificationGroups( xwikiModel.getSourceNames(), this.manager.getTypeString() )
|
||||
.then( function ( groupList ) {
|
||||
.then( ( groupList ) => {
|
||||
const promises = [];
|
||||
|
||||
for ( const group in groupList ) {
|
||||
|
@ -736,7 +732,7 @@
|
|||
// will be updated globally
|
||||
this.manager.getFiltersModel().getSourcePagesModel().getCurrentSource()
|
||||
)
|
||||
.then( function ( time ) {
|
||||
.then( ( time ) => {
|
||||
controller.manager.getSeenTimeModel().setSeenTime( time );
|
||||
} );
|
||||
};
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Loads Echo on CentralAuth autologin
|
||||
*/
|
||||
mw.hook( 'centralauth-p-personal-reset' ).add( function () {
|
||||
mw.hook( 'centralauth-p-personal-reset' ).add( () => {
|
||||
mw.loader.using( [
|
||||
'ext.echo.init',
|
||||
'ext.echo.styles.badge',
|
||||
|
|
|
@ -23,7 +23,7 @@ function initDesktop() {
|
|||
}
|
||||
|
||||
// Activate OOUI
|
||||
$( function () {
|
||||
$( () => {
|
||||
const maxNotificationCount = require( './config.json' ).EchoMaxNotificationCount,
|
||||
pollingRate = require( './config.json' ).EchoPollForUpdates,
|
||||
documentTitle = document.title,
|
||||
|
@ -73,7 +73,7 @@ function initDesktop() {
|
|||
*/
|
||||
function showNotificationSnippet( modelManager, highestNotifTime ) {
|
||||
let highestTime = highestNotifTime;
|
||||
modelManager.getLocalNotifications().forEach( function ( notificationItem ) {
|
||||
modelManager.getLocalNotifications().forEach( ( notificationItem ) => {
|
||||
const timestampAsDate = new Date( notificationItem.timestamp );
|
||||
if ( timestampAsDate > highestNotifTime ) {
|
||||
if ( timestampAsDate > highestTime ) {
|
||||
|
@ -95,7 +95,7 @@ function initDesktop() {
|
|||
* @param {mw.echo.ui.NotificationBadgeWidget} badgeWidget
|
||||
*/
|
||||
function updateBadgeState( modelManager, badgeWidget ) {
|
||||
modelManager.getLocalNotifications().forEach( function ( notificationItem ) {
|
||||
modelManager.getLocalNotifications().forEach( ( notificationItem ) => {
|
||||
if ( !notificationItem.isSeen() ) {
|
||||
badgeWidget.updateBadgeSeenState( true );
|
||||
}
|
||||
|
@ -129,7 +129,7 @@ function initDesktop() {
|
|||
// This part executes only once, either when header icons are clicked or after completion of 60secs whichever occur first.
|
||||
const echoApi = new mw.echo.api.EchoApi();
|
||||
|
||||
loadingPromise = mw.loader.using( 'ext.echo.ui.desktop' ).then( function () {
|
||||
loadingPromise = mw.loader.using( 'ext.echo.ui.desktop' ).then( () => {
|
||||
|
||||
// Overlay
|
||||
mw.echo.ui.$overlay.appendTo( document.body );
|
||||
|
@ -155,15 +155,15 @@ function initDesktop() {
|
|||
// Replace the link button with the ooui button
|
||||
$existingAlertLink.parent().replaceWith( mw.echo.ui.alertWidget.$element );
|
||||
|
||||
alertModelManager.on( 'allTalkRead', function () {
|
||||
alertModelManager.on( 'allTalkRead', () => {
|
||||
// If there was a talk page notification, get rid of it
|
||||
$( '#pt-talk-alert' ).remove();
|
||||
} );
|
||||
|
||||
// listen to event countChange and change title only if polling rate is non-zero
|
||||
if ( isLivePollingFeatureEnabledOnWiki() ) {
|
||||
alertModelManager.getUnreadCounter().on( 'countChange', function ( count ) {
|
||||
alertController.fetchLocalNotifications().then( function () {
|
||||
alertModelManager.getUnreadCounter().on( 'countChange', ( count ) => {
|
||||
alertController.fetchLocalNotifications().then( () => {
|
||||
updateBadgeState( alertModelManager, mw.echo.ui.alertWidget );
|
||||
if ( userHasOptedInToLiveNotifications() ) {
|
||||
latestAlertNotifTime = showNotificationSnippet( alertModelManager, latestAlertNotifTime );
|
||||
|
@ -199,8 +199,8 @@ function initDesktop() {
|
|||
|
||||
// listen to event countChange and change title only if polling rate is non-zero
|
||||
if ( isLivePollingFeatureEnabledOnWiki() ) {
|
||||
messageModelManager.getUnreadCounter().on( 'countChange', function ( count ) {
|
||||
messageController.fetchLocalNotifications().then( function () {
|
||||
messageModelManager.getUnreadCounter().on( 'countChange', ( count ) => {
|
||||
messageController.fetchLocalNotifications().then( () => {
|
||||
updateBadgeState( messageModelManager, mw.echo.ui.messageWidget );
|
||||
if ( userHasOptedInToLiveNotifications() ) {
|
||||
latestMessageNotifTime = showNotificationSnippet( messageModelManager, latestMessageNotifTime );
|
||||
|
@ -234,15 +234,15 @@ function initDesktop() {
|
|||
// Fire the notification API requests
|
||||
const echoApi = new mw.echo.api.EchoApi();
|
||||
echoApi.fetchNotifications( clickedSection )
|
||||
.then( function ( data ) {
|
||||
.then( ( data ) => {
|
||||
mw.track( 'timing.MediaWiki.echo.overlay.api', mw.now() - timeOfClick );
|
||||
return data;
|
||||
} );
|
||||
|
||||
loadEcho().then( function () {
|
||||
loadEcho().then( () => {
|
||||
// Now that the module loaded, show the popup
|
||||
const selectedWidget = clickedSection === 'alert' ? mw.echo.ui.alertWidget : mw.echo.ui.messageWidget;
|
||||
selectedWidget.once( 'finishLoading', function () {
|
||||
selectedWidget.once( 'finishLoading', () => {
|
||||
// Log timing after notifications are shown
|
||||
mw.track( 'timing.MediaWiki.echo.overlay', mw.now() - timeOfClick );
|
||||
} );
|
||||
|
@ -255,7 +255,7 @@ function initDesktop() {
|
|||
// The other part is the 'echo.unseen' counter, see EchoHooks::onSkinTemplateNavigationUniversal().
|
||||
mw.track( 'counter.MediaWiki.echo.unseen.click' );
|
||||
}
|
||||
}, function () {
|
||||
}, () => {
|
||||
// Un-dim badge if loading failed
|
||||
$badge.removeClass( 'mw-echo-notifications-badge-dimmed' );
|
||||
} );
|
||||
|
@ -288,13 +288,13 @@ function initDesktop() {
|
|||
*/
|
||||
function initMobile() {
|
||||
if ( !mw.user.isAnon() ) {
|
||||
mw.loader.using( [ 'ext.echo.mobile', 'mobile.startup' ] ).then( function ( require ) {
|
||||
mw.loader.using( [ 'ext.echo.mobile', 'mobile.startup' ] ).then( ( require ) => {
|
||||
require( 'ext.echo.mobile' ).init();
|
||||
} );
|
||||
}
|
||||
}
|
||||
|
||||
$( function () {
|
||||
$( () => {
|
||||
if ( mw.config.get( 'wgMFMode' ) ) {
|
||||
initMobile();
|
||||
} else {
|
||||
|
|
|
@ -53,27 +53,27 @@ function notificationsList( echo, markAllReadButton, onCountChange ) {
|
|||
} );
|
||||
|
||||
// Events
|
||||
unreadCounter.on( 'countChange', function ( count ) {
|
||||
unreadCounter.on( 'countChange', ( count ) => {
|
||||
onCountChange(
|
||||
controller.manager.getUnreadCounter().getCappedNotificationCount( count )
|
||||
);
|
||||
markAsReadHandler();
|
||||
} );
|
||||
markAllReadButton.on( 'click', function () {
|
||||
markAllReadButton.on( 'click', () => {
|
||||
const numNotifications = controller.manager.getLocalUnread().length;
|
||||
|
||||
controller.markLocalNotificationsRead()
|
||||
.then( function () {
|
||||
.then( () => {
|
||||
mw.notify( mw.msg( 'echo-mark-all-as-read-confirmation', numNotifications ) );
|
||||
markAllReadButton.toggle( false );
|
||||
}, function () {
|
||||
}, () => {
|
||||
markAllReadButton.toggle( false );
|
||||
} );
|
||||
} );
|
||||
|
||||
return promisedView(
|
||||
// Populate notifications
|
||||
wrapperWidget.populate().then( function () {
|
||||
wrapperWidget.populate().then( () => {
|
||||
controller.updateSeenTime();
|
||||
markAsReadHandler();
|
||||
// Connect event here as we know that everything loaded correctly
|
||||
|
|
|
@ -29,7 +29,7 @@ function init() {
|
|||
|
||||
function showNotificationOverlay() {
|
||||
const overlay = notificationsOverlay(
|
||||
function ( exit ) {
|
||||
( exit ) => {
|
||||
onCloseNotificationsOverlay();
|
||||
exit();
|
||||
} );
|
||||
|
@ -41,7 +41,7 @@ function init() {
|
|||
let initialized = false;
|
||||
// Once the DOM is loaded add the overlay and overlay manager. Minerva will handle the
|
||||
// notification button that will link to Special:Notifications.
|
||||
$( function () {
|
||||
$( () => {
|
||||
overlayManager.add( /^\/notifications$/, showNotificationOverlay );
|
||||
|
||||
/**
|
||||
|
@ -73,7 +73,7 @@ function init() {
|
|||
// The code is bundled here since it makes use of loadModuleScript. This also allows
|
||||
// the possibility of invoking the filter from outside the Special page in future.
|
||||
// Once the 'ext.echo.special.onInitialize' hook has fired, load notification filter.
|
||||
mw.hook( 'ext.echo.special.onInitialize' ).add( function () {
|
||||
mw.hook( 'ext.echo.special.onInitialize' ).add( () => {
|
||||
// eslint-disable-next-line no-jquery/no-global-selector
|
||||
const $crossWikiUnreadFilter = $( '.mw-echo-ui-crossWikiUnreadFilterWidget' ),
|
||||
// eslint-disable-next-line no-jquery/no-global-selector
|
||||
|
@ -90,7 +90,7 @@ function init() {
|
|||
addFilterButton();
|
||||
|
||||
// setup route
|
||||
overlayManager.add( /^\/notifications-filter$/, function () {
|
||||
overlayManager.add( /^\/notifications-filter$/, () => {
|
||||
onOpenNotificationsOverlay();
|
||||
return notificationsFilterOverlay( {
|
||||
onBeforeExit: function ( exit ) {
|
||||
|
|
|
@ -45,7 +45,7 @@ function onCountChange( count ) {
|
|||
*/
|
||||
function notificationsOverlay( onBeforeExit ) {
|
||||
let markAllReadButton;
|
||||
const oouiPromise = mw.loader.using( 'oojs-ui' ).then( function () {
|
||||
const oouiPromise = mw.loader.using( 'oojs-ui' ).then( () => {
|
||||
markAllReadButton = new OO.ui.ButtonWidget( {
|
||||
icon: 'checkAll'
|
||||
} );
|
||||
|
@ -71,15 +71,13 @@ function notificationsOverlay( onBeforeExit ) {
|
|||
isBorderBox: false,
|
||||
className: 'overlay notifications-overlay navigation-drawer',
|
||||
onBeforeExit: function ( exit ) {
|
||||
onBeforeExit( function () {
|
||||
onBeforeExit( () => {
|
||||
onBeforeExitAnimation( overlay, exit );
|
||||
} );
|
||||
}
|
||||
},
|
||||
promisedView(
|
||||
oouiPromise.then( function () {
|
||||
return list( mw.echo, markAllReadButton, onCountChange );
|
||||
} )
|
||||
oouiPromise.then( () => list( mw.echo, markAllReadButton, onCountChange ) )
|
||||
)
|
||||
);
|
||||
return overlay;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
// Parent constructor
|
||||
mw.echo.dm.BundleNotificationItem.super.call( this, id, config );
|
||||
|
||||
this.getSecondaryUrls().forEach( function ( link ) {
|
||||
this.getSecondaryUrls().forEach( ( link ) => {
|
||||
// hack: put all secondary actions in the menu for now
|
||||
// this is a temporary fix for
|
||||
// - alignment of the labels
|
||||
|
@ -27,7 +27,7 @@
|
|||
this.count = bundledNotificationModels.length;
|
||||
|
||||
// bundled notifications use the compact header and do not have icons
|
||||
bundledNotificationModels.forEach( function ( bundled ) {
|
||||
bundledNotificationModels.forEach( ( bundled ) => {
|
||||
bundled.content.header = bundled.content.compactHeader;
|
||||
delete bundled.iconURL;
|
||||
} );
|
||||
|
@ -59,9 +59,7 @@
|
|||
* @return {boolean} Whether this bundle is completely read
|
||||
*/
|
||||
mw.echo.dm.BundleNotificationItem.prototype.isRead = function () {
|
||||
return this.list.getItems().every( function ( item ) {
|
||||
return item.isRead();
|
||||
} );
|
||||
return this.list.getItems().every( ( item ) => item.isRead() );
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -102,7 +100,7 @@
|
|||
* @param {number} timestamp New seen timestamp
|
||||
*/
|
||||
mw.echo.dm.BundleNotificationItem.prototype.updateSeenState = function ( timestamp ) {
|
||||
this.list.getItems().forEach( function ( notification ) {
|
||||
this.list.getItems().forEach( ( notification ) => {
|
||||
notification.toggleSeen(
|
||||
notification.isRead() || notification.getTimestamp() < timestamp
|
||||
);
|
||||
|
@ -126,9 +124,7 @@
|
|||
* @return {number[]}
|
||||
*/
|
||||
mw.echo.dm.BundleNotificationItem.prototype.getAllIds = function () {
|
||||
return this.list.getItems().map( function ( item ) {
|
||||
return item.getId();
|
||||
} );
|
||||
return this.list.getItems().map( ( item ) => item.getId() );
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -122,8 +122,8 @@
|
|||
* @param {number} timestamp New seen timestamp
|
||||
*/
|
||||
mw.echo.dm.CrossWikiNotificationItem.prototype.updateSeenState = function ( timestamp ) {
|
||||
this.getList().getItems().forEach( function ( source ) {
|
||||
source.getItems().forEach( function ( notification ) {
|
||||
this.getList().getItems().forEach( ( source ) => {
|
||||
source.getItems().forEach( ( notification ) => {
|
||||
notification.toggleSeen(
|
||||
notification.isRead() || notification.getTimestamp() < timestamp
|
||||
);
|
||||
|
@ -138,7 +138,7 @@
|
|||
*/
|
||||
mw.echo.dm.CrossWikiNotificationItem.prototype.getItems = function () {
|
||||
let notifications = [];
|
||||
this.list.getItems().forEach( function ( sourceList ) {
|
||||
this.list.getItems().forEach( ( sourceList ) => {
|
||||
notifications = notifications.concat( sourceList.getItems() );
|
||||
} );
|
||||
|
||||
|
|
|
@ -433,7 +433,7 @@
|
|||
source = source || 'local';
|
||||
|
||||
const notifications = [];
|
||||
Object.keys( this.getAllNotificationModels() ).forEach( function ( modelName ) {
|
||||
Object.keys( this.getAllNotificationModels() ).forEach( ( modelName ) => {
|
||||
const model = manager.getNotificationModel( modelName );
|
||||
if ( model.getSource() === source ) {
|
||||
notifications.push( ...model.getItems() );
|
||||
|
@ -454,7 +454,7 @@
|
|||
|
||||
source = source || 'local';
|
||||
|
||||
Object.keys( this.getAllNotificationModels() ).forEach( function ( modelName ) {
|
||||
Object.keys( this.getAllNotificationModels() ).forEach( ( modelName ) => {
|
||||
const model = manager.getNotificationModel( modelName );
|
||||
if ( model.getSource() === source ) {
|
||||
modelIds.push( modelName );
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
mw.echo.dm.NotificationGroupsList.super.call( this );
|
||||
|
||||
// Sorting callback
|
||||
this.setSortingCallback( function ( a, b ) {
|
||||
this.setSortingCallback( ( a, b ) => {
|
||||
// Reverse sorting
|
||||
if ( b.getTimestamp() < a.getTimestamp() ) {
|
||||
return -1;
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
this.fallbackTimestamp = config.timestamp || 0;
|
||||
|
||||
// Sorting callback
|
||||
this.setSortingCallback( config.sortingCallback || function ( a, b ) {
|
||||
this.setSortingCallback( config.sortingCallback || ( ( a, b ) => {
|
||||
if ( !a.isRead() && b.isRead() ) {
|
||||
return -1; // Unread items are always above read items
|
||||
} else if ( a.isRead() && !b.isRead() ) {
|
||||
|
@ -55,7 +55,7 @@
|
|||
|
||||
// Fallback on IDs
|
||||
return b.getId() - a.getId();
|
||||
} );
|
||||
} ) );
|
||||
|
||||
// Events
|
||||
this.aggregate( { update: 'itemUpdate' } );
|
||||
|
@ -215,9 +215,7 @@
|
|||
* @return {mw.echo.dm.NotificationItem[]} An array of matching items
|
||||
*/
|
||||
mw.echo.dm.NotificationsList.prototype.findByIds = function ( ids ) {
|
||||
return this.getItems().filter( function ( item ) {
|
||||
return ids.indexOf( item.getId() ) !== -1;
|
||||
} );
|
||||
return this.getItems().filter( ( item ) => ids.indexOf( item.getId() ) !== -1 );
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -249,7 +247,7 @@
|
|||
* @param {string} timestamp New seen timestamp
|
||||
*/
|
||||
mw.echo.dm.NotificationsList.prototype.updateSeenState = function ( timestamp ) {
|
||||
this.getItems().forEach( function ( notification ) {
|
||||
this.getItems().forEach( ( notification ) => {
|
||||
notification.toggleSeen(
|
||||
notification.isRead() || notification.getTimestamp() < timestamp
|
||||
);
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
const model = this;
|
||||
|
||||
let hasChanged = false;
|
||||
this.getTypes().forEach( function ( type ) {
|
||||
this.getTypes().forEach( ( type ) => {
|
||||
if ( model.seenTime[ type ] !== time ) {
|
||||
model.seenTime[ type ] = time;
|
||||
hasChanged = true;
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
this.source,
|
||||
this.type,
|
||||
this.localOnly
|
||||
) ).then( function ( actualCount ) {
|
||||
) ).then( ( actualCount ) => {
|
||||
model.setCount( actualCount, false );
|
||||
|
||||
return actualCount;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/*!
|
||||
* Echo Special:Notifications page initialization
|
||||
*/
|
||||
$( function () {
|
||||
$( () => {
|
||||
const limitNotifications = 50,
|
||||
links = mw.config.get( 'wgNotificationsSpecialPageLinks' ),
|
||||
// FIXME: Use CSS transition
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
this.listWidget = new mw.echo.ui.SortedListWidget(
|
||||
// Sorting callback
|
||||
function ( a, b ) {
|
||||
( ( a, b ) => {
|
||||
// Reverse sorting
|
||||
if ( b.getTimestamp() < a.getTimestamp() ) {
|
||||
return -1;
|
||||
|
@ -33,7 +33,7 @@
|
|||
|
||||
// Fallback on IDs
|
||||
return b.getId() - a.getId();
|
||||
},
|
||||
} ),
|
||||
// Config
|
||||
{
|
||||
classes: [ 'mw-echo-ui-bundleNotificationItemWidget-group' ],
|
||||
|
@ -50,11 +50,11 @@
|
|||
.css( 'display', 'none' );
|
||||
|
||||
// Prevent clicks on the list padding area from activating the primary link
|
||||
this.listWidget.$element.on( 'click', function ( e ) {
|
||||
this.listWidget.$element.on( 'click', ( e ) => {
|
||||
if ( e.target.closest( 'a' ) === this.$element[ 0 ] ) {
|
||||
e.preventDefault();
|
||||
}
|
||||
}.bind( this ) );
|
||||
} );
|
||||
|
||||
// Initialize closed
|
||||
this.expanded = false;
|
||||
|
@ -115,16 +115,14 @@
|
|||
*/
|
||||
mw.echo.ui.BundleNotificationItemWidget.prototype.populateFromModel = function () {
|
||||
const widget = this;
|
||||
this.getList().addItems( this.model.getList().getItems().map( function ( singleNotifModel ) {
|
||||
return new mw.echo.ui.SingleNotificationItemWidget(
|
||||
widget.controller,
|
||||
singleNotifModel,
|
||||
{
|
||||
$overlay: widget.$overlay,
|
||||
bundle: true
|
||||
}
|
||||
);
|
||||
} ) );
|
||||
this.getList().addItems( this.model.getList().getItems().map( ( singleNotifModel ) => new mw.echo.ui.SingleNotificationItemWidget(
|
||||
widget.controller,
|
||||
singleNotifModel,
|
||||
{
|
||||
$overlay: widget.$overlay,
|
||||
bundle: true
|
||||
}
|
||||
) ) );
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
this.listWidget = new mw.echo.ui.SortedListWidget(
|
||||
// Sorting callback
|
||||
function ( a, b ) {
|
||||
( ( a, b ) => {
|
||||
// Define the sorting order.
|
||||
// This will go by the lists' timestamp, which in turn
|
||||
// take the latest timestamp in their items
|
||||
|
@ -43,7 +43,7 @@
|
|||
|
||||
// Fallback on IDs
|
||||
return b.getSource() - a.getSource();
|
||||
},
|
||||
} ),
|
||||
// Config
|
||||
{
|
||||
classes: [ 'mw-echo-ui-crossWikiNotificationItemWidget-group' ],
|
||||
|
@ -232,7 +232,7 @@
|
|||
// Query all sources
|
||||
this.controller.fetchCrossWikiNotifications()
|
||||
.catch(
|
||||
function ( result ) {
|
||||
( result ) => {
|
||||
const loginPageTitle = mw.Title.newFromText( 'Special:UserLogin' );
|
||||
// If failure, check if the failure is due to login
|
||||
// so we can display a more comprehensive error
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
// Parent constructor
|
||||
mw.echo.ui.CrossWikiUnreadFilterWidget.super.call( this,
|
||||
// Sorting callback
|
||||
function ( a, b ) {
|
||||
( a, b ) => {
|
||||
// Local source is always first
|
||||
if ( a.getSource() === 'local' ) {
|
||||
return -1;
|
||||
|
|
|
@ -30,14 +30,14 @@
|
|||
|
||||
this.listWidget = new mw.echo.ui.SortedListWidget(
|
||||
// Sorting callback
|
||||
function ( a, b ) {
|
||||
( ( a, b ) => {
|
||||
// Reverse sorting
|
||||
if ( b.getTimestamp() < a.getTimestamp() ) {
|
||||
return -1;
|
||||
} else if ( b.getTimestamp() > a.getTimestamp() ) {
|
||||
return 1;
|
||||
}
|
||||
},
|
||||
} ),
|
||||
// Config
|
||||
{
|
||||
classes: [ 'mw-echo-ui-datedNotificationsWidget-group' ],
|
||||
|
@ -118,7 +118,7 @@
|
|||
groupWidgets.push( subgroupWidget );
|
||||
}
|
||||
|
||||
this.getList().getItems().forEach( function ( widget ) {
|
||||
this.getList().getItems().forEach( ( widget ) => {
|
||||
// Destroy all available widgets
|
||||
widget.destroy();
|
||||
} );
|
||||
|
|
|
@ -307,7 +307,7 @@
|
|||
this.controller.fetchLocalNotifications( this.hasRunFirstTime )
|
||||
.then(
|
||||
// Success
|
||||
function () {
|
||||
() => {
|
||||
if ( widget.popup.isVisible() ) {
|
||||
// Fire initialization hook
|
||||
mw.hook( 'ext.echo.popup.onInitialize' ).fire( widget.manager.getTypeString(), widget.controller );
|
||||
|
@ -317,7 +317,7 @@
|
|||
}
|
||||
},
|
||||
// Failure
|
||||
function ( errorObj ) {
|
||||
( errorObj ) => {
|
||||
if ( errorObj.errCode === 'notlogin-required' ) {
|
||||
// Login required message
|
||||
widget.notificationsWidget.resetLoadingOption( mw.msg( 'echo-notification-loginrequired' ) );
|
||||
|
@ -328,7 +328,7 @@
|
|||
}
|
||||
)
|
||||
.then( this.emit.bind( this, 'finishLoading' ) )
|
||||
.always( function () {
|
||||
.always( () => {
|
||||
widget.popup.clip();
|
||||
// Pop pending
|
||||
widget.popPending();
|
||||
|
|
|
@ -243,7 +243,7 @@
|
|||
// Send to controller
|
||||
item.pushPending();
|
||||
this.controller.performDynamicAction( actionData, this.getModel().getSource() )
|
||||
.then( function () {
|
||||
.then( () => {
|
||||
const $title = $( '<p>' )
|
||||
.addClass( 'mw-echo-ui-notificationItemWidget-notify-title' )
|
||||
.append( $.parseHTML( messages.title ) ),
|
||||
|
|
|
@ -238,7 +238,7 @@
|
|||
return fetchPromise
|
||||
.then(
|
||||
// Success
|
||||
function () {
|
||||
() => {
|
||||
// Fire initialization hook
|
||||
mw.hook( 'ext.echo.special.onInitialize' ).fire( widget.controller.manager.getTypeString(), widget.controller );
|
||||
|
||||
|
@ -247,7 +247,7 @@
|
|||
widget.controller.updateSeenTime();
|
||||
},
|
||||
// Failure
|
||||
function ( errObj ) {
|
||||
( errObj ) => {
|
||||
let msg;
|
||||
if ( errObj.errCode === 'notlogin-required' ) {
|
||||
// Login required message
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
mw.echo.ui.NotificationsListWidget.super.call(
|
||||
this,
|
||||
// Sorting callback
|
||||
function ( a, b ) {
|
||||
( a, b ) => {
|
||||
if ( !a.isRead() && b.isRead() ) {
|
||||
return -1; // Unread items are always above read items
|
||||
} else if ( a.isRead() && !b.isRead() ) {
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
|
||||
this.pushPending();
|
||||
return this.controller.fetchLocalNotifications( true )
|
||||
.catch( function ( errorObj ) {
|
||||
.catch( ( errorObj ) => {
|
||||
if ( errorObj.errCode === 'notlogin-required' ) {
|
||||
// Login required message
|
||||
widget.notificationsWidget.resetLoadingOption( mw.msg( 'echo-notification-loginrequired' ) );
|
||||
|
@ -78,7 +78,7 @@
|
|||
widget.notificationsWidget.resetLoadingOption( mw.msg( 'echo-api-failure' ) );
|
||||
}
|
||||
} )
|
||||
.always( function () {
|
||||
.always( () => {
|
||||
widget.popPending();
|
||||
widget.emit( 'finishLoading' );
|
||||
widget.promiseRunning = false;
|
||||
|
|
|
@ -133,9 +133,7 @@
|
|||
|
||||
return OO.binarySearch(
|
||||
this.items,
|
||||
function ( otherItem ) {
|
||||
return widget.sortingFunction( item, otherItem );
|
||||
},
|
||||
( otherItem ) => widget.sortingFunction( item, otherItem ),
|
||||
true
|
||||
);
|
||||
};
|
||||
|
|
|
@ -83,7 +83,7 @@
|
|||
// fade out fake
|
||||
// FIXME: Use CSS transition
|
||||
// eslint-disable-next-line no-jquery/no-fade
|
||||
fakeWidget.$element.fadeOut( 400, function () {
|
||||
fakeWidget.$element.fadeOut( 400, () => {
|
||||
// remove fake
|
||||
widget.removeItems( [ fakeWidget ] );
|
||||
// fade-in real item
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
this.listWidget = new mw.echo.ui.SortedListWidget(
|
||||
// Sorting callback
|
||||
config.sortingCallback || function ( a, b ) {
|
||||
config.sortingCallback || ( ( a, b ) => {
|
||||
// Reverse sorting
|
||||
if ( b.getTimestamp() < a.getTimestamp() ) {
|
||||
return -1;
|
||||
|
@ -41,7 +41,7 @@
|
|||
|
||||
// Fallback on IDs
|
||||
return b.getId() - a.getId();
|
||||
},
|
||||
} ),
|
||||
// Config
|
||||
{
|
||||
$overlay: this.$overlay,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
QUnit.module( 'ext.echo.dm - BundleNotificationItem' );
|
||||
|
||||
QUnit.test( 'Constructing the model', function ( assert ) {
|
||||
QUnit.test( 'Constructing the model', ( assert ) => {
|
||||
const bundledItems = [
|
||||
new mw.echo.dm.NotificationItem( 0, { read: false, seen: false, timestamp: '201601010000' } ),
|
||||
new mw.echo.dm.NotificationItem( 1, { read: false, seen: false, timestamp: '201601010100' } ),
|
||||
|
@ -44,9 +44,7 @@ QUnit.test( 'Constructing the model', function ( assert ) {
|
|||
'Bundle has unseen items'
|
||||
);
|
||||
|
||||
const findItems = bundle.findByIds( [ 1, 4 ] ).map( function ( item ) {
|
||||
return item.getId();
|
||||
} );
|
||||
const findItems = bundle.findByIds( [ 1, 4 ] ).map( ( item ) => item.getId() );
|
||||
assert.deepEqual(
|
||||
findItems,
|
||||
[ 4, 1 ],
|
||||
|
@ -54,7 +52,7 @@ QUnit.test( 'Constructing the model', function ( assert ) {
|
|||
);
|
||||
} );
|
||||
|
||||
QUnit.test( 'Managing a list of items', function ( assert ) {
|
||||
QUnit.test( 'Managing a list of items', ( assert ) => {
|
||||
const bundledItems = [
|
||||
new mw.echo.dm.NotificationItem( 0, { read: false, seen: false, timestamp: '201601010000' } ),
|
||||
new mw.echo.dm.NotificationItem( 1, { read: false, seen: false, timestamp: '201601010100' } ),
|
||||
|
@ -77,7 +75,7 @@ QUnit.test( 'Managing a list of items', function ( assert ) {
|
|||
);
|
||||
|
||||
// Mark all items as seen
|
||||
bundledItems.forEach( function ( item ) {
|
||||
bundledItems.forEach( ( item ) => {
|
||||
item.toggleSeen( true );
|
||||
} );
|
||||
|
||||
|
@ -101,7 +99,7 @@ QUnit.test( 'Managing a list of items', function ( assert ) {
|
|||
);
|
||||
|
||||
// Mark all items as read
|
||||
bundledItems.forEach( function ( item ) {
|
||||
bundledItems.forEach( ( item ) => {
|
||||
item.toggleRead( true );
|
||||
} );
|
||||
assert.strictEqual(
|
||||
|
|
|
@ -26,7 +26,7 @@ QUnit.test.each( 'Constructing the model', {
|
|||
getCount: 10
|
||||
}
|
||||
}
|
||||
}, function ( assert, data ) {
|
||||
}, ( assert, data ) => {
|
||||
const defaults = {
|
||||
getModelName: 'xwiki',
|
||||
getSourceNames: [],
|
||||
|
@ -54,7 +54,7 @@ QUnit.test.each( 'Constructing the model', {
|
|||
}
|
||||
} );
|
||||
|
||||
QUnit.test( 'Managing notification lists', function ( assert ) {
|
||||
QUnit.test( 'Managing notification lists', ( assert ) => {
|
||||
const model = new mw.echo.dm.CrossWikiNotificationItem( 1 );
|
||||
const groupDefinitions = [
|
||||
{
|
||||
|
@ -95,7 +95,7 @@ QUnit.test( 'Managing notification lists', function ( assert ) {
|
|||
];
|
||||
|
||||
// Add groups to model
|
||||
groupDefinitions.forEach( function ( def ) {
|
||||
groupDefinitions.forEach( ( def ) => {
|
||||
model.getList().addGroup(
|
||||
def.name,
|
||||
def.sourceData,
|
||||
|
@ -115,8 +115,8 @@ QUnit.test( 'Managing notification lists', function ( assert ) {
|
|||
);
|
||||
|
||||
// Mark all items as seen except one
|
||||
groupDefinitions.forEach( function ( def ) {
|
||||
def.items.forEach( function ( item ) {
|
||||
groupDefinitions.forEach( ( def ) => {
|
||||
def.items.forEach( ( item ) => {
|
||||
item.toggleSeen( true );
|
||||
} );
|
||||
} );
|
||||
|
@ -143,7 +143,7 @@ QUnit.test( 'Managing notification lists', function ( assert ) {
|
|||
);
|
||||
} );
|
||||
|
||||
QUnit.test( 'Update seen state', function ( assert ) {
|
||||
QUnit.test( 'Update seen state', ( assert ) => {
|
||||
const model = new mw.echo.dm.CrossWikiNotificationItem( 1 );
|
||||
const groupDefinitions = [
|
||||
{
|
||||
|
@ -184,9 +184,7 @@ QUnit.test( 'Update seen state', function ( assert ) {
|
|||
];
|
||||
|
||||
// Count all actual items
|
||||
const numAllItems = groupDefinitions.reduce( function ( prev, curr ) {
|
||||
return prev + curr.items.length;
|
||||
}, 0 );
|
||||
const numAllItems = groupDefinitions.reduce( ( prev, curr ) => prev + curr.items.length, 0 );
|
||||
|
||||
// Add groups to model
|
||||
for ( let i = 0; i < groupDefinitions.length; i++ ) {
|
||||
|
@ -197,9 +195,7 @@ QUnit.test( 'Update seen state', function ( assert ) {
|
|||
);
|
||||
}
|
||||
|
||||
let numUnseenItems = model.getItems().filter( function ( item ) {
|
||||
return !item.isSeen();
|
||||
} ).length;
|
||||
let numUnseenItems = model.getItems().filter( ( item ) => !item.isSeen() ).length;
|
||||
assert.strictEqual(
|
||||
numUnseenItems,
|
||||
numAllItems,
|
||||
|
@ -209,9 +205,7 @@ QUnit.test( 'Update seen state', function ( assert ) {
|
|||
// Update seen time to be bigger than 'foo' but smaller than the other groups
|
||||
model.updateSeenState( '201601010400' );
|
||||
|
||||
numUnseenItems = model.getItems().filter( function ( item ) {
|
||||
return !item.isSeen();
|
||||
} ).length;
|
||||
numUnseenItems = model.getItems().filter( ( item ) => !item.isSeen() ).length;
|
||||
assert.strictEqual(
|
||||
numUnseenItems,
|
||||
numAllItems - groupDefinitions[ 0 ].items.length,
|
||||
|
@ -221,9 +215,7 @@ QUnit.test( 'Update seen state', function ( assert ) {
|
|||
// Update seen time to be bigger than all
|
||||
model.updateSeenState( '201701010000' );
|
||||
|
||||
numUnseenItems = model.getItems().filter( function ( item ) {
|
||||
return !item.isSeen();
|
||||
} ).length;
|
||||
numUnseenItems = model.getItems().filter( ( item ) => !item.isSeen() ).length;
|
||||
assert.strictEqual(
|
||||
numUnseenItems,
|
||||
0,
|
||||
|
@ -231,7 +223,7 @@ QUnit.test( 'Update seen state', function ( assert ) {
|
|||
);
|
||||
} );
|
||||
|
||||
QUnit.test( 'Emit discard event', function ( assert ) {
|
||||
QUnit.test( 'Emit discard event', ( assert ) => {
|
||||
const results = [];
|
||||
const model = new mw.echo.dm.CrossWikiNotificationItem( -1 );
|
||||
const groupDefinitions = [
|
||||
|
@ -282,7 +274,7 @@ QUnit.test( 'Emit discard event', function ( assert ) {
|
|||
}
|
||||
|
||||
// Listen to event
|
||||
model.on( 'discard', function ( name ) {
|
||||
model.on( 'discard', ( name ) => {
|
||||
results.push( name );
|
||||
} );
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ QUnit.test.each( 'Constructing the model', {
|
|||
getReadState: 'read'
|
||||
}
|
||||
}
|
||||
}, function ( assert, data ) {
|
||||
}, ( assert, data ) => {
|
||||
const defaultValues = {
|
||||
getReadState: 'all'
|
||||
};
|
||||
|
@ -41,7 +41,7 @@ QUnit.test.each( 'Constructing the model', {
|
|||
}
|
||||
} );
|
||||
|
||||
QUnit.test( 'Changing filters', function ( assert ) {
|
||||
QUnit.test( 'Changing filters', ( assert ) => {
|
||||
const model = new mw.echo.dm.FiltersModel();
|
||||
|
||||
assert.strictEqual(
|
||||
|
@ -72,12 +72,12 @@ QUnit.test( 'Changing filters', function ( assert ) {
|
|||
);
|
||||
} );
|
||||
|
||||
QUnit.test( '.setReadState() events', function ( assert ) {
|
||||
QUnit.test( '.setReadState() events', ( assert ) => {
|
||||
const results = [];
|
||||
const model = new mw.echo.dm.FiltersModel();
|
||||
|
||||
// Listen to update event
|
||||
model.on( 'update', function () {
|
||||
model.on( 'update', () => {
|
||||
results.push( model.getReadState() );
|
||||
} );
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
QUnit.module( 'ext.echo.dm - NotificationGroupsList' );
|
||||
|
||||
QUnit.test( 'Constructing the model', function ( assert ) {
|
||||
QUnit.test( 'Constructing the model', ( assert ) => {
|
||||
const model = new mw.echo.dm.NotificationGroupsList();
|
||||
|
||||
assert.strictEqual(
|
||||
|
@ -10,7 +10,7 @@ QUnit.test( 'Constructing the model', function ( assert ) {
|
|||
);
|
||||
} );
|
||||
|
||||
QUnit.test( 'Managing lists', function ( assert ) {
|
||||
QUnit.test( 'Managing lists', ( assert ) => {
|
||||
const model = new mw.echo.dm.NotificationGroupsList();
|
||||
const groupDefinitions = [
|
||||
{
|
||||
|
@ -50,7 +50,7 @@ QUnit.test( 'Managing lists', function ( assert ) {
|
|||
}
|
||||
];
|
||||
|
||||
groupDefinitions.forEach( function ( def, i ) {
|
||||
groupDefinitions.forEach( ( def, i ) => {
|
||||
model.addGroup(
|
||||
def.name,
|
||||
def.sourceData,
|
||||
|
@ -95,7 +95,7 @@ QUnit.test( 'Managing lists', function ( assert ) {
|
|||
);
|
||||
} );
|
||||
|
||||
QUnit.test( 'Emitting discard event', function ( assert ) {
|
||||
QUnit.test( 'Emitting discard event', ( assert ) => {
|
||||
const results = [];
|
||||
const model = new mw.echo.dm.NotificationGroupsList();
|
||||
const groups = {
|
||||
|
@ -121,7 +121,7 @@ QUnit.test( 'Emitting discard event', function ( assert ) {
|
|||
|
||||
// Listen to the event
|
||||
model
|
||||
.on( 'discard', function ( g ) {
|
||||
.on( 'discard', ( g ) => {
|
||||
results.push( g.getName() );
|
||||
} );
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
QUnit.module( 'ext.echo.dm - NotificationItem', function ( hooks ) {
|
||||
QUnit.module( 'ext.echo.dm - NotificationItem', ( hooks ) => {
|
||||
const fakeData = {
|
||||
type: 'alert',
|
||||
read: true,
|
||||
|
@ -67,7 +67,7 @@ QUnit.module( 'ext.echo.dm - NotificationItem', function ( hooks ) {
|
|||
]
|
||||
}
|
||||
}
|
||||
}, function ( assert, data ) {
|
||||
}, ( assert, data ) => {
|
||||
const defaultValues = {
|
||||
getId: undefined,
|
||||
getContentHeader: '',
|
||||
|
@ -94,7 +94,7 @@ QUnit.module( 'ext.echo.dm - NotificationItem', function ( hooks ) {
|
|||
);
|
||||
|
||||
const methods = ( data.methods === 'all' ? Object.keys( expected ) : data.methods );
|
||||
methods.forEach( function ( method ) {
|
||||
methods.forEach( ( method ) => {
|
||||
assert.deepEqual(
|
||||
// Run the method
|
||||
itemModel[ method ](),
|
||||
|
@ -106,12 +106,12 @@ QUnit.module( 'ext.echo.dm - NotificationItem', function ( hooks ) {
|
|||
} );
|
||||
} );
|
||||
|
||||
QUnit.test( 'Emitting update event', function ( assert ) {
|
||||
QUnit.test( 'Emitting update event', ( assert ) => {
|
||||
const results = [];
|
||||
const itemModel = new mw.echo.dm.NotificationItem( 0, $.extend( true, {}, fakeData, { seen: false, read: false } ) );
|
||||
|
||||
// Listen to update event
|
||||
itemModel.on( 'update', function () {
|
||||
itemModel.on( 'update', () => {
|
||||
results.push( [
|
||||
itemModel.isRead(),
|
||||
itemModel.isSeen()
|
||||
|
|
|
@ -22,7 +22,7 @@ QUnit.test.each( 'Constructing the model', {
|
|||
isForeign: true
|
||||
}
|
||||
}
|
||||
}, function ( assert, data ) {
|
||||
}, ( assert, data ) => {
|
||||
const defaultValues = {
|
||||
getAllItemIds: [],
|
||||
getAllItemIdsByType: [],
|
||||
|
@ -50,7 +50,7 @@ QUnit.test.each( 'Constructing the model', {
|
|||
}
|
||||
} );
|
||||
|
||||
QUnit.test( 'Handling notification items', function ( assert ) {
|
||||
QUnit.test( 'Handling notification items', ( assert ) => {
|
||||
const model = new mw.echo.dm.NotificationsList( { timestamp: '200101010000' } );
|
||||
const items = [
|
||||
new mw.echo.dm.NotificationItem( 0, { type: 'alert', timestamp: '201609190000', read: false, seen: false } ),
|
||||
|
@ -137,7 +137,7 @@ QUnit.test( 'Handling notification items', function ( assert ) {
|
|||
|
||||
} );
|
||||
|
||||
QUnit.test( 'Intercepting events', function ( assert ) {
|
||||
QUnit.test( 'Intercepting events', ( assert ) => {
|
||||
const model = new mw.echo.dm.NotificationsList();
|
||||
const result = [];
|
||||
const items = [
|
||||
|
@ -151,13 +151,13 @@ QUnit.test( 'Intercepting events', function ( assert ) {
|
|||
|
||||
// Listen to events
|
||||
model
|
||||
.on( 'update', function ( itms ) {
|
||||
.on( 'update', ( itms ) => {
|
||||
result.push( 'update:' + itms.length );
|
||||
} )
|
||||
.on( 'discard', function ( item ) {
|
||||
.on( 'discard', ( item ) => {
|
||||
result.push( 'discard:' + item.getId() );
|
||||
} )
|
||||
.on( 'itemUpdate', function ( item ) {
|
||||
.on( 'itemUpdate', ( item ) => {
|
||||
result.push( 'itemUpdate:' + item.getId() );
|
||||
} );
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ QUnit.test.each( 'Constructing the model', {
|
|||
getCurrentPageItemCount: 10
|
||||
}
|
||||
}
|
||||
}, function ( assert, data ) {
|
||||
}, ( assert, data ) => {
|
||||
const defaultValues = {
|
||||
getPageContinue: undefined,
|
||||
getCurrPageIndex: 0,
|
||||
|
@ -45,12 +45,12 @@ QUnit.test.each( 'Constructing the model', {
|
|||
}
|
||||
} );
|
||||
|
||||
QUnit.test( 'Emitting update event', function ( assert ) {
|
||||
QUnit.test( 'Emitting update event', ( assert ) => {
|
||||
const results = [];
|
||||
const model = new mw.echo.dm.PaginationModel();
|
||||
|
||||
// Listen to update event
|
||||
model.on( 'update', function () {
|
||||
model.on( 'update', () => {
|
||||
results.push( [
|
||||
model.getCurrPageIndex(),
|
||||
model.hasNextPage()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
QUnit.module( 'ext.echo.dm - SeenTimeModel' );
|
||||
|
||||
QUnit.test( '.getTypes()', function ( assert ) {
|
||||
QUnit.test( '.getTypes()', ( assert ) => {
|
||||
const model = new mw.echo.dm.SeenTimeModel();
|
||||
|
||||
assert.deepEqual(
|
||||
|
@ -10,7 +10,7 @@ QUnit.test( '.getTypes()', function ( assert ) {
|
|||
);
|
||||
} );
|
||||
|
||||
QUnit.test( '.setSeenTime() reflected', function ( assert ) {
|
||||
QUnit.test( '.setSeenTime() reflected', ( assert ) => {
|
||||
let model;
|
||||
|
||||
model = new mw.echo.dm.SeenTimeModel();
|
||||
|
@ -32,12 +32,12 @@ QUnit.test( '.setSeenTime() reflected', function ( assert ) {
|
|||
);
|
||||
} );
|
||||
|
||||
QUnit.test( '.setSeenTime() events', function ( assert ) {
|
||||
QUnit.test( '.setSeenTime() events', ( assert ) => {
|
||||
const results = [];
|
||||
const model = new mw.echo.dm.SeenTimeModel();
|
||||
|
||||
// Attach a listener
|
||||
model.on( 'update', function ( time ) {
|
||||
model.on( 'update', ( time ) => {
|
||||
results.push( time );
|
||||
} );
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
QUnit.module( 'ext.echo.dm - SourcePagesModel', function () {
|
||||
QUnit.module( 'ext.echo.dm - SourcePagesModel', () => {
|
||||
// Mock partial API response we feed into the model
|
||||
const sources = {
|
||||
local: {
|
||||
|
@ -75,7 +75,7 @@ QUnit.module( 'ext.echo.dm - SourcePagesModel', function () {
|
|||
}
|
||||
};
|
||||
|
||||
QUnit.test( 'Creating source-page map', function ( assert ) {
|
||||
QUnit.test( 'Creating source-page map', ( assert ) => {
|
||||
const model = new mw.echo.dm.SourcePagesModel();
|
||||
|
||||
model.setAllSources( sources );
|
||||
|
|
|
@ -4,7 +4,7 @@ QUnit.test.each( '.getCappedNotificationCount()', [
|
|||
{ input: 5, output: 5 },
|
||||
{ input: 20, output: 11 },
|
||||
{ input: 10, output: 10 }
|
||||
], function ( assert, data ) {
|
||||
], ( assert, data ) => {
|
||||
const model = new mw.echo.dm.UnreadNotificationCounter(
|
||||
null,
|
||||
'all', // type
|
||||
|
@ -17,7 +17,7 @@ QUnit.test.each( '.getCappedNotificationCount()', [
|
|||
);
|
||||
} );
|
||||
|
||||
QUnit.test( '.estimateChange()', function ( assert ) {
|
||||
QUnit.test( '.estimateChange()', ( assert ) => {
|
||||
const model = new mw.echo.dm.UnreadNotificationCounter(
|
||||
null,
|
||||
'all', // type
|
||||
|
@ -48,7 +48,7 @@ QUnit.test( '.estimateChange()', function ( assert ) {
|
|||
);
|
||||
} );
|
||||
|
||||
QUnit.test( '.setCount()', function ( assert ) {
|
||||
QUnit.test( '.setCount()', ( assert ) => {
|
||||
const results = [];
|
||||
const model = new mw.echo.dm.UnreadNotificationCounter(
|
||||
null,
|
||||
|
@ -57,7 +57,7 @@ QUnit.test( '.setCount()', function ( assert ) {
|
|||
);
|
||||
|
||||
// Listen to event
|
||||
model.on( 'countChange', function ( count ) {
|
||||
model.on( 'countChange', ( count ) => {
|
||||
results.push( count );
|
||||
} );
|
||||
|
||||
|
|
Loading…
Reference in a new issue