Difference between revisions of "User:CRLF/common.js"

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
(aaa)
Line 1: Line 1:
console.log("your JS loaded it didn't do anything");
+
 
/**
 
* Rollback
 
* @description Perform rollbacks without needing to be in the usergroup
 
* @author Ozank
 
*/
 
(function() {
 
    'use strict';
 
    // Exit if normal rollback links are present or the wiki disabled the script
 
    if ($('.mw-rollback-link').length || window.RollbackWikiDisable) {
 
        return;
 
    }
 
    var Rollback = $.extend(window.Rollback, {
 
        config: mw.config.get([
 
            'wgAction',
 
            'wgCanonicalSpecialPageName',
 
            'wgPageName'
 
        ]),
 
        user: 'Ex Kay Cee Dee',
 
        _preload: 1,
 
        preload: function() {
 
            if (--this._preload === 0) {
 
                this.init();
 
            }
 
        },
 
        init: function() {
 
            this.api = new mw.Api();
 
            this.performRollbackCallback = this.performRollbackCallback
 
                .bind(this);
 
            this.getTop().then(function(data) {
 
                const arr = data.query.usercontribs;
 
                console.log(arr);
 
                const interval = setInterval(function() {
 
                    const rev = arr.shift();
 
                    if (!rev) {
 
                        clearInterval(interval);
 
                        window.location.reload();
 
                        return;
 
                    }
 
                    this.getRevisionIdAndContent(rev.title, rev.user);
 
                    console.log(arr.length);
 
                }.bind(this), 50);
 
            }.bind(this));
 
        },
 
        getTop: function() {
 
            return this.api.get({
 
                action: 'query',
 
                list: 'usercontribs',
 
                ucuser: this.user,
 
                uctoponly: 1,
 
                uclimit: 'max'
 
            });
 
        },
 
        getRevisionIdAndContent: function(title, target) {
 
            this.api.get({
 
                action: 'query',
 
                cb: Date.now(),
 
                indexpageids: 1,
 
                prop: 'revisions',
 
                rvlimit: 'max',
 
                rvprop: 'user|ids',
 
                titles: title
 
            }).done(this.getRevisionIdCallback.bind(this, target)).fail(
 
                this.outputError.bind(this, 'revisionFail')
 
            );
 
        },
 
        getRevisionIdCallback: function(target, data) {
 
            if (data.error) {
 
                this.outputError('revisionFail', data.error.code);
 
                return;
 
            }
 
            var revisions = data.query.pages[data.query.pageids[0]].revisions;
 
            // Don't rollback if the page has been edited by somebody else
 
            if (target !== revisions[0].user) {
 
                console.log('edit conflict');
 
                // this.outputError('editConflict');
 
                return;
 
            }
 
            var lastUser, revId;
 
            for (var i in revisions) {
 
                if (revisions[i].user !== target) {
 
                    // Remember last author
 
                    lastUser = revisions[i].user;
 
                    // Get revision to revert to
 
                    revId = revisions[i].revid;
 
                    break;
 
                }
 
            }
 
            if (!lastUser) {
 
                this.outputError('singleEditor');
 
                return;
 
            }
 
            this.api.get({
 
                action: 'query',
 
                cb: Date.now(),
 
                indexpageids: 1,
 
                prop: 'revisions',
 
                revids: revId,
 
                rvprop: 'content'
 
            }).done(
 
                this.getRevisionContentCallback.bind(this, target, lastUser)
 
            ).fail(
 
                this.outputError.bind(this, 'contentFail', undefined)
 
            );
 
        },
 
        getRevisionContentCallback: function(target, lastUser, data) {
 
            if (data.error) {
 
                this.outputError('contentFail', data.error.code);
 
                return;
 
            }
 
            // Can be no content on page
 
            var page = data.query.pages[data.query.pageids[0]],
 
                content = page.revisions ? page.revisions[0]['*'] : '';
 
            this.performRollback(page.title, content, target, lastUser);
 
        },
 
        performRollback: function(page, text, user, user2) {
 
            this.api.post({
 
                action: 'edit',
 
                bot: true,
 
                minor: true,
 
                summary: 'rv',
 
                text: text,
 
                title: page,
 
                token: mw.user.tokens.get('editToken')
 
            }).done(this.performRollbackCallback).fail(
 
                this.outputError.bind(this, 'editFail')
 
            );
 
        },
 
        performRollbackCallback: function(data) {
 
            if (data.error) {
 
                this.outputError('editFail', data.error.code);
 
            } else {
 
                // mw.notify('Reverted successfully');
 
            }
 
        },
 
        outputError: function(message, code) {
 
            mw.notify('error: ' + message + ' ' + code, {
 
                type: 'error'
 
            });
 
        }
 
    });
 
    mw.loader.using([
 
        'mediawiki.api',
 
        'mediawiki.user',
 
        'mediawiki.util',
 
        'mediawiki.notification'
 
    ], Rollback.preload.bind(Rollback));
 
})();
 
console.log("no of course it did something");
 

Revision as of 00:52, 21 May 2022