Getting ready for 3.0

This commit is contained in:
smartfrigde 2022-01-15 22:21:51 +01:00
parent 521278cf00
commit 1debbe60fe
14 changed files with 4036 additions and 154 deletions

View file

@ -7,6 +7,6 @@
font-size: 12px;
text-transform: none;
}
.notice-3bPHh-.colorDefault-22HBa0 {
display: none;
.notice-2HEN-u {
display: none;
}

View file

@ -22,24 +22,7 @@
</div>
</div>
<script>
function discord() {
switch (window.armcord.channel) {
case "stable":
window.location.href = "https://discord.com/app";
break;
case "canary":
window.location.href = "https://canary.discord.com/app";
break;
case "ptb":
window.location.href = "https://ptb.discord.com/app";
break;
case "foss":
window.location.href = "https://dev.fosscord.com/app";
break;
default:
window.location.href = "https://discord.com/app";
}
}
function fade(element) {
var op = 1; // initial opacity
var timer = setInterval(function () {
@ -58,6 +41,13 @@
"You appear to be offline. Please connect to the internet and restart ArmCord Setup.";
} else {
console.log("Starting ArmCord Setup...");
document.getElementById("express").addEventListener("click", function () {
window.armcord.saveSettings(true, "stable", true, "cumcord");
fade(document.getElementById("setup"));
setTimeout(function () {
window.armcord.restart()
}, 5000);
})
document.getElementById("full").addEventListener("click", function () {
document.getElementById("setup").innerHTML = `
<p class="text-center setup-ask">Choose your Discord channel/instance:</p>
@ -103,8 +93,7 @@
window.armcord.saveSettings(true, branch, true, mod);
fade(document.getElementById("setup"));
setTimeout(function () {
window.armcord.splashEnd();
discord();
window.armcord.restart();
}, 5000);
});
} else {
@ -112,8 +101,7 @@
window.armcord.saveSettings(true, branch, true, "none");
fade(document.getElementById("setup"));
setTimeout(function () {
window.armcord.splashEnd();
discord();
window.armcord.restart()
}, 5000);
}
});

View file

@ -1,31 +1,26 @@
// Modules to control application life and create native browser window
import { app, BrowserWindow, ipcMain, shell, desktopCapturer } from "electron";
import { app, BrowserWindow, ipcMain, shell, desktopCapturer, session } from "electron";
import * as path from "path";
import "v8-compile-cache";
import * as storage from "electron-json-storage";
import { saveSettings } from "./utils";
import { saveSettings, getVersion, setup } from "./utils";
import "./extensions/mods";
import "./extensions/plugin";
import "./tray";
import "./shortcuts";
var contentPath: string = "null";
var frame: boolean;
var channel: string;
var titlebar: boolean;
export var mainWindow: BrowserWindow;
var settings:any;
storage.keys(function (error, keys) {
if (error) throw error;
var settings: any;
for (var key of keys) {
console.log("There is a key called: " + key);
}
});
storage.has("settings", function (error, hasKey) {
if (error) throw error;
if (!hasKey) {
console.log("First run of the ArmCord. Starting setup.");
// setup(); will be done at setup
setup();
contentPath = __dirname + "/content/setup.html";
} else {
console.log("ArmCord has been run before. Skipping setup.");
@ -80,17 +75,22 @@ function createWindow() {
mainWindow.hide();
});
ipcMain.on("get-app-version", (event) => {
event.returnValue = process.env.npm_package_version;
event.returnValue = getVersion();
});
ipcMain.on("splashEnd", (event, arg) => {
mainWindow.setSize(800, 600);
});
ipcMain.on("restart", (event, arg) => {
app.relaunch();
app.exit();
});
ipcMain.on("saveSettings", (event, ...args) => {
//@ts-ignore
saveSettings(...args);
});
ipcMain.on("channel", (event) => {
event.returnValue = channel;
});
ipcMain.on("clientmod", (event, arg) => {
@ -122,7 +122,32 @@ function createWindow() {
app.whenReady().then(() => {
createWindow();
session
.fromPartition("some-partition")
.setPermissionRequestHandler((webContents, permission, callback) => {
const url = webContents.getURL(); //unused?
if (permission === "notifications") {
// Approves the permissions request
callback(true);
}
if (permission === "media") {
// Approves the permissions request
callback(true);
}
if (url.startsWith("discord://")) {
// Denies the permissions request
return callback(false);
}
if (url.startsWith("discord.com/science")) {
// Denies the permissions request
return callback(false);
}
if (url.startsWith("discord.com/tracing")) {
// Denies the permissions request
return callback(false);
}
});
app.on("activate", function () {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
});

View file

@ -10,12 +10,12 @@ contextBridge.exposeInMainWorld("armcord", {
maximize: () => ipcRenderer.send("win-maximize"),
},
electron: process.versions.electron,
channel: ipcRenderer.sendSync('channel'),
channel: ipcRenderer.sendSync("channel"),
version: ipcRenderer.sendSync("get-app-version", "app-version"),
getDisplayMediaSelector: getDisplayMediaSelector,
restart: () => ipcRenderer.send("restart"),
saveSettings: (...args: any) => ipcRenderer.send("saveSettings", ...args),
splashEnd: () => ipcRenderer.send("splashEnd"),
loadDiscord: () => ipcRenderer.send("loadDiscord"),
});
contextBridge.exposeInMainWorld("electron", {
//deprecated, used for legacy purposes, will be removed in future versions

35
src/shortcuts.ts Normal file
View file

@ -0,0 +1,35 @@
import { Menu, MenuItem } from "electron";
import { mainWindow } from "./main";
const menu = new Menu();
menu.append(
new MenuItem({
label: "ArmCord" + process.env.npm_package_version,
submenu: [
{
role: "toggleDevTools",
accelerator:
process.platform === "darwin" ? "Ctrl+Cmd+I" : "Ctrl+Shift+I",
click: () => {
mainWindow.webContents.toggleDevTools();
},
},
{
role: "toggleDevTools",
accelerator: "F12",
click: () => {
mainWindow.webContents.toggleDevTools();
},
},
{
role: "reload",
accelerator:
"Ctrl+F5",
click: () => {
mainWindow.webContents.reload();
},
},
],
})
);
Menu.setApplicationMenu(menu);

View file

@ -1,4 +1,4 @@
import { app, Menu, Tray, ipcRenderer } from 'electron';
import { app, Menu, Tray } from 'electron';
import {mainWindow} from './main';
let tray = null
app.whenReady().then(() => {
@ -24,6 +24,7 @@ app.whenReady().then(() => {
},
},
]);
tray.setToolTip('ArmCord' + process.env.npm_package_version)
tray.setContextMenu(contextMenu)
})

View file

@ -1,29 +1,58 @@
import * as storage from 'electron-json-storage';
import * as fs from "fs";
import * as storage from "electron-json-storage";
//utillity functions that are used all over the codebase or just too obscure to be put in the file used in
export function addStyle(styleString: string) {
const style = document.createElement('style');
style.textContent = styleString;
document.head.append(style);
};
const style = document.createElement("style");
style.textContent = styleString;
document.head.append(style);
}
export function addScript(scriptString: string) {
var script = document.createElement("script");
script.textContent = scriptString;
document.body.append(script);
};
export function setup(){
console.log("Setting up ArmCord settings.");
storage.set('settings', { customTitlebar: true, channel: 'stable', firstRun: 'done', armcordCSP: true }, function(error) {
if (error) throw error;
});
}
export async function sleep(ms:number) {
return new Promise(resolve => setTimeout(resolve, ms));
}
export function saveSettings(customTitlebarSetting: boolean, channelSetting: string, armcordCSPSetting: boolean, modsSetting: string) {
export function setup() {
console.log("Setting up ArmCord settings.");
storage.set('settings', { customTitlebar: customTitlebarSetting, channel: channelSetting, firstRun: 'done', armcordCSP: armcordCSPSetting, mods: modsSetting }, function(error) {
storage.set(
"settings",
{
customTitlebar: true,
channel: "stable",
firstRun: "done",
armcordCSP: true,
},
function (error) {
if (error) throw error;
});
}
);
}
export async function sleep(ms: number) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
export function saveSettings(
customTitlebarSetting: boolean,
channelSetting: string,
armcordCSPSetting: boolean,
modsSetting: string
) {
console.log("Setting up ArmCord settings.");
storage.set(
"settings",
{
customTitlebar: customTitlebarSetting,
channel: channelSetting,
firstRun: "done",
armcordCSP: armcordCSPSetting,
mods: modsSetting,
},
function (error) {
if (error) throw error;
}
);
}
export function getVersion() {
const pkgjson = fs.readFileSync("./package.json", "utf8");
return JSON.parse(pkgjson).version;
}