diff options
author | 0neGal <mail@0negal.com> | 2023-04-29 00:30:29 +0200 |
---|---|---|
committer | 0neGal <mail@0negal.com> | 2023-04-29 00:30:29 +0200 |
commit | 2a77d65c2276b9038bad4251692dc4a9c80029ce (patch) | |
tree | 3127ae172c8b91f466a55292d98f6f41c9122dc9 /src | |
parent | 35b0836701fb337b5e9ae9effb9ed9d788c8403c (diff) | |
download | Viper-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.
Diffstat (limited to 'src')
-rw-r--r-- | src/app/main.js | 10 | ||||
-rw-r--r-- | src/index.js | 14 | ||||
-rw-r--r-- | src/modules/window.js | 31 |
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; |