Lightcord/modules/discord_desktop_core/core/app/tabs/index.js

90 lines
3.1 KiB
JavaScript
Raw Normal View History

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'
})
}