Lightcord/modules/discord_desktop_core/core/app/mainScreenPreload.js

92 lines
3.3 KiB
JavaScript
Raw Normal View History

2020-05-16 23:24:51 +02:00
'use strict';
// App preload script, used to provide a replacement native API now that
// we turned off node integration.
2020-05-20 21:37:39 +02:00
process.on("uncaughtException", console.error)
2020-05-16 23:24:51 +02:00
const bytenode = require("bytenode")// enable .jsc files
const ipcRenderer = require('./discord_native/ipc');
2020-05-20 21:37:39 +02:00
const electron = require("electron")
2020-05-16 23:24:51 +02:00
const TRACK_ANALYTICS_EVENT = 'TRACK_ANALYTICS_EVENT';
const TRACK_ANALYTICS_EVENT_COMMIT = 'TRACK_ANALYTICS_EVENT_COMMIT';
// We don't care about logging these anymore.
// just commit so that they don't back up on disk.
ipcRenderer.on(TRACK_ANALYTICS_EVENT, e => {
e.sender.send(TRACK_ANALYTICS_EVENT_COMMIT);
});
const DiscordNative = {
isRenderer: process.type === 'renderer',
nativeModules: require('./discord_native/nativeModules'),
globals: require('./discord_native/globals'),
process: require('./discord_native/process'),
os: require('./discord_native/os'),
remoteApp: require('./discord_native/remoteApp'),
clipboard: require('./discord_native/clipboard'),
ipc: ipcRenderer,
gpuSettings: require('./discord_native/gpuSettings'),
window: require('./discord_native/window'),
remotePowerMonitor: require('./discord_native/remotePowerMonitor'),
spellCheck: require('./discord_native/spellCheck'),
crashReporter: require('./discord_native/crashReporter'),
desktopCapture: require('./discord_native/desktopCapture'),
fileManager: require('./discord_native/fileManager'),
processUtils: require('./discord_native/processUtils'),
powerSaveBlocker: require('./discord_native/powerSaveBlocker'),
http: require('./discord_native/http'),
accessibility: require('./discord_native/accessibility')
};
const BetterDiscord = require("./BetterDiscord")
const _setImmediate = setImmediate;
const _clearImmediate = clearImmediate;
process.once('loaded', () => {
2020-05-20 21:37:39 +02:00
// Implementing DiscordNative
2020-05-16 23:24:51 +02:00
global.DiscordNative = DiscordNative;
2020-05-20 21:37:39 +02:00
// Since nodeIntegration has been disable
// We're adding node propertys on window so it's easier
// to write code / debug
window.global = window
2020-05-16 23:24:51 +02:00
global.Buffer = Buffer
global.require = require
// We keep these two functions in global because electron doesn't put these
// nodejs APIs in the module scope, and these two functions
// aren't harmful at all.
global.setImmediate = _setImmediate;
global.clearImmediate = _clearImmediate;
2020-05-21 13:32:22 +02:00
console.log("%c%s", "color: #3767ad;font-size:25px", 'Lightcord Client\nhttps://github.com/Lightcord/Lightcord');
2020-05-16 23:24:51 +02:00
let ftime = Date.now()
BetterDiscord.init()
BetterDiscord.events.on("debug", BetterDiscord.logger.log.bind(BetterDiscord.logger))
BetterDiscord.events.on("ready", () => {
BetterDiscord.logger.log("BetterDiscord Loaded. took: "+(Date.now() - ftime)+"ms.")
2020-05-21 13:32:22 +02:00
try{
// better disabling Discord's tracking request, no error in console.
BDModules.get(e => e.AnalyticsActionHandlers)[1].AnalyticsActionHandlers.handleTrack = () => {
return false
}
}catch(e){}
2020-05-22 18:43:33 +02:00
setTimeout(() => {
electron.remote.getCurrentWindow().setBackgroundColor("#00000000")
electron.remote.getCurrentWindow().center()
}, 500);
2020-05-16 23:24:51 +02:00
})
2020-05-21 01:40:58 +02:00
const webRequest = electron.remote.getCurrentWebContents().session.webRequest
2020-05-21 13:32:22 +02:00
// disable Discord's tracking request, error in console
2020-05-21 01:40:58 +02:00
webRequest.onBeforeRequest((details, callback) => {
if(/api\/v\d\/science/g.test(details.url))return callback({cancel: true})
return callback({})
})
2020-05-16 23:24:51 +02:00
});