From b5b408d13483292a8a9d2af1e5cc7f43c47b035b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki & Nathan Sobo Date: Tue, 25 Jun 2013 15:21:49 -0700 Subject: [PATCH] Open new window when joining collaboration session --- src/app/pane.coffee | 2 +- .../collaboration/lib/bootstrap.coffee | 36 +++++++++++++++++++ .../collaboration/lib/collaboration.coffee | 9 +++-- 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 src/packages/collaboration/lib/bootstrap.coffee diff --git a/src/app/pane.coffee b/src/app/pane.coffee index 442fc0d42..957b13122 100644 --- a/src/app/pane.coffee +++ b/src/app/pane.coffee @@ -295,8 +295,8 @@ class Pane extends View @viewForItem(@activeItem) serialize: -> + @state.get('items').set(index, item.serialize()) for item, index in @items @state.set - items: @items.map (item) -> item.serialize() focused: @is(':has(:focus)') activeItemUri: @activeItem.getUri?() @state diff --git a/src/packages/collaboration/lib/bootstrap.coffee b/src/packages/collaboration/lib/bootstrap.coffee new file mode 100644 index 000000000..77882c38b --- /dev/null +++ b/src/packages/collaboration/lib/bootstrap.coffee @@ -0,0 +1,36 @@ +require 'atom' +require 'window' +_ = require 'underscore' + +window.setDimensions(x: 0, y: 0, width: 800, height: 800) +atom.show() + +Peer = require './peer' +Guid = require 'guid' +{createSite, Document} = require 'telepath' + +peerJsSettings = + host: 'ec2-54-218-51-127.us-west-2.compute.amazonaws.com' + port: 8080 + +wireDocumentEvents = (connection, sharedDocument) -> + sharedDocument.outputEvents.on 'changed', (event) -> + console.log 'sending event', event + connection.send(event) + + connection.on 'data', (event) -> + console.log 'receiving event', _.clone(event.targetPath) + sharedDocument.handleInputEvent(event) + +siteId = Guid.create().toString() +peer = new Peer(siteId, peerJsSettings) +{sessionId} = atom.getLoadSettings() +connection = peer.connect(sessionId, reliable: true) +connection.on 'open', -> + console.log 'connection opened' + connection.once 'data', (data) -> + console.log 'received data', data + atom.windowState = Document.deserialize(createSite(siteId), data) + wireDocumentEvents(connection, atom.windowState) + window.setUpEnvironment('editor') + window.startEditorWindow() diff --git a/src/packages/collaboration/lib/collaboration.coffee b/src/packages/collaboration/lib/collaboration.coffee index 10b487db3..c666e9d26 100644 --- a/src/packages/collaboration/lib/collaboration.coffee +++ b/src/packages/collaboration/lib/collaboration.coffee @@ -47,11 +47,16 @@ module.exports = sessionId = null rootView.command 'collaboration:copy-session-id', -> - pasteboart.write(sessionId) if sessionId + pasteboard.write(sessionId) if sessionId rootView.command 'collaboration:start-session', -> if sessionId = startSession() pasteboard.write(sessionId) rootView.command 'collaboration:join-session', -> - new Prompt(joinSession) + new Prompt (id) -> + windowSettings = + bootstrapScript: require.resolve('collaboration/lib/bootstrap') + resourcePath: window.resourcePath + sessionId: id + atom.openWindow(windowSettings)