better detection
This commit is contained in:
parent
7f1cd97247
commit
dddd8930cd
5
main.js
5
main.js
@ -102,7 +102,7 @@ app.on('web-contents-created', (event, contents) => {
|
|||||||
// https://electronjs.org/docs/tutorial/security#13-disable-or-limit-creation-of-new-windows
|
// https://electronjs.org/docs/tutorial/security#13-disable-or-limit-creation-of-new-windows
|
||||||
app.on('web-contents-created', (event, contents) => {
|
app.on('web-contents-created', (event, contents) => {
|
||||||
contents.on('new-window', async (event, navigationUrl) => {
|
contents.on('new-window', async (event, navigationUrl) => {
|
||||||
event.preventDefault() // External links just don't open
|
event.preventDefault() // Prevents external links from opening
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
/* ---- */
|
/* ---- */
|
||||||
@ -118,7 +118,7 @@ app.on('ready', () => {
|
|||||||
webViewSession.setPermissionRequestHandler((webContents, permission, callback) => { // deny all permissions
|
webViewSession.setPermissionRequestHandler((webContents, permission, callback) => { // deny all permissions
|
||||||
const url = webContents.getURL()
|
const url = webContents.getURL()
|
||||||
if (url.startsWith('https://discordapp.com/')) {
|
if (url.startsWith('https://discordapp.com/')) {
|
||||||
if (permission === 'media' && isConnected === true) {
|
if (permission === 'media' && isConnected === true) { // if user is connected to Discord voice then enable microphone
|
||||||
console.log("User connected to Discord VOIP server. Granted permission for microphone")
|
console.log("User connected to Discord VOIP server. Granted permission for microphone")
|
||||||
return callback(true)
|
return callback(true)
|
||||||
}
|
}
|
||||||
@ -173,6 +173,7 @@ ipcMain.on('asynchronous-message', (event, msg) => {
|
|||||||
|
|
||||||
if (msg === 'self-muted') {
|
if (msg === 'self-muted') {
|
||||||
console.log("User self-muted")
|
console.log("User self-muted")
|
||||||
|
webViewSession.setPermissionRequestHandler(null)
|
||||||
selfMute = true
|
selfMute = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
96
renderer.js
96
renderer.js
@ -1,9 +1,19 @@
|
|||||||
function removeBloat(webview) {
|
function removeBloat(webview) {
|
||||||
console.log("removing bloat")
|
bloatList = [
|
||||||
webview.executeJavaScript(`document.getElementsByClassName("anchor-3Z-8Bb anchorUnderlineOnHover-2ESHQB")[0].remove();`) // Remove top-right help button
|
'anchor-3Z-8Bb anchorUnderlineOnHover-2ESHQB', // Remove top-right help button
|
||||||
webview.executeJavaScript(`document.getElementsByClassName("contents-18-Yxp button-3AYNKb button-2vd_v_")[0].remove();`) // Remove gift from chat
|
'contents-18-Yxp button-3AYNKb button-2vd_v_', // Remove gift and GIF from chat
|
||||||
webview.executeJavaScript(`document.getElementsByClassName("noticeDefault-362Ko2 notice-2FJMB4 size14-3iUx6q height36-36OHCc")[document.getElementsByClassName("noticeDefault-362Ko2 notice-2FJMB4 size14-3iUx6q height36-36OHCc").length - 1].remove();`) // Remove "get push to talk" top notification
|
'noticeDefault-362Ko2',
|
||||||
webview.executeJavaScript(`document.getElementsByClassName("channelNotice-1-XFjC invite-OjTXrW")[document.getElementsByClassName("channelNotice-1-XFjC invite-OjTXrW").length - 1].remove();`) // Remove "invite people" notification
|
'channelNotice-1-XFjC',
|
||||||
|
]
|
||||||
|
bloatList.forEach(function(tag){
|
||||||
|
webview.executeJavaScript(`
|
||||||
|
console.log("Checking for bloat tag: ${tag}")
|
||||||
|
if (document.getElementsByClassName("${tag}").length !== 0){
|
||||||
|
document.getElementsByClassName("${tag}")[document.getElementsByClassName("${tag}").length - 1].remove();
|
||||||
|
console.log("Removed bloat tag: ${tag}")
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function muteMic(webview){
|
function muteMic(webview){
|
||||||
@ -12,6 +22,47 @@ function muteMic(webview){
|
|||||||
webview.sendInputEvent({keyCode: 'Backspace', type: 'char'});
|
webview.sendInputEvent({keyCode: 'Backspace', type: 'char'});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Creates an observer for user list to detect if server is switched
|
||||||
|
function userListChangeListener(webview) {
|
||||||
|
webview.executeJavaScript(`
|
||||||
|
const userList = document.getElementsByClassName("sidebar-2K8pFh")[0]
|
||||||
|
const userListconfig = { attributes: false, childList: true, subtree: true, characterData: false };
|
||||||
|
|
||||||
|
const userListChangeCallback = function(mutationsList, observer) {
|
||||||
|
console.log('--user list changed');
|
||||||
|
|
||||||
|
if (document.getElementsByClassName("container-1giJp5").length !== 0){
|
||||||
|
console.log('--user has connected to discord voice server')
|
||||||
|
}else {
|
||||||
|
console.log('--user has disconnected to discord voice server')
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
const userListObserver = new MutationObserver(userListChangeCallback);
|
||||||
|
userListObserver.observe(userList, userListconfig);
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
|
function userMuteDeafenListener(webview) {
|
||||||
|
webview.executeJavaScript(`
|
||||||
|
const userMuteDeafen = document.getElementsByClassName("container-3baos1")[0]
|
||||||
|
const userMuteDeafenconfig = { attributes: false, childList: true, subtree: true, characterData: false };
|
||||||
|
|
||||||
|
const userMuteDeafencallback = function(mutationsList, observer) {
|
||||||
|
console.log('--user mute deafen changed');
|
||||||
|
|
||||||
|
if (document.querySelectorAll('[aria-label="Mute"]').length === 0){
|
||||||
|
console.log("muted")
|
||||||
|
}else {
|
||||||
|
console.log("unmuted")
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
const userMuteDeafenObserver = new MutationObserver(userMuteDeafencallback);
|
||||||
|
userMuteDeafenObserver.observe(userMuteDeafen, userMuteDeafenconfig);
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
onload = () => {
|
onload = () => {
|
||||||
const webview = document.querySelector('webview')
|
const webview = document.querySelector('webview')
|
||||||
let muteTimeout = null
|
let muteTimeout = null
|
||||||
@ -22,7 +73,7 @@ onload = () => {
|
|||||||
let dlButton = document.getElementsByClassName("listItem-2P_4kh");
|
let dlButton = document.getElementsByClassName("listItem-2P_4kh");
|
||||||
t = setInterval(function(){
|
t = setInterval(function(){
|
||||||
if(dlButton.length != 0) {
|
if(dlButton.length != 0) {
|
||||||
console.log("discord-load-complete")
|
console.log("--discord-load-complete")
|
||||||
clearInterval(t)
|
clearInterval(t)
|
||||||
}else {
|
}else {
|
||||||
console.log("waiting for load")
|
console.log("waiting for load")
|
||||||
@ -33,50 +84,37 @@ onload = () => {
|
|||||||
|
|
||||||
// Send commands to preload.js
|
// Send commands to preload.js
|
||||||
webview.addEventListener('console-message', (e) => {
|
webview.addEventListener('console-message', (e) => {
|
||||||
if (e.message === "Constructed RTCPeerConnection") {
|
if (e.message === "--user has connected to discord voice server") {
|
||||||
console.log("Connected to server")
|
console.log("Connected to server")
|
||||||
removeBloat(webview)
|
removeBloat(webview)
|
||||||
window.postMessage({ type: "connected"}, "*")
|
window.postMessage({ type: "connected"}, "*")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.message === "Close RTCPeerConnection") {
|
if (e.message === "--user has disconnected to discord voice server") {
|
||||||
console.log("Disconnected from server")
|
console.log("Disconnected from server")
|
||||||
window.postMessage({ type: "disconnected"}, "*")
|
window.postMessage({ type: "disconnected"}, "*")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (e.message === '--user list changed') {
|
||||||
|
removeBloat(webview)
|
||||||
|
}
|
||||||
|
|
||||||
if (e.message === "muted") {
|
if (e.message === "muted") {
|
||||||
console.log("Self Muted in Discord")
|
console.log("Self Muted in Discord")
|
||||||
removeBloat(webview)
|
|
||||||
window.postMessage({ type: "self-muted"}, "*")
|
window.postMessage({ type: "self-muted"}, "*")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.message === "unmuted") {
|
if (e.message === "unmuted") {
|
||||||
console.log("Self Un-Muted in Discord")
|
console.log("Self Un-Muted in Discord")
|
||||||
removeBloat(webview)
|
|
||||||
window.postMessage({ type: "self-unmuted"}, "*")
|
window.postMessage({ type: "self-unmuted"}, "*")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.message === "signalingState => stable, negotiation needed: false") {
|
|
||||||
console.log("Mute/Unmute")
|
|
||||||
removeBloat(webview)
|
|
||||||
webview.executeJavaScript(`
|
|
||||||
if (document.querySelectorAll('[aria-label="Mute"]').length === 0){
|
|
||||||
console.log("muted")
|
|
||||||
}else {
|
|
||||||
console.log("unmuted")
|
|
||||||
}
|
|
||||||
`)
|
|
||||||
}
|
|
||||||
|
|
||||||
// To be finished
|
|
||||||
if (e.message === "DOM changed") {
|
|
||||||
removeBloat(webview)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Execute JS into the webview after login
|
// Execute JS into the webview after login
|
||||||
if (e.message === "discord-load-complete") {
|
if (e.message === "--discord-load-complete") {
|
||||||
webview.executeJavaScript(`document.getElementsByClassName("listItem-2P_4kh")[document.getElementsByClassName("listItem-2P_4kh").length - 1].remove();`) // Remove download button
|
webview.executeJavaScript(`document.getElementsByClassName("listItem-2P_4kh")[document.getElementsByClassName("listItem-2P_4kh").length - 1].remove();`) // Remove download button
|
||||||
removeBloat(webview)
|
removeBloat(webview)
|
||||||
|
userListChangeListener(webview)
|
||||||
|
userMuteDeafenListener(webview)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -98,7 +136,7 @@ onload = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (event.data.type === 'micClose'){
|
if (event.data.type === 'micClose'){
|
||||||
muteTimeout = setTimeout(() => muteMic(webview), 1000); // 1 second threshold incase of accidental double-click or release so the user doesn't cut-out
|
muteTimeout = setTimeout(() => muteMic(webview), 1500); // incase accidental double-click or release so the user doesn't cut-out
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user