Lightsaber Escape QR Code Display

Adds a QR Code of the "lightsaber URL" to the front page of Lightsaber Escape

Bu betiği kurabilmeniz için Tampermonkey, Greasemonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Userscripts gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

You will need to install an extension such as Tampermonkey to install this script.

Bu komut dosyasını yüklemek için bir kullanıcı komut dosyası yöneticisi uzantısı yüklemeniz gerekecek.

(Zaten bir kullanıcı komut dosyası yöneticim var, kurmama izin verin!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Zateb bir user-style yöneticim var, yükleyeyim!)

// ==UserScript==
// @name          Lightsaber Escape QR Code Display
// @namespace     DoomTay
// @description   Adds a QR Code of the "lightsaber URL" to the front page of Lightsaber Escape
// @version       1.2.0
// @include       https://lightsaber.withgoogle.com/
// @grant         GM_xmlhttpRequest

// ==/UserScript==

var observer = new MutationObserver(function(mutations) {
	mutations.forEach(function(mutation) {
		var lightsaberURL = "";
		if(mutation.type == "characterData" && mutation.target.parentNode.id == "url") lightsaberURL = mutation.target.textContent;
		else if(mutation.type == "childList" && mutation.target.id == "url" && Array.prototype.some.call(mutation.addedNodes,node => node.textContent.includes("g.co"))) lightsaberURL = Array.prototype.find.call(mutation.addedNodes,node => node.textContent.includes("g.co")).textContent;
		if(lightsaberURL)
		{
			observer.disconnect();
			//Using GM_xmlhttpRequest because this site doesn't like off-domain images
			GM_xmlhttpRequest({
				method: "GET",
				url: "https://chart.googleapis.com/chart?chs=120x120&cht=qr&chl=" + lightsaberURL + "&chld=L|1&choe=UTF-8",
				overrideMimeType: "text/plain; charset=x-user-defined",
				onload: function(response) {
					var QRCode = new Image();
					QRCode.id = "LSCode";
					
					var arr = Uint8Array.from(response.responseText,thing => thing.charCodeAt(0) & 0xFF);
					var imageData = new Blob([arr.buffer],{type:"image/png"});
					QRCode.src = window.URL.createObjectURL(imageData);
					document.getElementsByClassName("centered")[0].insertBefore(QRCode,document.getElementsByClassName("connection-url-wrapper style-scope sw-page-landing")[0]);
					QRCode.style.position = "absolute";
					if(innerHeight >= 1024)
					{
						QRCode.style.left = "45%";
						QRCode.style.bottom = "-35px";
					}
					else
					{
						QRCode.style.left = "75%";
						QRCode.style.bottom = "150px";
					}
				}
			});
		}
	});
});
var config = { attributes: true, childList: true, characterData: true, subtree: true };
observer.observe(document.getElementById("app"), config);