From 5d899b0820a19c420d05a21f4ba63d4324562262 Mon Sep 17 00:00:00 2001 From: Ryan Cao <70191398+ryanccn@users.noreply.github.com> Date: Mon, 10 Jul 2023 10:22:52 +0800 Subject: [PATCH] feat: enable secure keyboard entry on password fields --- src/main/ipc.ts | 10 ++++++++++ src/preload/VencordDesktopNative.ts | 4 ++++ src/renderer/index.ts | 1 + src/renderer/secureKeyboardEntry.ts | 26 ++++++++++++++++++++++++++ src/shared/IpcEvents.ts | 5 ++++- 5 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/renderer/secureKeyboardEntry.ts diff --git a/src/main/ipc.ts b/src/main/ipc.ts index c073c68..52de68d 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -103,6 +103,16 @@ ipcMain.handle(IpcEvents.SELECT_VENCORD_DIR, async () => { ipcMain.handle(IpcEvents.SET_BADGE_COUNT, (_, count: number) => setBadgeCount(count)); +ipcMain.handle(IpcEvents.ENABLE_SECURE_KEYBOARD_ENTRY, () => { + if (process.platform !== "darwin") return; + if (!app.isSecureKeyboardEntryEnabled()) app.setSecureKeyboardEntryEnabled(true); +}); + +ipcMain.handle(IpcEvents.DISABLE_SECURE_KEYBOARD_ENTRY, () => { + if (process.platform !== "darwin") return; + if (app.isSecureKeyboardEntryEnabled()) app.setSecureKeyboardEntryEnabled(false); +}); + function readCss() { return readFile(VENCORD_QUICKCSS_FILE, "utf-8").catch(() => ""); } diff --git a/src/preload/VencordDesktopNative.ts b/src/preload/VencordDesktopNative.ts index 6f0f402..9744a2e 100644 --- a/src/preload/VencordDesktopNative.ts +++ b/src/preload/VencordDesktopNative.ts @@ -54,5 +54,9 @@ export const VencordDesktopNative = { }, capturer: { getLargeThumbnail: (id: string) => invoke(IpcEvents.CAPTURER_GET_LARGE_THUMBNAIL, id) + }, + secureKeyboardEntry: { + enable: () => invoke(IpcEvents.ENABLE_SECURE_KEYBOARD_ENTRY), + disable: () => invoke(IpcEvents.DISABLE_SECURE_KEYBOARD_ENTRY) } }; diff --git a/src/renderer/index.ts b/src/renderer/index.ts index dc0cf10..39d75c2 100644 --- a/src/renderer/index.ts +++ b/src/renderer/index.ts @@ -7,6 +7,7 @@ import "./fixes"; import "./appBadge"; import "./patches"; +import "./secureKeyboardEntry"; console.log("read if cute :3"); diff --git a/src/renderer/secureKeyboardEntry.ts b/src/renderer/secureKeyboardEntry.ts new file mode 100644 index 0000000..d63e064 --- /dev/null +++ b/src/renderer/secureKeyboardEntry.ts @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: GPL-3.0 + * Vencord Desktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2023 Vendicated and Vencord contributors + */ + +document.addEventListener( + "focusin", + ev => { + console.log(ev); + if (ev.target && ev.target instanceof HTMLInputElement && ev.target.getAttribute("type") === "password") { + VencordDesktopNative.secureKeyboardEntry.enable(); + } + }, + true +); + +document.addEventListener( + "focusout", + ev => { + if (ev.target && ev.target instanceof HTMLInputElement && ev.target.getAttribute("type") === "password") { + VencordDesktopNative.secureKeyboardEntry.disable(); + } + }, + true +); diff --git a/src/shared/IpcEvents.ts b/src/shared/IpcEvents.ts index ff129ec..0248778 100644 --- a/src/shared/IpcEvents.ts +++ b/src/shared/IpcEvents.ts @@ -37,5 +37,8 @@ export const enum IpcEvents { AUTOSTART_ENABLED = "VCD_AUTOSTART_ENABLED", ENABLE_AUTOSTART = "VCD_ENABLE_AUTOSTART", - DISABLE_AUTOSTART = "VCD_DISABLE_AUTOSTART" + DISABLE_AUTOSTART = "VCD_DISABLE_AUTOSTART", + + ENABLE_SECURE_KEYBOARD_ENTRY = "VCD_ENABLE_SECURE_KEYBOARD_ENTRY", + DISABLE_SECURE_KEYBOARD_ENTRY = "VCD_DISABLE_SECURE_KEYBOARD_ENTRY" }