124 lines
4.2 KiB
JavaScript
124 lines
4.2 KiB
JavaScript
const ModuleLoader = require("./loaders/modules")
|
|
const { EventEmitter } = require("events")
|
|
const Logger = require("./Logger")
|
|
const fs = require("fs")
|
|
const path = require("path")
|
|
|
|
const events = exports.events = new EventEmitter()
|
|
const logger = exports.logger = new Logger("LightCord")
|
|
|
|
let hasInit = false
|
|
let tries = 0
|
|
|
|
exports.init = function(){
|
|
if(hasInit == true){
|
|
console.warn(new Error("LightCord has already inited."))
|
|
return
|
|
}
|
|
hasInit = true
|
|
let readyInterval = setInterval(()=>{
|
|
events.emit("debug", `[INIT] try ${tries++} loading LightCord`)
|
|
try{
|
|
if(!global.webpackJsonp)return
|
|
if(!ModuleLoader.get(4))return
|
|
clearInterval(readyInterval)
|
|
privateInit()
|
|
.then(() => {
|
|
console.log("Finished loading Lightcord.")
|
|
})
|
|
}catch(e){
|
|
console.error(e)
|
|
}
|
|
}, 100)
|
|
}
|
|
|
|
let hasPrivateInit = false
|
|
|
|
async function privateInit(){
|
|
if(!hasInit)return
|
|
if(hasPrivateInit)return
|
|
hasPrivateInit = true
|
|
|
|
//disabling sentry
|
|
BDModules.get(e => e.getCurrentHub)[0].getCurrentHub().getClient().getOptions().enabled = false
|
|
|
|
window.lightcordSettings = {
|
|
devMode: false,
|
|
callRingingBeat: true
|
|
}
|
|
|
|
let original = BDModules.get((e) => e.createSound)[0].createSound
|
|
BDModules.get((e) => e.createSound)[0].createSound = function(sound){
|
|
let isCalling = sound === "call_ringing_beat" || sound === "call_ringing"
|
|
if(isCalling){
|
|
let returned = original(...arguments)
|
|
Object.defineProperty(returned, "name", {
|
|
get(){
|
|
return window.lightcordSettings.callRingingBeat ? "call_ringing_beat" : "call_ringing"
|
|
},
|
|
set(data){
|
|
console.log("Attempting to set call_ringing value. Canceling "+data)
|
|
}
|
|
})
|
|
console.log(returned)
|
|
return returned
|
|
}else{
|
|
return original(...arguments)
|
|
}
|
|
}
|
|
|
|
let constants = ModuleLoader.get(m=>m.API_HOST)[0]
|
|
let dispatcher = ModuleLoader.get(m=>m.Dispatcher&&m.default&&m.default.dispatch)[0]
|
|
require("../../../../../BetterDiscordApp/css/main.css")
|
|
require("./lightcord.css")
|
|
|
|
|
|
window.$ = window.jQuery = require("./jquery.min.js")
|
|
require("./ace.js")
|
|
|
|
if(!fs.existsSync(BetterDiscordConfig.dataPath))fs.mkdirSync(BetterDiscordConfig.dataPath, {recursive: true})
|
|
let pluginPath = path.join(BetterDiscordConfig.dataPath, "plugins")
|
|
let themePath = path.join(BetterDiscordConfig.dataPath, "themes")
|
|
console.log(`Plugins: ${pluginPath}\nThemes: ${themePath}`)
|
|
if(!fs.existsSync(pluginPath))fs.mkdirSync(pluginPath, {recursive: true})
|
|
if(!fs.existsSync(themePath))fs.mkdirSync(themePath, {recursive: true})
|
|
|
|
// setting Discord Internal Developer Mode for developement and test purposes.
|
|
Object.defineProperty(ModuleLoader.get(e => e.default && typeof e.default === "object" && ("isDeveloper" in e.default))[0].default, "isDeveloper", {
|
|
get(){return !!window.lightcordSettings.devMode},
|
|
set(data){return !!window.lightcordSettings.devMode}
|
|
})
|
|
|
|
const BetterDiscord = window.BetterDiscord = new(require("../../../../../BetterDiscordApp/js/main").default)(BetterDiscordConfig)
|
|
BetterDiscord.init()
|
|
|
|
events.emit("ready")
|
|
}
|
|
|
|
require.extensions[".css"] = (m, filename) => {
|
|
let content = fs.readFileSync(filename, "binary")
|
|
let style = document.createElement("style")
|
|
style.id = btoa(filename)
|
|
style.innerText = content
|
|
document.head.appendChild(style)
|
|
m.exports = {
|
|
id: style.id,
|
|
remove(){
|
|
return style.remove()
|
|
}
|
|
}
|
|
return m.exports
|
|
}
|
|
|
|
const BetterDiscordConfig = window.BetterDiscordConfig = {
|
|
"local": true,
|
|
"localServer": "//localhost:8080",
|
|
"repo": "rauenzi",
|
|
"branch": "master",
|
|
"injectorBranch": "injector",
|
|
"minified": true,
|
|
"version": "0.3.2",
|
|
dataPath: (process.platform == "win32" ? process.env.APPDATA : process.platform == "darwin" ? process.env.HOME + "/Library/Preferences" : process.env.XDG_CONFIG_HOME ? process.env.XDG_CONFIG_HOME : process.env.HOME + "/.config") + "/LightCord_BD/",
|
|
os: process.platform
|
|
}
|