From cfa79e352b257cc0fe8de7f290c2eccecb443076 Mon Sep 17 00:00:00 2001 From: tylerc97 <55768085+tylerc97@users.noreply.github.com> Date: Sat, 2 Apr 2022 02:37:55 +0100 Subject: [PATCH 1/2] Add plugin that will delete highlighted content Add plugin to delete highlighted content --- .../plugins/content/DeleteHighlightedText.js | 32 +++++++++++++++++++ extension/plugins/index.js | 2 ++ 2 files changed, 34 insertions(+) create mode 100644 extension/plugins/content/DeleteHighlightedText.js diff --git a/extension/plugins/content/DeleteHighlightedText.js b/extension/plugins/content/DeleteHighlightedText.js new file mode 100644 index 0000000..7b4f655 --- /dev/null +++ b/extension/plugins/content/DeleteHighlightedText.js @@ -0,0 +1,32 @@ +import ContentPlugin from "../../lib/ContentPlugin.js"; + +class DeleteHighlightedText extends ContentPlugin { + constructor() { + super("Deletes Highlighted Text"); + } + + id = "DTH"; + + settings = { + enabled: false, + }; + + run() { + function deleteContent() { + if (window.getSelection) { + var sel = window.getSelection(); + if (sel.rangeCount) { + var range = sel.getRangeAt(0).cloneRange(); + range.deleteContents(); + sel.removeAllRanges(); + sel.addRange(range); + } + } + } + document.onmouseup = deleteContent; + } + + cleanup() {} +} + +export default DeleteHighlightedText; diff --git a/extension/plugins/index.js b/extension/plugins/index.js index f9e74c2..81601f4 100644 --- a/extension/plugins/index.js +++ b/extension/plugins/index.js @@ -14,6 +14,7 @@ import RandomElementFocus from './content/RandomElementFocus.js'; import KeyRepeat from './content/KeyRepeat.js'; import HideCursorRandomly from './content/HideCursorRandomly.js'; import RedirectToRandomTranslation from './content/RedirectToRandomTranslation.js'; +import DeleteHighlightedText from './content/DeleteHighlightedText.js'; export default [ new RandomDiscordNotification(), @@ -32,4 +33,5 @@ export default [ new KeyRepeat(), new HideCursorRandomly(), new RedirectToRandomTranslation(), + new DeleteHighlightedText(), ]; From 3bd38cc99b581e2f3b711d71f53f08cfe69eff19 Mon Sep 17 00:00:00 2001 From: tylerc97 <55768085+tylerc97@users.noreply.github.com> Date: Sat, 2 Apr 2022 03:52:36 +0100 Subject: [PATCH 2/2] Add date checker --- .vscode/launch.json | 17 +++++++++ extension/popup/popup.js | 81 ++++++++++++++++++++++++++-------------- 2 files changed, 69 insertions(+), 29 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..8e4fc2a --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "pwa-node", + "request": "launch", + "name": "Launch Program", + "skipFiles": [ + "/**" + ], + "program": "${workspaceFolder}\\extension\\popup\\popup.js" + } + ] +} \ No newline at end of file diff --git a/extension/popup/popup.js b/extension/popup/popup.js index b1a32de..a8c3d96 100644 --- a/extension/popup/popup.js +++ b/extension/popup/popup.js @@ -1,34 +1,57 @@ -import plugins from '../plugins/index.js'; +import plugins from "../plugins/index.js"; -const contentElement = document.querySelector('#content-menu'); -const backgroundElement = document.querySelector('#background-menu'); +const contentElement = document.querySelector("#content-menu"); +const backgroundElement = document.querySelector("#background-menu"); -plugins.forEach((plugin) => { - const plugin_id = `plugin_${plugin.id}`; - chrome.storage.local.get(plugin_id, (savedSettings) => { - savedSettings = savedSettings[plugin_id] || plugin.settings; - const labelElement = document.createElement('label'); - labelElement.setAttribute('for', plugin_id); - const inputElement = document.createElement('input'); - inputElement.setAttribute('type', 'checkbox'); - inputElement.setAttribute('id', plugin_id); - inputElement.setAttribute('name', plugin_id); - inputElement.setAttribute('role', 'switch'); - inputElement.checked = savedSettings.enabled; - inputElement.addEventListener('input', () => { - savedSettings.enabled = inputElement.checked; - chrome.storage.local.set({ - [plugin_id]: savedSettings, +const checkDay = function () { + const today = new Date(); + const todayMonth = today.getMonth(); + const todayDay = today.getDate(); + const aprilFool = new Date(2022, 3, 1); + const foolMonth = aprilFool.getMonth(); + const foolDay = aprilFool.getDate(); + + return foolMonth === todayMonth && foolDay === todayDay; +}; + +if (checkDay()) { + plugins.forEach((plugin) => { + const plugin_id = `plugin_${plugin.id}`; + chrome.storage.local.get(plugin_id, (savedSettings) => { + savedSettings = savedSettings[plugin_id] || plugin.settings; + const labelElement = document.createElement("label"); + labelElement.setAttribute("for", plugin_id); + const inputElement = document.createElement("input"); + inputElement.setAttribute("type", "checkbox"); + inputElement.setAttribute("id", plugin_id); + inputElement.setAttribute("name", plugin_id); + inputElement.setAttribute("role", "switch"); + inputElement.checked = savedSettings.enabled; + inputElement.addEventListener("input", () => { + savedSettings.enabled = inputElement.checked; + chrome.storage.local.set({ + [plugin_id]: savedSettings, + }); }); + const spanElement = document.createElement("span"); + spanElement.textContent = plugin.name; + labelElement.append(inputElement); + labelElement.append(spanElement); + if (plugin.type === "background") { + backgroundElement.append(labelElement); + } else if (plugin.type === "content") { + contentElement.append(labelElement); + } }); - const spanElement = document.createElement('span'); - spanElement.textContent = plugin.name; - labelElement.append(inputElement); - labelElement.append(spanElement); - if (plugin.type === 'background') { - backgroundElement.append(labelElement); - } else if (plugin.type === 'content') { - contentElement.append(labelElement); - } }); -}); +} else { + document.body.innerHTML = ""; + document.body.style.width = "500px"; + document.body.style.height = "500px"; + const header = document.createElement("h1"); + header.textContent = + "CAN ONLY WORK ON APRIL FOOLS DAY!!! Come back then for more fun!"; + header.style.textAlign = "center"; + header.style.padding = "50px"; + document.body.append(header); +}