Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5962827
notifications.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
notifications.js
View Options
const
mobile
=
require
(
'mobile.startup'
);
/**
* @module module:ext.echo.mobile
*/
/**
* @fires module:ext.echo.mobile#echo.mobile every time the notifications overlay is opened
*/
function
onOpenNotificationsOverlay
()
{
mw
.
hook
(
'echo.mobile'
).
fire
(
true
);
}
/**
* @fires module:ext.echo.mobile#echo.mobile every time the notifications overlay is closed
*/
function
onCloseNotificationsOverlay
()
{
mw
.
hook
(
'echo.mobile'
).
fire
(
false
);
}
/**
* This code loads the necessary modules for the notifications overlay, not to be confused
* with the Toast notifications defined by common/toast.js.
*/
function
init
()
{
const
notificationsFilterOverlay
=
require
(
'./notificationsFilterOverlay.js'
),
notificationsOverlay
=
require
(
'./overlay.js'
),
overlayManager
=
mobile
.
getOverlayManager
();
function
showNotificationOverlay
()
{
const
overlay
=
notificationsOverlay
(
(
exit
)
=>
{
onCloseNotificationsOverlay
();
exit
();
}
);
onOpenNotificationsOverlay
();
return
overlay
;
}
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.
$
(
()
=>
{
overlayManager
.
add
(
/^\/notifications$/
,
showNotificationOverlay
);
/**
* Adds a filter button to the UI inside notificationsInboxWidget
*
* @method
* @ignore
*/
function
addFilterButton
()
{
// Create filter button once the notifications overlay has been loaded
const
filterStatusButton
=
new
OO
.
ui
.
ButtonWidget
(
{
href
:
'#/notifications-filter'
,
classes
:
[
'mw-echo-ui-notificationsInboxWidget-main-toolbar-nav-filter-placeholder'
],
icon
:
'funnel'
,
label
:
mw
.
msg
(
'echo-mobile-notifications-filter-title'
)
}
);
// eslint-disable-next-line no-jquery/no-global-selector
$
(
'.mw-echo-ui-notificationsInboxWidget-cell-placeholder'
).
append
(
$
(
'<div>'
)
.
addClass
(
'mw-echo-ui-notificationsInboxWidget-main-toolbar-nav-filter'
)
.
addClass
(
'mw-echo-ui-notificationsInboxWidget-cell'
)
.
append
(
filterStatusButton
.
$element
)
);
}
// This code will currently only be invoked on Special:Notifications
// 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
(
()
=>
{
// eslint-disable-next-line no-jquery/no-global-selector
const
$crossWikiUnreadFilter
=
$
(
'.mw-echo-ui-crossWikiUnreadFilterWidget'
),
// eslint-disable-next-line no-jquery/no-global-selector
$notifReadState
=
$
(
'.mw-echo-ui-notificationsInboxWidget-main-toolbar-readState'
);
// The 'ext.echo.special.onInitialize' hook is fired whenever special page notification
// changes display on click of a filter.
// Hence the hook is restricted from firing more than once.
if
(
initialized
)
{
return
;
}
// setup the filter button (now we have OOjs UI)
addFilterButton
();
// setup route
overlayManager
.
add
(
/^\/notifications-filter$/
,
()
=>
{
onOpenNotificationsOverlay
();
return
notificationsFilterOverlay
(
{
onBeforeExit
:
function
(
exit
)
{
onCloseNotificationsOverlay
();
exit
();
},
$notifReadState
:
$notifReadState
,
$crossWikiUnreadFilter
:
$crossWikiUnreadFilter
}
);
}
);
initialized
=
true
;
}
);
}
);
}
module
.
exports
.
init
=
init
;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Oct 3, 09:11 (1 w, 3 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
51/c8/9c95c1c237e59d1cba6ce5782598
Default Alt Text
notifications.js (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment