src/mobile.startup/currentPage.js
/* global $ */
const
Page = require( './Page' );
let page;
/**
* Constructs an incomplete Page model singleton representing the currently loaded page.
*
* Because this depends on the presence of certain DOM elements, it
* should only be called after the DOMContentLoaded event.
*
* @ignore
* @return {Page}
*/
function loadCurrentPage() {
if ( page ) {
return page;
}
const permissions = [].concat( mw.config.get( 'wgRestrictionEdit', [] ) ),
relevantTitle = mw.Title.newFromText( mw.config.get( 'wgRelevantPageName' ) ),
title = mw.Title.newFromText( mw.config.get( 'wgPageName' ) );
if ( permissions.length === 0 ) {
permissions.push( '*' );
}
page = new Page( {
title: title.getPrefixedText(),
titleObj: title,
relevantTitle: relevantTitle.getPrefixedText(),
protection: {
edit: permissions
},
revId: mw.config.get( 'wgRevisionId' ),
isMainPage: mw.config.get( 'wgIsMainPage' ),
isWatched: $( '#ca-watch' ).hasClass( 'watched' ),
isMissing: mw.config.get( 'wgArticleId' ) === 0,
id: mw.config.get( 'wgArticleId' ),
namespaceNumber: mw.config.get( 'wgNamespaceNumber' )
} );
return page;
}
module.exports = loadCurrentPage;