Add async version of atom.confirm

This commit is contained in:
Wliu
2017-11-17 23:32:07 +01:00
parent 6576d26b61
commit c61eb62b06

View File

@@ -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) ->