Jump to content

User:SD0001/hide-reverted-edits.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by SD0001 (talk | contribs) at 19:10, 27 June 2019 (begin script for hiding reverted edits from page histories). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// TODO: handle reverts of reverts

$.when(mw.loader.using('mediawiki.util'), $.ready).then(function() {

if (mw.config.get('wgAction') !== 'history') return;

$('#pagehistory li.mw-tag-mw-undo').each(function() {

	var editcomment = $(this).find('.comment').text();

	// Plain mediawiki undo with untampered edit summary
	if (editcomment.startsWith('Undid revision ')) {
		var reverted_rev = parseInt(editcomment.slice('Undid revision '.length));
		if (isNaN(reverted_rev)) return true;

		$(this).hide();
		$('[data-mw-revid=' + reverted_rev +']').hide();

	// Twinkle reverts
	} else if (editcomment.startsWith('Reverted ')) {

		// rollback
		if (/^Reverted (?:good faith|\d+) edits? by/.test(editcomment)) {
			var reverted_user = /^Reverted (?:good faith|\d+) edits? by (.*?) \(talk\)/.exec(editcomment)[1];

			// IPv6 addresses are in lowercase in history page, but in uppercase in rollback edit summary
			if (mw.util.isIPv6Address(reverted_user)) {
				reverted_user = reverted_user.toLowerCase();
			}
			$(this).hide();
			var rev = $(this).next();
			while ( rev.find('.mw-userlink bdi').text() === reverted_user ) {
				rev.hide();
				rev = rev.next();
				if (rev.length === 0) {
					break; // end of page history (in current view)
				}
			}

		// Restore this version edits
		} else if (/^Reverted to revision \d+ by /.test(editcomment)) {
			var last_good_revision = /^Reverted to revision (\d+) by /.exec(editcomment)[1];
			$(this).hide();
			var rev = $(this).next();
			while ( rev.attr('data-mw-revid') !== last_good_revision ) {
				rev.hide();
				rev = rev.next();
				if (rev.length === 0) {
					break; // end of page history (in current view)
				}
			}

		// not a twinkle rollback?
		} else {
			return true;
		}

	}


});

// Mediawiki rollback
$('#pagehistory li.mw-tag-mw-rollback').each(function() {

	var editcomment = $(this).find('.comment').text();

	// sanity check
	if (! editcomment.startsWith('Reverted edits by ')) return true;

	var reverted_user = editcomment.slice('Reverted edits by '.length, editcomment.indexOf(' (talk)'));

	// IPv6 addresses are in lowercase in history page, but in uppercase in rollback edit summary
	if (mw.util.isIPv6Address(reverted_user)) {
		reverted_user = reverted_user.toLowerCase();
	}

	$(this).hide();
	var rev = $(this).next();
	while ( rev.find('.mw-userlink bdi').text() === reverted_user ) {
		rev.hide();
		rev = rev.next();
		if (rev.length === 0) {
			break; // end of page history (in current view)
		}
	}
});

});