Merge "Avoid abrupt and jarring white flash in media viewer"
This commit is contained in:
commit
198276256e
|
@ -11,6 +11,7 @@
|
||||||
OverlayManager = M.require( 'mobile.startup/OverlayManager' ),
|
OverlayManager = M.require( 'mobile.startup/OverlayManager' ),
|
||||||
overlayManager = new OverlayManager( require( 'mediawiki.router' ) ),
|
overlayManager = new OverlayManager( require( 'mediawiki.router' ) ),
|
||||||
page = M.getCurrentPage(),
|
page = M.getCurrentPage(),
|
||||||
|
api = new mw.Api(),
|
||||||
thumbs = page.getThumbnails();
|
thumbs = page.getThumbnails();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -93,23 +94,17 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load image overlay
|
* Make an instance of an ImageOverlay. This function assumes that the module
|
||||||
|
* providing the ImageOverlay has been asynchronously loaded.
|
||||||
* @method
|
* @method
|
||||||
* @ignore
|
* @ignore
|
||||||
* @uses ImageOverlay
|
|
||||||
* @param {string} title Url of image
|
* @param {string} title Url of image
|
||||||
* @return {JQuery.Deferred}
|
* @return {ImageOverlay}
|
||||||
*/
|
*/
|
||||||
function loadImageOverlay( title ) {
|
function makeImageOverlay( title ) {
|
||||||
if ( mw.loader.getState( 'mmv.bootstrap' ) === 'ready' ) {
|
|
||||||
// This means MultimediaViewer has been installed and is loaded.
|
|
||||||
// Avoid loading it (T169622)
|
|
||||||
return $.Deferred().reject();
|
|
||||||
} else {
|
|
||||||
return loader.loadModule( 'mobile.mediaViewer' ).then( function () {
|
|
||||||
var ImageOverlay = M.require( 'mobile.mediaViewer/ImageOverlay' ),
|
var ImageOverlay = M.require( 'mobile.mediaViewer/ImageOverlay' ),
|
||||||
imageOverlay = new ImageOverlay( {
|
imageOverlay = new ImageOverlay( {
|
||||||
api: new mw.Api(),
|
api: api,
|
||||||
thumbnails: thumbs,
|
thumbnails: thumbs,
|
||||||
title: decodeURIComponent( title )
|
title: decodeURIComponent( title )
|
||||||
} );
|
} );
|
||||||
|
@ -123,6 +118,28 @@
|
||||||
routeThumbnail( nextThumbnail );
|
routeThumbnail( nextThumbnail );
|
||||||
} );
|
} );
|
||||||
return imageOverlay;
|
return imageOverlay;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load image overlay
|
||||||
|
* @method
|
||||||
|
* @ignore
|
||||||
|
* @uses ImageOverlay
|
||||||
|
* @param {string} title Url of image
|
||||||
|
* @return {JQuery.Deferred|ImageOverlay}
|
||||||
|
*/
|
||||||
|
function loadImageOverlay( title ) {
|
||||||
|
if ( mw.loader.getState( 'mmv.bootstrap' ) === 'ready' ) {
|
||||||
|
// This means MultimediaViewer has been installed and is loaded.
|
||||||
|
// Avoid loading it (T169622)
|
||||||
|
return $.Deferred().reject();
|
||||||
|
} else if ( mw.loader.getState( 'mobile.mediaViewer' ) === 'ready' ) {
|
||||||
|
// If module already loaded, do this synchronously to avoid the event loop causing
|
||||||
|
// a visible flash (see T197110)
|
||||||
|
return makeImageOverlay( title );
|
||||||
|
} else {
|
||||||
|
return loader.loadModule( 'mobile.mediaViewer' ).then( function () {
|
||||||
|
return makeImageOverlay( title );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -134,7 +151,7 @@
|
||||||
|
|
||||||
return loader.loadModule( 'mobile.languages.structured', true ).then( function ( loadingOverlay ) {
|
return loader.loadModule( 'mobile.languages.structured', true ).then( function ( loadingOverlay ) {
|
||||||
var PageGateway = M.require( 'mobile.startup/PageGateway' ),
|
var PageGateway = M.require( 'mobile.startup/PageGateway' ),
|
||||||
gateway = new PageGateway( new mw.Api() ),
|
gateway = new PageGateway( api ),
|
||||||
LanguageOverlay = M.require( 'mobile.languages.structured/LanguageOverlay' );
|
LanguageOverlay = M.require( 'mobile.languages.structured/LanguageOverlay' );
|
||||||
|
|
||||||
return gateway.getPageLanguages( mw.config.get( 'wgPageName' ), lang ).then( function ( data ) {
|
return gateway.getPageLanguages( mw.config.get( 'wgPageName' ), lang ).then( function ( data ) {
|
||||||
|
|
Loading…
Reference in New Issue