All files / mobile.startup/languageOverlay languageOverlay.js

93.33% Statements 14/15
100% Branches 0/0
83.33% Functions 5/6
93.33% Lines 14/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54  1x 1x 1x 1x 1x 1x             2x 2x     2x   2x         2x                             1x                 1x       1x  
const
	m = require( '../moduleLoaderSingleton' ),
	getDeviceLanguage = require( './getDeviceLanguage' ),
	Overlay = require( '../Overlay' ),
	MessageBox = require( '../MessageBox' ),
	currentPageHTMLParser = require( '../currentPageHTMLParser' )(),
	promisedView = require( '../promisedView' );
 
/**
 * @ignore
 * @return {jQuery.Promise} Resolves to LanguageSearcher
 */
function loadLanguageSearcher() {
	return mw.loader.using( 'mobile.languages.structured' ).then( () =>
		currentPageHTMLParser.getLanguages(
			mw.config.get( 'wgTitle' )
		) ).then( ( data ) => {
		const LanguageSearcher = m.require( 'mobile.languages.structured/LanguageSearcher' );
 
		return new LanguageSearcher( {
			languages: data.languages,
			variants: data.variants,
			showSuggestedLanguages: true,
			deviceLanguage: getDeviceLanguage( navigator ),
			onOpen: ( searcher ) => mw.hook( 'mobileFrontend.languageSearcher.onOpen' ).fire( searcher )
		} );
	}, () =>
		new MessageBox( {
			className: 'mw-message-box-error content',
			msg: mw.msg( 'mobile-frontend-languages-structured-overlay-error' )
		} ) );
}
 
/**
 * Factory function that returns a language featured instance of an Overlay
 *
 * @return {Overlay}
 */
function languageOverlay() {
	return Overlay.make(
		{
			heading: mw.msg( 'mobile-frontend-language-heading' ),
			className: 'overlay language-overlay'
		}, promisedView( loadLanguageSearcher() )
	);
}
 
// To make knowing when async logic has resolved easier in tests
languageOverlay.test = {
	loadLanguageSearcher
};
 
module.exports = languageOverlay;