TeaSpeak-Client/modules/core/MultiInstanceHandler.ts
2020-10-01 10:56:22 +02:00

32 lines
1.1 KiB
TypeScript

import { app } from "electron";
import { mainWindow } from "./main-window";
export function handleSecondInstanceCall(argv: string[], _workingDirectory: string) {
const original_args = argv.slice(1).filter(e => !e.startsWith("--original-process-start-time=") && e != "--allow-file-access-from-files");
console.log("Second instance: %o", original_args);
if(!mainWindow) {
console.warn("Ignoring second instance call because we haven't yet started");
return;
}
mainWindow.focus();
execute_connect_urls(original_args);
}
export function execute_connect_urls(argv: string[]) {
const connect_urls = argv.filter(e => e.startsWith("teaclient://"));
for(const url of connect_urls) {
console.log("Received connect url: %s", url);
mainWindow.webContents.send('connect', url);
}
}
export function initializeSingleInstance() : boolean {
if(!app.requestSingleInstanceLock()) {
return false;
}
app.on('second-instance', (event, argv, workingDirectory) => handleSecondInstanceCall(argv, workingDirectory));
return true;
}