fix settings webview injection

This commit is contained in:
smartfrigde 2024-01-19 13:33:28 +01:00
parent 6beee8d825
commit dfe104da42
2 changed files with 17 additions and 22 deletions

View file

@ -73,11 +73,24 @@ sleep(5000).then(async () => {
// Settings info version injection
setInterval(() => {
addScript(`
if (document.getElementById("ACsettingsModal") == null) {
var html = '<span class="close" id="closeSettings">&times;</span><div class="ACsettings-modal-content" id="webviewSettingsContainer"></div>';
const elem = document.createElement("div");
elem.id = "ACsettingsModal";
elem.classList.add("ACsettings-modal");
elem.innerHTML = html;
document.getElementById("app-mount").prepend(elem);
document.getElementById("closeSettings").addEventListener("click", () => {
document.getElementById("webviewSettingsContainer").innerHTML = "";
document.getElementById("ACsettingsModal").style.display = "none";
});
}
`);
const host = document.querySelector('[class*="sidebar"] [class*="info"]');
if (!host || host.querySelector("#ac-ver")) {
return;
}
const el = host.firstElementChild!.cloneNode() as HTMLSpanElement;
el.id = "ac-ver";
el.textContent = `ArmCord Version: ${version}`;

View file

@ -1,13 +1,7 @@
import * as path from "path";
import * as fs from "fs";
import {addStyle} from "../utils";
import {addScript, addStyle} from "../utils";
import {WebviewTag} from "electron";
var html = `
<div id="ACsettingsModal" class="ACsettings-modal">
<span class="close" id="closeSettings">&times;</span>
<div class="ACsettings-modal-content" id="webviewSettingsContainer">
</div>
</div>`;
var webview = `<webview src="${path.join("file://", __dirname, "../", "/settings/settings.html")}" preload="${path.join(
"file://",
@ -15,27 +9,15 @@ var webview = `<webview src="${path.join("file://", __dirname, "../", "/settings
"../",
"/settings/preload.js"
)}" id="inAppSettings"></webview>`;
export function injectSettings() {
document.getElementById("webviewSettingsContainer")!.innerHTML = webview;
document.getElementById("ACsettingsModal")!.style.display = "block";
}
function removeSettings() {
document.getElementById("webviewSettingsContainer")!.innerHTML = "";
document.getElementById("ACsettingsModal")!.style.display = "none";
}
document.addEventListener("DOMContentLoaded", function (_event) {
const elem = document.createElement("div");
elem.innerHTML = html;
if (document.getElementById("app-mount") == null) {
document.body.appendChild(elem);
} else {
document.getElementById("app-mount")!.prepend(elem);
}
const settingsCssPath = path.join(__dirname, "../", "/content/css/inAppSettings.css");
addStyle(fs.readFileSync(settingsCssPath, "utf8"));
document.getElementById("closeSettings")!.addEventListener("click", () => {
removeSettings();
});
const webview = document.querySelector("webview") as WebviewTag;
webview.addEventListener("console-message", (e) => {
console.log("Settings page logged a message:", e.message);