2020-07-06 15:14:08 +02:00
|
|
|
const fs = require("fs")
|
|
|
|
const { join } = require("path")
|
|
|
|
const { pathToFileURL } = require("url")
|
|
|
|
const { remote } = require("electron")
|
|
|
|
|
2020-07-06 15:34:03 +02:00
|
|
|
let webviews = new Map()
|
|
|
|
window.webviews = webviews
|
|
|
|
|
2020-07-06 15:14:08 +02:00
|
|
|
window.onload = () => {
|
|
|
|
const ChromeTabs = require("chrome-tabs")
|
|
|
|
require("chrome-tabs/css/chrome-tabs.css")
|
|
|
|
require("chrome-tabs/css/chrome-tabs-dark-theme.css")
|
|
|
|
require("./controls.css")
|
|
|
|
|
|
|
|
let tabs = document.querySelector(".chrome-tabs")
|
|
|
|
let chromeTabs = new ChromeTabs()
|
|
|
|
chromeTabs.init(tabs)
|
|
|
|
|
|
|
|
tabs.addEventListener('activeTabChange', ({detail}) => {
|
|
|
|
let webview = webviews.get(detail.tabEl)
|
|
|
|
if(!webview){
|
|
|
|
chromeTabs.removeTab(detail.tabEl)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
let active = Array.from(webviews.values()).find(e => e.classList.contains("active-webview"))
|
|
|
|
if(active)active.classList.remove("active-webview")
|
|
|
|
webview.classList.add("active-webview")
|
|
|
|
})
|
|
|
|
tabs.addEventListener('tabAdd', ({detail}) => {
|
|
|
|
console.log('Tab added', detail.tabEl)
|
|
|
|
detail.tabEl.querySelector(".chrome-tab-title").innerText = "Lightcord Loading..."
|
|
|
|
let webview = document.createElement("webview")
|
|
|
|
webview.src = "https://discord.com/app"
|
|
|
|
webview.classList.add("discord-webview")
|
|
|
|
webview.classList.add("webview-active")
|
|
|
|
webview.setAttribute("preload", pathToFileURL(join(__dirname, "../mainScreenPreload.js")))
|
2020-07-06 15:34:03 +02:00
|
|
|
webview.shadowRoot.childNodes.item(1).style.height = "100%"
|
2020-07-06 15:14:08 +02:00
|
|
|
webviews.set(detail.tabEl, webview)
|
|
|
|
document.querySelector(".documentFull").appendChild(webview)
|
|
|
|
webview.addEventListener("dom-ready", () => {
|
|
|
|
remote.webContents.fromId(webview.getWebContentsId()).openDevTools()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
tabs.addEventListener('tabRemove', ({detail}) => {
|
|
|
|
console.log('Tab removed', detail.tabEl)
|
|
|
|
let webview = webviews.get(detail.tabEl)
|
|
|
|
if(!webview)return
|
|
|
|
webview.remove()
|
|
|
|
webviews.delete(detail.tabEl)
|
|
|
|
})
|
|
|
|
|
|
|
|
window.addEventListener('keydown', (event) => {
|
|
|
|
if(event.ctrlKey){
|
|
|
|
if(event.key === 't'){
|
|
|
|
chromeTabs.addTab({
|
|
|
|
title: 'Lightcord',
|
|
|
|
favicon: faviconURL
|
|
|
|
})
|
|
|
|
}else if(event.key === "w"){
|
|
|
|
let active = document.querySelector("div.chrome-tab[active]")
|
|
|
|
if(!active)return
|
|
|
|
chromeTabs.removeTab(active)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
require.extensions[".css"] = (m, filename) => {
|
|
|
|
let content = fs.readFileSync(filename, "binary")
|
|
|
|
let style = document.createElement("style")
|
|
|
|
style.id = btoa(filename)
|
|
|
|
style.innerHTML = content
|
|
|
|
document.head.appendChild(style)
|
|
|
|
m.exports = {
|
|
|
|
id: style.id,
|
|
|
|
remove(){
|
|
|
|
return style.remove()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return m.exports
|
|
|
|
}
|
|
|
|
|
2020-07-06 15:34:03 +02:00
|
|
|
const faviconURL = pathToFileURL(join(__dirname, "../images/discord.png"))
|
|
|
|
|
|
|
|
window.onbeforeunload = (ev) => {
|
|
|
|
if(!webviews)return
|
|
|
|
webviews.forEach(webview => {
|
|
|
|
webview.src = 'about:blank'
|
|
|
|
})
|
|
|
|
}
|