Jump to content

User:Nardog/ToggleBlocked.js

From Wikipedia, the free encyclopedia
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.
mw.config.get('wgAction') === 'history' &&
$.when($.ready, mw.loader.using(['mediawiki.util', 'mediawiki.storage'])).then(() => {
	if (!document.getElementById('p-tb')) return;
	mw.loader.addStyleTag('.notblocked-hidden .mw-contributions-list > li:has(.history-user > .userlink:not(.user-blocked-indef, .user-blocked-partial, .user-blocked-temp)), .blocked-hidden .mw-contributions-list > li:has(.history-user > :is(.user-blocked-indef, .user-blocked-partial, .user-blocked-temp)){display:none}');
	let data = mw.storage.session.getObject('toggleblocked');
	let state = data?.[0] === mw.config.get('wgArticleId') && data[1] || 0;
	let toggle = isInit => {
		let bcl = document.body.classList;
		switch (state) {
			case 0:
				if (isInit) return;
				bcl.remove('blocked-hidden');
				portlet.textContent = 'Hide not blocked';
				break;
			case 1:
				bcl.add('notblocked-hidden');
				portlet.textContent = 'Hide blocked';
				break;
			case 2:
				bcl.replace('notblocked-hidden', 'blocked-hidden');
				portlet.textContent = 'Show blocked';
		}
		if (isInit) return;
		mw.storage.session.setObject('toggleblocked', [mw.config.get('wgArticleId'), state]);
	};
	let portlet = mw.util.addPortletLink('p-tb', '#', 'Hide not blocked', 't-toggleblocked').firstElementChild;
	portlet.addEventListener('click', function (e) {
		e.preventDefault();
		state = (state + 1) % 3;
		toggle();
	});
	toggle(true);
});