MediaWiki:DataFetch.js

From ARK Wiki
Jump to navigation Jump to search

In other languages: DeutschEspañolFrançaisItaliano日本語PolskiPortuguês do BrasilРусскийไทย


Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
var shouldBypassCache = window.location.search.substr( 1 ).split( '&' ).indexOf( 'arkdata=no-cache' ) >= 0;
var CACHE_DURATION = shouldBypassCache ? 1 : 60 * 60 * 36;

window.arkLoadDataPages = function( pages, forceRecacheId ) {
    var results = {},
        scriptPath = mw.config.get( 'wgScriptPath' );

    return Promise.all( pages.map( function ( pageName ) {
        var isRequestingMain = pageName.startsWith( 'en:' ),
            outName = pageName,
            query = {
                action: 'raw',
                ctype: 'application/json',
                maxage: CACHE_DURATION,
                smaxage: CACHE_DURATION,
            };
        if ( forceRecacheId ) {
            query.cb = forceRecacheId;
        }
        if ( isRequestingMain ) {
            pageName = pageName.slice( 3 );
        }

        var url = mw.util.getUrl( pageName, query );
        if ( isRequestingMain && mw.config.get( 'wgContentLanguage' ) !== 'en' && url.startsWith( scriptPath ) ) {
            url = url.slice( scriptPath.length );
        }

        return fetch( url ).then( function ( response ) {
            return response.json().then( function ( data ) {
                results[outName] = data;
            } );
        } );
    } ) ).then( function () {
        return Promise.resolve( results );
    } );
};