/** * @return {boolean} */ function reportDisabled() { mw.notify( mw.msg( 'skin-minerva-night-mode-unavailable' ) ); return true; } /** * @param {Document} doc * @return {boolean} whether it was reported as disabled. * @ignore */ function reportIfNightModeWasDisabledOnPage( doc ) { if ( !doc.classList.contains( 'skin-night-mode-page-disabled' ) ) { return false; } // Cast to string. let userExpectedNightMode = `${ mw.user.options.get( 'minerva-theme' ) }`; if ( !mw.user.isNamed() ) { // bit more convoulated here and will break with upstream changes... // this is protected by an integration test in integration.test.js const cookieValue = mw.cookie.get( 'mwclientpreferences' ) || ''; const match = cookieValue.match( /skin-theme-clientpref-(\S+)/ ); if ( match ) { // we found something in the cookie. userExpectedNightMode = match[ 1 ]; } } if ( userExpectedNightMode === 'night' ) { return reportDisabled(); } else if ( userExpectedNightMode === 'os' && matchMedia( '( prefers-color-scheme: dark )' ).matches ) { return reportDisabled(); } else { return false; } } module.exports = reportIfNightModeWasDisabledOnPage;