aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author0neGal <mail@0negal.com>2023-04-29 00:30:29 +0200
committer0neGal <mail@0negal.com>2023-04-29 00:30:29 +0200
commit2a77d65c2276b9038bad4251692dc4a9c80029ce (patch)
tree3127ae172c8b91f466a55292d98f6f41c9122dc9
parent35b0836701fb337b5e9ae9effb9ed9d788c8403c (diff)
downloadViper-2a77d65c2276b9038bad4251692dc4a9c80029ce.tar.gz
Viper-2a77d65c2276b9038bad4251692dc4a9c80029ce.zip
win.alert() now uses Promise, and added .confirm()
win.alert() now has a Promise return value, which'll allow you to wait until an alert has been closed before continuing code execution. win.confirm() was also added it's the same as win.alert() except it runs confirm() in the renderer instead of alert(), and has a return boolean in the Promise resolve callback. This boolean being whether the user confirmed the action or not.
-rw-r--r--src/app/main.js10
-rw-r--r--src/index.js14
-rw-r--r--src/modules/window.js31
3 files changed, 52 insertions, 3 deletions
diff --git a/src/app/main.js b/src/app/main.js
index 73537a2..72e0e09 100644
--- a/src/app/main.js
+++ b/src/app/main.js
@@ -232,7 +232,15 @@ ipcRenderer.on("newpath", (event, newpath) => {
// Continuation of log()
ipcRenderer.on("log", (event, msg) => {log(msg)})
-ipcRenderer.on("alert", (event, msg) => {alert(msg)})
+ipcRenderer.on("alert", (event, data) => {
+ alert(data.message);
+ ipcRenderer.send("alert-closed-" + data.id);
+})
+
+ipcRenderer.on("confirm", (event, data) => {
+ let confirmed = confirm(data.message);
+ ipcRenderer.send("confirm-closed-" + data.id, confirmed);
+})
// Updates the installed mods
ipcRenderer.on("mods", (event, mods_obj) => {
diff --git a/src/index.js b/src/index.js
index fbe9bfb..c6179e0 100644
--- a/src/index.js
+++ b/src/index.js
@@ -82,7 +82,19 @@ function start() {
// passthrough to renderer from main
ipcMain.on("win-log", (event, ...args) => {send("log", ...args)});
- ipcMain.on("win-alert", (event, ...args) => {send("alert", ...args)});
+ ipcMain.on("win-alert", (event, msg, id) => {
+ send("alert", {
+ id: id,
+ message: msg,
+ })
+ });
+
+ ipcMain.on("win-confirm", (event, msg, id) => {
+ send("confirm", {
+ id: id,
+ message: msg,
+ })
+ });
// mod states
ipcMain.on("duped-mod", (event, modname) => {send("duped-mod", modname)});
diff --git a/src/modules/window.js b/src/modules/window.js
index 3b5c76f..6cc573c 100644
--- a/src/modules/window.js
+++ b/src/modules/window.js
@@ -7,9 +7,38 @@ win.log = (msg) => {
ipcMain.emit("win-log", msg, msg);
}
+// this increments for every alert that's created, the ID is used to
+// keep track of popups being opened or closed.
+let alert_id = 0;
+
// sends an alert to the renderer
win.alert = (msg) => {
- ipcMain.emit("win-alert", msg, msg);
+ alert_id++;
+
+ return new Promise((resolve) => {
+ ipcMain.once(`alert-closed-${alert_id}`, () => {
+ resolve();
+ })
+
+ ipcMain.emit("win-alert", msg, msg, alert_id);
+ })
+}
+
+// this increments for every confirm alert that's created, the ID is
+// used to keep track of popups being opened or closed.
+let confirm_id = 0;
+
+// sends an alert to the renderer
+win.confirm = (msg) => {
+ confirm_id++;
+
+ return new Promise((resolve) => {
+ ipcMain.once(`confirm-closed-${confirm_id}`, (event, confirmed) => {
+ resolve(confirmed);
+ })
+
+ ipcMain.emit("win-confirm", msg, msg, confirm_id);
+ })
}
module.exports = win;