From 89192c2ee299c33528ae71f4ff5a02c71ec32206 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki & Nathan Sobo Date: Tue, 25 Jun 2013 15:32:34 -0700 Subject: [PATCH] Extract helpers to session-utils --- .../collaboration/lib/bootstrap.coffee | 28 +++--------- .../collaboration/lib/collaboration.coffee | 44 +++---------------- .../collaboration/lib/session-utils.coffee | 16 +++++++ 3 files changed, 29 insertions(+), 59 deletions(-) create mode 100644 src/packages/collaboration/lib/session-utils.coffee diff --git a/src/packages/collaboration/lib/bootstrap.coffee b/src/packages/collaboration/lib/bootstrap.coffee index 77882c38b..61f4cc73b 100644 --- a/src/packages/collaboration/lib/bootstrap.coffee +++ b/src/packages/collaboration/lib/bootstrap.coffee @@ -1,36 +1,20 @@ require 'atom' require 'window' _ = require 'underscore' +{createPeer, connectDocument} = require './session-utils' +{createSite, Document} = require 'telepath' 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) +peer = createPeer() {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) + console.log 'received document' + atom.windowState = Document.deserialize(createSite(peer.id), data) + connectDocument(atom.windowState, connection) window.setUpEnvironment('editor') window.startEditorWindow() diff --git a/src/packages/collaboration/lib/collaboration.coffee b/src/packages/collaboration/lib/collaboration.coffee index c666e9d26..d70ed8dc5 100644 --- a/src/packages/collaboration/lib/collaboration.coffee +++ b/src/packages/collaboration/lib/collaboration.coffee @@ -1,46 +1,16 @@ -Peer = require './peer' -Guid = require 'guid' Prompt = require './prompt' {createSite, Document} = require 'telepath' -$ = require 'jquery' - -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', event - sharedDocument.handleInputEvent(event) +{createPeer, connectDocument} = require './session-utils' startSession = -> - id = Guid.create().toString() - peer = new Peer(id, peerJsSettings) + peer = createPeer() peer.on 'connection', (connection) -> connection.on 'open', -> - console.log 'sending document', atom.getWindowState().serialize() - connection.send(atom.getWindowState().serialize()) - wireDocumentEvents(connection, atom.getWindowState()) - id - -joinSession = (id) -> - siteId = Guid.create().toString() - peer = new Peer(siteId, peerJsSettings) - connection = peer.connect(id, reliable: true) - connection.on 'open', -> - console.log 'connection opened' - connection.once 'data', (data) -> - console.log 'received data', data - remoteWindowState = Document.deserialize(createSite(siteId), data) - window.remoteWindowState = remoteWindowState - wireDocumentEvents(connection, remoteWindowState) - rootView.remove() - window.rootView = deserialize(remoteWindowState.get('rootView')) - $('body').append(rootView) + console.log 'sending document' + windowState = atom.getWindowState() + connection.send(windowState.serialize()) + connectDocument(windowState, connection) + peer.id module.exports = activate: -> diff --git a/src/packages/collaboration/lib/session-utils.coffee b/src/packages/collaboration/lib/session-utils.coffee new file mode 100644 index 000000000..b7c41c50e --- /dev/null +++ b/src/packages/collaboration/lib/session-utils.coffee @@ -0,0 +1,16 @@ +Peer = require './peer' +Guid = require 'guid' + +module.exports = + createPeer: -> + id = Guid.create().toString() + new Peer(id, host: 'ec2-54-218-51-127.us-west-2.compute.amazonaws.com', port: 8080) + + connectDocument: (doc, connection) -> + doc.outputEvents.on 'changed', (event) -> + console.log 'sending event', event + connection.send(event) + + connection.on 'data', (event) -> + console.log 'receiving event', event + doc.handleInputEvent(event)