From 685147054710dbb81ce2404a24a56d50cdf97d52 Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Mon, 28 Oct 2019 16:13:37 -0400 Subject: [PATCH] Added the ability to change the keybind. --- _locales/en/messages.json | 12 ++++++++++++ content.js | 20 +++++++++++++++++--- popup.html | 13 +++++++++++++ popup.js | 39 ++++++++++++++++++++++++++++++++++++++- 4 files changed, 80 insertions(+), 4 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 488ba60f..ddb91234 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -246,5 +246,17 @@ "noticeUpdate": { "message": "The notice has been upgraded! If you still don't like it, hit the never show button.", "description": "The message displayed after the notice was upgraded." + }, + "setStartSponsorShortcut": { + "message": "Set key for start sponsor keybind" + }, + "setSubmitKeybind": { + "message": "Set key for submission keybind" + }, + "keybindDescription": { + "message": "Select a key by typing it" + }, + "keybindDescriptionComplete": { + "message": "The keybind has been set to: " } } diff --git a/content.js b/content.js index 5283354c..7b3fbc09 100644 --- a/content.js +++ b/content.js @@ -204,18 +204,32 @@ function messageListener(request, sender, sendResponse) { } //check for hotkey pressed -document.onkeydown = function(e){ +document.onkeydown = async function(e){ e = e || window.event; var key = e.key; let video = document.getElementById("movie_player"); + let startSponsorKey = await new Promise((resolve, reject) => { + chrome.storage.sync.get(["startSponsorKeybind"], (result) => resolve(result)); + }); + let submitKey = await new Promise((resolve, reject) => { + chrome.storage.sync.get(["submitKeybind"], (result) => resolve(result)); + }); + + if (startSponsorKey.startSponsorKeybind === undefined) { + startSponsorKey.startSponsorKeybind = ";" + } + if (submitKey.submitKeybind === undefined) { + submitKey.submitKeybind = "'" + } + //is the video in focus, otherwise they could be typing a comment if (document.activeElement === video) { - if(key == ';'){ + if(key == startSponsorKey.startSponsorKeybind){ //semicolon startSponsorClicked(); - } else if (key == "'") { + } else if (key == submitKey.submitKeybind) { //single quote submitSponsorTimes(); } diff --git a/popup.html b/popup.html index ac89c9b5..a2923eb0 100644 --- a/popup.html +++ b/popup.html @@ -172,6 +172,19 @@

__MSG_Options__

+ + + +
+
+ +
+
+ + + +
+
diff --git a/popup.js b/popup.js index a7b3a41a..feadd2ab 100644 --- a/popup.js +++ b/popup.js @@ -70,6 +70,10 @@ function runThePopup() { "videoFound", "sponsorMessageTimes", "downloadedSponsorMessageTimes", + // Keybinds + "setStartSponsorKeybind", + "setSubmitKeybind", + "keybindDescription" ].forEach(id => SB[id] = document.getElementById(id)); //setup click listeners @@ -79,6 +83,8 @@ function runThePopup() { SB.clearTimes.addEventListener("click", clearTimes); SB.submitTimes.addEventListener("click", submitTimes); SB.showNoticeAgain.addEventListener("click", showNoticeAgain); + SB.setStartSponsorKeybind.addEventListener("click", () => setKeybind(true)); + SB.setSubmitKeybind.addEventListener("click", () => setKeybind(false)); SB.hideVideoPlayerControls.addEventListener("click", hideVideoPlayerControls); SB.showVideoPlayerControls.addEventListener("click", showVideoPlayerControls); SB.hideInfoButtonPlayerControls.addEventListener("click", hideInfoButtonPlayerControls); @@ -104,6 +110,9 @@ function runThePopup() { //is this a YouTube tab? let isYouTubeTab = false; + + // Is the start sponsor keybind currently being set + let setStartSponsorKeybind = false; //see if discord link can be shown chrome.storage.sync.get(["hideDiscordLink"], function(result) { @@ -1236,7 +1245,35 @@ function runThePopup() { ); }); } - + + function setKeybind(startSponsorKeybind) { + document.getElementById("keybindButtons").style.display = "none"; + + document.getElementById("keybindDescription").style.display = "initial"; + document.getElementById("keybindDescription").innerText = chrome.i18n.getMessage("keybindDescription"); + + setStartSponsorKeybind = startSponsorKeybind; + + document.addEventListener("keydown", onKeybindSet) + } + + function onKeybindSet(e) { + e = e || window.event; + var key = e.key; + + if (setStartSponsorKeybind) { + chrome.storage.sync.set({"startSponsorKeybind": key}); + } else { + chrome.storage.sync.set({"submitKeybind": key}); + } + + document.removeEventListener("keydown", onKeybindSet); + + document.getElementById("keybindDescription").innerText = chrome.i18n.getMessage("keybindDescriptionComplete") + " " + key; + + document.getElementById("keybindButtons").style.display = "unset"; + } + //converts time in seconds to minutes function getTimeInMinutes(seconds) { let minutes = Math.floor(seconds / 60);