Choose a Word

Notifies you whenever it's your turn to draw. Notifications must be allowed.

// ==UserScript==
// @name          Choose a Word
// @namespace     https://greasyfork.org/users/281093
// @match         https://sketchful.io/*
// @grant         none
// @version       1.0.2
// @author        Bell
// @description   Notifies you whenever it's your turn to draw. Notifications must be allowed.
// jshint esversion: 6
// ==/UserScript==

(function requestPermission() {
    if (Notification.permission === "granted") {
        console.log("Notifications allowed, Choose a Word loaded");
    } else {
        Notification.requestPermission()
            .then(result => {
                console.log(result);
            });
    }
})();

window.onfocus = () => {
    sessionStorage.setItem('tabFocus', '1');
};

window.onblur = () => {
    sessionStorage.setItem('tabFocus', '0');
};

const checkSticky = function(mutationsList, observer) {
    for (let mutation of mutationsList) {
        if (mutation.addedNodes[0].innerHTML && mutation.addedNodes[0].innerHTML.includes("Choose")) {
            let focus = parseInt(sessionStorage.getItem('tabFocus'));
            console.log("CHOOSE A WORD NOTIFICATION", focus);
            if (!focus) {
                notify();
            }
        }
    }
};

const playerList = document.querySelector("#gameSticky");
const observer = new MutationObserver(checkSticky);
const config = {
    attributes: false,
    childList: true,
    subtree: true
};

observer.observe(playerList, config);

function notify() {
    if (Notification.permission === "granted") {
        let notification = new Notification("Your Turn", {
            icon: "https://sketchful.io/res/logo/pencils%20optimized.png",
            body: "Click the notification to return to the game.",
            requireInteraction: true,
        });

        notification.onclick = function() {
            window.focus();
            notification.close();
        };
    } else {
        console.log("Notifications are blocked.");
    }
}