Make showSaveDialog optionally async

This commit is contained in:
Wliu
2017-11-20 19:29:39 +01:00
parent 6576d26b61
commit 9f9ec92e9b
3 changed files with 19 additions and 16 deletions

View File

@@ -153,10 +153,15 @@ class ApplicationDelegate
showMessageDialog: (params) ->
showSaveDialog: (params) ->
if typeof params is 'string'
params = {defaultPath: params}
@getCurrentWindow().showSaveDialog(params)
showSaveDialog: (options, callback) ->
if callback?
# Async
@getCurrentWindow().showSaveDialog(options, callback)
else
# Sync
if typeof options is 'string'
options = {defaultPath: options}
@getCurrentWindow().showSaveDialog(options)
playBeepSound: ->
shell.beep()

View File

@@ -1076,14 +1076,6 @@ class AtomEnvironment {
return this.deserialize(state)
}
showSaveDialog (callback) {
callback(this.showSaveDialogSync())
}
showSaveDialogSync (options = {}) {
this.applicationDelegate.showSaveDialog(options)
}
async saveState (options, storageKey) {
if (this.enablePersistence && this.project) {
const state = this.serialize(options)

View File

@@ -294,12 +294,18 @@ class AtomWindow
@browserWindow.reload() if result
@loadedPromise
showSaveDialog: (params) ->
params = Object.assign({
showSaveDialog: (options, callback) ->
options = Object.assign({
title: 'Save File',
defaultPath: @representedDirectoryPaths[0]
}, params)
dialog.showSaveDialog(@browserWindow, params)
}, options)
if callback?
# Async
dialog.showSaveDialog(@browserWindow, options, callback)
else
# Sync
dialog.showSaveDialog(@browserWindow, options)
toggleDevTools: -> @browserWindow.toggleDevTools()