Use showReference function rather than deprecated ReferenceDrawer

Bug: T217295
Depends-On: I2ef762dbc1458411dd8ed746b7e829a2924740e3
Change-Id: Ia90ba47f152315fd39da368edac986b55f8bd5a0
This commit is contained in:
jdlrobson 2019-08-08 14:09:08 -07:00 committed by Jdlrobson
parent bfdfc1165c
commit 59fe37cde1
1 changed files with 8 additions and 48 deletions

View File

@ -1,37 +1,19 @@
module.exports = function () { module.exports = function () {
var drawer, var M = mw.mobileFrontend,
M = mw.mobileFrontend,
router = require( 'mediawiki.router' ),
mobile = M.require( 'mobile.startup' ), mobile = M.require( 'mobile.startup' ),
references = mobile.references,
currentPage = mobile.currentPage(), currentPage = mobile.currentPage(),
currentPageHTMLParser = mobile.currentPageHTMLParser(), currentPageHTMLParser = mobile.currentPageHTMLParser(),
ReferencesGateway = mobile.ReferencesGateway,
ReferencesHtmlScraperGateway = mobile.ReferencesHtmlScraperGateway, ReferencesHtmlScraperGateway = mobile.ReferencesHtmlScraperGateway,
ReferencesDrawer = mobile.ReferencesDrawer; gateway = new ReferencesHtmlScraperGateway( new mw.Api() );
/**
* Creates a ReferenceDrawer based on the currently available
* ReferenceGateway
*
* @ignore
* @return {ReferencesDrawer}
*/
function referenceDrawerFactory() {
var gateway = new ReferencesHtmlScraperGateway( new mw.Api() );
return new ReferencesDrawer( {
gateway: gateway
} );
}
/** /**
* Event handler to show reference when a reference link is clicked * Event handler to show reference when a reference link is clicked
* @ignore * @ignore
* @param {JQuery.Event} ev Click event of the reference element * @param {JQuery.Event} ev Click event of the reference element
* @param {ReferencesDrawer} drawer to show the reference in
*/ */
function showReference( ev, drawer ) { function showReference( ev ) {
var urlComponents, result, var urlComponents,
$dest = $( ev.currentTarget ), $dest = $( ev.currentTarget ),
href = $dest.attr( 'href' ); href = $dest.attr( 'href' );
@ -43,27 +25,8 @@ module.exports = function () {
if ( urlComponents.length > 1 ) { if ( urlComponents.length > 1 ) {
href = '#' + urlComponents[ 1 ]; href = '#' + urlComponents[ 1 ];
} }
result = drawer.showReference( href, currentPage, $dest.text(), currentPageHTMLParser ); references.showReference( href, currentPage, $dest.text(),
// Previously showReference method returns nothing so we check its truthy currentPageHTMLParser, gateway );
// Can be removed when I5a7b23f60722eb5017a85c68f38844dd460f8b63 is merged.
if ( result ) {
result.then( function () {}, function ( err ) {
if ( err === ReferencesGateway.ERROR_NOT_EXIST ) {
router.navigate( href );
}
} );
}
// don't hide drawer (stop propagation of click) if it is already shown
// (e.g. click another reference)
if ( drawer.isVisible() ) {
ev.stopPropagation();
} else {
// flush any existing reference information
drawer.render( {
text: undefined
} );
}
} }
/** /**
@ -74,10 +37,7 @@ module.exports = function () {
* @param {JQuery.Event} ev Click event of the reference element * @param {JQuery.Event} ev Click event of the reference element
*/ */
function onClickReference( ev ) { function onClickReference( ev ) {
if ( !drawer ) { showReference( ev );
drawer = referenceDrawerFactory();
}
showReference( ev, drawer );
} }
function init() { function init() {