Support launching the app directly with a URL

In this case there will be no paths to open and so editor windows
should be created.

This will allow sessions to be joined when Atom isn't currently running
but a session link is clicked from within another application.
This commit is contained in:
Kevin Sawicki
2013-07-15 15:42:51 -07:00
parent 522768e6c0
commit 438b8f6a14
2 changed files with 25 additions and 10 deletions

View File

@@ -39,7 +39,7 @@ class AtomApplication
installUpdate: null
version: null
constructor: ({@resourcePath, pathsToOpen, @version, test, pidToKillWhenClosed, @dev, newWindow}) ->
constructor: ({@resourcePath, pathsToOpen, urlsToOpen, @version, test, pidToKillWhenClosed, @dev, newWindow}) ->
global.atomApplication = this
@pidsToOpenWindows = {}
@@ -57,6 +57,8 @@ class AtomApplication
@runSpecs({exitWhenDone: true, @resourcePath})
else if pathsToOpen.length > 0
@openPaths({pathsToOpen, pidToKillWhenClosed, newWindow})
else if urlsToOpen.length > 0
@openUrl(urlToOpen) for urlToOpen in urlsToOpen
else
# Always open a editor window if this is the first instance of Atom.
@openPath({pidToKillWhenClosed, newWindow})
@@ -174,13 +176,7 @@ class AtomApplication
app.on 'open-url', (event, urlToOpen) =>
event.preventDefault()
parsedUrl = url.parse(urlToOpen)
if parsedUrl.host is 'session'
sessionId = parsedUrl.path.split('/')[1]
if sessionId
bootstrapScript = 'collaboration/lib/bootstrap'
new AtomWindow({bootstrapScript, @resourcePath, sessionId})
@openUrl(urlToOpen)
autoUpdater.on 'ready-for-update-on-quit', (event, version, quitAndUpdate) =>
event.preventDefault()
@@ -251,6 +247,14 @@ class AtomApplication
console.log("Killing process #{pid} failed: #{error.code}")
delete @pidsToOpenWindows[pid]
openUrl: (urlToOpen) ->
parsedUrl = url.parse(urlToOpen)
if parsedUrl.host is 'session'
sessionId = parsedUrl.path.split('/')[1]
if sessionId
bootstrapScript = 'collaboration/lib/bootstrap'
new AtomWindow({bootstrapScript, @resourcePath, sessionId})
openConfig: ->
if @configWindow
@configWindow.focus()

View File

@@ -18,11 +18,21 @@ require 'coffee-script'
delegate.browserMainParts.preMainMessageLoopRun = ->
args = parseCommandLine()
addPathToOpen = (event, filePath) ->
addPathToOpen = (event, pathToOpen) ->
event.preventDefault()
args.pathsToOpen.push(filePath)
args.pathsToOpen.push(pathToOpen)
args.urlsToOpen = []
addUrlToOpen = (event, urlToOpen) ->
event.preventDefault()
args.urlsToOpen.push(urlToOpen)
app.on 'open-url', (event, urlToOpen) ->
event.preventDefault()
args.urlsToOpen.push(urlToOpen)
app.on 'open-file', addPathToOpen
app.on 'open-url', addUrlToOpen
app.on 'will-finish-launching', ->
setupCrashReporter()
@@ -30,6 +40,7 @@ delegate.browserMainParts.preMainMessageLoopRun = ->
app.on 'finish-launching', ->
app.removeListener 'open-file', addPathToOpen
app.removeListener 'open-url', addUrlToOpen
args.pathsToOpen = args.pathsToOpen.map (pathToOpen) ->
path.resolve(args.executedFrom ? process.cwd(), pathToOpen)