From c61eb62b06d9a9d1c21c1df11e16f27ff9eec868 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Fri, 17 Nov 2017 23:32:07 +0100 Subject: [PATCH] Add async version of atom.confirm --- src/application-delegate.coffee | 44 ++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/src/application-delegate.coffee b/src/application-delegate.coffee index 70b0f91bc..bfa94556c 100644 --- a/src/application-delegate.coffee +++ b/src/application-delegate.coffee @@ -130,26 +130,36 @@ class ApplicationDelegate getUserDefault: (key, type) -> remote.systemPreferences.getUserDefault(key, type) - confirm: ({message, detailedMessage, buttons}) -> - buttons ?= {} - if Array.isArray(buttons) - buttonLabels = buttons + confirm: ({message, detailedMessage, buttons}, callback) -> + if typeof callback is 'function' + # Async version: buttons is required to be an array + remote.dialog.showMessageBox(remote.getCurrentWindow(), { + type: 'info' + message: message + detail: detailedMessage + buttons: buttons + normalizeAccessKeys: true + }, callback) else - buttonLabels = Object.keys(buttons) + buttons ?= {} + if Array.isArray(buttons) + buttonLabels = buttons + else + buttonLabels = Object.keys(buttons) - chosen = remote.dialog.showMessageBox(remote.getCurrentWindow(), { - type: 'info' - message: message - detail: detailedMessage - buttons: buttonLabels - normalizeAccessKeys: true - }) + chosen = remote.dialog.showMessageBox(remote.getCurrentWindow(), { + type: 'info' + message: message + detail: detailedMessage + buttons: buttonLabels + normalizeAccessKeys: true + }) - if Array.isArray(buttons) - chosen - else - callback = buttons[buttonLabels[chosen]] - callback?() + if Array.isArray(buttons) + chosen + else + callback = buttons[buttonLabels[chosen]] + callback?() showMessageDialog: (params) ->