User:Fred Gandt/unwatchList.js

if ( ( /^Special:Watchlist/ ).test( mw.config.get( "wgPageName" ) ) ) { const CHNGLST = document.querySelector( "#mw-content-text div.mw-changeslist" ); mw.loader.load( "/w/index.php?title=User:Fred_Gandt/unwatchList.css&action=raw&ctype=text/css", "text/css" ); $( document ).ready( => {		CHNGLST.addEventListener( "click", evt => { const TRG = evt.target, PAR = TRG.parentElement; if ( TRG === PAR.querySelector( "span.mw-changeslist-separator" ) ) { const CSSQ = 'li span.mw-changeslist-line-inner[data-target-page="',					UNWTCHNG = !PAR.parentElement.classList.contains( "fg-changeslist-unwatched" ),					TPP = /^(?:([a-z]+)( talk)?\:)?(.+)$/i.exec( PAR.dataset.targetPage ),					NTNS = TPP[ 1 ] && TPP[ 1 ] !== "Talk",					PGNM = ( NTNS ? TPP[ 1 ] + ":" : "" ) + TPP[ 3 ],					TPGNM = ( NTNS ? TPP[ 1 ] + " talk:" : "Talk:" ) + TPP[ 3 ];					QS = {						action: "watch",						format: "json",						token: mw.user.tokens.values.watchToken,						titles: PGNM					};				if ( UNWTCHNG ) QS.unwatch = true;				$.ajax( {					type: "POST",					url: "/w/api.php",					dataType: QS.format,					data: QS,					success: data => CHNGLST.querySelectorAll( CSSQ + PGNM + '"],' + CSSQ + TPGNM + '"]' ).forEach( s => s.parentElement.classList.toggle( "fg-changeslist-unwatched", UNWTCHNG ) ),					error: data => console.error( data )				} );			}		} );	} ); }