diff --git a/services/web/public/coffee/ide/editor/Document.coffee b/services/web/public/coffee/ide/editor/Document.coffee index 335e2e75ae..1773844638 100644 --- a/services/web/public/coffee/ide/editor/Document.coffee +++ b/services/web/public/coffee/ide/editor/Document.coffee @@ -256,30 +256,26 @@ define [ return callback(error) if error? @joined = true @doc.catchUp( updates ) - { changes, comments } = @_decodeRanges(ranges) - @_catchUpRanges( changes, comments ) + @_decodeRanges(ranges) + @_catchUpRanges(ranges?.changes, ranges?.comments) callback() else @ide.socket.emit 'joinDoc', @doc_id, { encodeRanges: true }, (error, docLines, version, updates, ranges) => return callback(error) if error? @joined = true @doc = new ShareJsDoc @doc_id, docLines, version, @ide.socket - { changes, comments } = @_decodeRanges(ranges) - @ranges = new RangesTracker(changes, comments) + @_decodeRanges(ranges) + @ranges = new RangesTracker(ranges?.changes, ranges?.comments) @_bindToShareJsDocEvents() callback() _decodeRanges: (ranges) -> - if ranges?.changes - changes = for change in ranges.changes - change.op.i = decodeURIComponent(escape(change.op.i)) if change.op.i - change.op.d = decodeURIComponent(escape(change.op.d)) if change.op.d - change - if ranges?.comments - comments = for comment in ranges.comments - comment.op.c = decodeURIComponent(escape(comment.op.c)) - comment - { changes, comments } + decodeFromWebsockets = (text) -> decodeURIComponent(escape(text)) + for change in ranges.changes or [] + change.op.i = decodeFromWebsockets(change.op.i) if change.op.i + change.op.d = decodeFromWebsockets(change.op.d) if change.op.d + for comment in ranges.comments or [] + comment.op.c = decodeFromWebsockets(comment.op.c) _leaveDoc: (callback = (error) ->) -> sl_console.log '[_leaveDoc] Sending leaveDoc request'