User:Anne drew Andrew and Drew/gigawatch.js

/* Watch/unwatch all pages (up to 500) in a category */

// @param maxPages Number of pages to watch/unwatch // @param act Action: watch or unwatch function watchPages(maxPages, act) { // Make the ajax request to fetch category members $.ajax({       url: mw.util.wikiScript('api'),        data: {            action: 'query',            list: 'categorymembers',            format: 'json',            cmtitle: mw.config.get('wgPageName'),            formatversion: 2,            cmprop: 'title',            cmtype: 'page',            cmlimit: maxPages        },        success: function (data) {            const categoryMembers = data.query.categorymembers;            // Check if we got anything            if (!categoryMembers) {                console.log('none found');            } else {                let result = [];                for (let i = 0; i < categoryMembers.length; i++) {                    result.push(categoryMembers[i].title);                }                const api = new mw.Api;                const apiCalls = [];

// Post the watch request while (result.length) { const sliced = result.slice(0, 50); apiCalls.push(api.postWithToken('watch', { action: 'watch', titles: sliced.join('|'), formatversion: 2, format: 'json', ...(act === 'unwatch' && { unwatch: 'true' }) }));                   result = result.slice(50); }               Promise.all(apiCalls).then( => {                    alert("Done!");                    if (act === 'watch') {                        $('#gigawatch').addClass('watched');                    }                    else {                        $('#gigawatch').removeClass('watched');                    }                }); }       }    }); }

$(document).ready(function {    if (mw.config.get('wgCanonicalNamespace') == 'Category') {        $('#p-cactions').find('ul').append( "Watch all\n" );       $('#gigawatch').click(function  { const maxPages = 500; if ($('#gigawatch').hasClass('watched')) { if (confirm('Are you sure you want to unwatch all pages in this category? (Restricted to top 500 pages only)')) { watchPages(maxPages, 'unwatch'); }           } else { if (confirm('Are you sure you want to watch all pages in this category? (Restricted to top 500 pages only)')) { watchPages(maxPages, 'watch'); }           }        });    } });