add unresponsive listener

This commit is contained in:
Araxeus
2021-04-10 02:51:38 +03:00
parent 3d41d04818
commit 09d9f72db2
4 changed files with 39 additions and 19 deletions

View File

@ -2,6 +2,7 @@
const path = require("path");
const electron = require("electron");
const { dialog } = require("electron");
const is = require("electron-is");
const unhandled = require("electron-unhandled");
const { autoUpdater } = require("electron-updater");
@ -145,6 +146,10 @@ function createMainWindow() {
}
});
win.webContents.on("render-process-gone", (event, webContents, details) => {
showUnresponsiveDialog(win, details);
});
win.once("ready-to-show", () => {
if (config.get("options.appVisible")) {
win.show();
@ -154,13 +159,7 @@ function createMainWindow() {
return win;
}
let createdWindow = false;
app.on("browser-window-created", (event, win) => {
//Ensures listeners are registered only once
if (createdWindow) {
return;
}
createdWindow = true;
app.once("browser-window-created", (event, win) => {
loadPlugins(win);
win.webContents.on("did-fail-load", (
@ -325,3 +324,32 @@ app.on("ready", () => {
});
}
});
function showUnresponsiveDialog(win, details) {
if (!!details) {
console.log("Unresponsive Error!\n"+JSON.stringify(details, null, "\t"))
}
dialog.showMessageBox(win, {
type: "error",
title: "Window Unresponsive",
message: "The Application is Unresponsive",
details: "We are sorry for the inconveniance! please choose what to do with the application:",
buttons: ["Wait", "Relaunch", "Quit"],
cancelId: 0
}).then( response => {
switch (response) {
case 1: //if relaunch - relaunch+exit
app.relaunch();
case 2:
app.exit();
break;
case 0:
default:
return;
//maybe set a timer and afterwards check responsivness and call function again if failed
}
});
}
module.exports.aDialog = showUnresponsiveDialog;

View File

@ -7,8 +7,6 @@ const config = require("../../config");
const { setApplicationMenu } = require("../../menu");
const { injectCSS } = require("../utils");
//check that menu doesn't get created twice
let calledReadyToShow = false;
//tracks menu visibility
let visible = true;
// win hook for fixing menu
@ -30,13 +28,7 @@ module.exports = (winImport) => {
// css for custom scrollbar + disable drag area(was causing bugs)
injectCSS(win.webContents, path.join(__dirname, "style.css"));
win.on("ready-to-show", () => {
// (apparently ready-to-show is called twice)
if (calledReadyToShow) {
return;
}
calledReadyToShow = true;
win.once("ready-to-show", () => {
setApplicationMenu(win);

View File

@ -34,7 +34,7 @@ document.addEventListener("DOMContentLoaded", () => {
fileExists(songInfoProviderPath, require(songInfoProviderPath));
// inject front logger
const loggerPath = path.join(__dirname, "providers", "logger.js")
const loggerPath = path.join(__dirname, "providers", "frontLogger.js")
fileExists(loggerPath, require(loggerPath));
// Add action for reloading

View File

@ -3,7 +3,7 @@ const { ipcRenderer } = require("electron");
function logToString(log) {
let string = (typeof log === "string") ? log : log.toString();
if (!string || string.includes("[object Object]")) {
string = JSON.stringify(log);
string = JSON.stringify(log, null, "\t");
}
return string;
}