mediawiki-skins-Insurgency/resources/mobile-echo.js
2024-11-27 23:05:37 -05:00

63 lines
2 KiB
JavaScript

/* eslint-disable no-jquery/no-global-selector */
module.exports = function () {
const mobileMediaQuery = window.matchMedia( 'screen and (max-width: 550px)' ),
notifications = $( '#pt-notifications-alert a' ).data( 'counter-num' ) + $( '#pt-notifications-notice a' ).data( 'counter-num' );
let echoHacked = false,
echoHackActive = false,
notificationsString;
// When the icons are clicked for the first time, they are replaced with a JS interface,
// so don't cache this in a long-lived variable
function getNotificationIcons() {
return $( '#pt-notifications-alert, #pt-notifications-notice' );
}
// Move echo badges in/out of p-personal
function monoBookMobileMoveEchoIcons() {
const $notificationIcons = getNotificationIcons();
if ( $notificationIcons.length ) {
if ( !echoHackActive && mobileMediaQuery.matches ) {
$( '#echo-hack-badges' ).append( $notificationIcons );
echoHackActive = true;
} else if ( echoHackActive && !mobileMediaQuery.matches ) {
$( $notificationIcons ).insertBefore( '#pt-mytalk' );
echoHackActive = false;
}
}
}
function monoBookMobileEchoHack() {
const $notificationIcons = getNotificationIcons();
if ( $notificationIcons.length ) {
if ( !echoHacked && mobileMediaQuery.matches ) {
if ( notifications ) {
notificationsString = mw.msg( 'insurgency-notifications-link', notifications );
} else {
notificationsString = mw.msg( 'insurgency-notifications-link-none' );
}
// add inline p-personal echo link
mw.util.addPortletLink(
'p-personal',
mw.util.getUrl( 'Special:Notifications' ),
notificationsString,
'pt-notifications',
$( '#pt-notifications-notice' ).attr( 'tooltip' ),
null,
'#pt-preferences'
);
$( '#p-personal-toggle' ).append( $( '<ul>' ).attr( 'id', 'echo-hack-badges' ) );
echoHacked = true;
}
monoBookMobileMoveEchoIcons();
}
}
$( window ).on( 'resize', monoBookMobileEchoHack );
monoBookMobileEchoHack();
};