diff --git a/app/assets/javascripts/routes/documents.js.coffee.erb b/app/assets/javascripts/routes/documents.js.coffee.erb index f5c0efe..ba8404c 100644 --- a/app/assets/javascripts/routes/documents.js.coffee.erb +++ b/app/assets/javascripts/routes/documents.js.coffee.erb @@ -5,16 +5,8 @@ LiveReader.DocumentsRoute = Ember.Route.extend # Setup Pusher pusher = new Pusher('8146487894a3cc81758c') @set('pusher', pusher) + channel = pusher.subscribe('<%= Rails.env %>_main_channel') - channel.bind 'update', (payload) => - # TODO: Clean up this big ugly chunk of procedural code - payload.updated_at = new Date(payload.updated_at) + + channel.bind 'patch', (payload) => doc = @model().find((item) => item.get('id') == payload.id) - # debugger - if doc - doc.setProperties - title: payload.title - body: payload.body - updated_at: payload.updated_at - else - doc = LiveReader.Document.createRecord(payload) diff --git a/app/assets/javascripts/spotlight.js.coffee.erb b/app/assets/javascripts/spotlight.js.coffee.erb index 77d796a..8dadb83 100644 --- a/app/assets/javascripts/spotlight.js.coffee.erb +++ b/app/assets/javascripts/spotlight.js.coffee.erb @@ -27,6 +27,20 @@ channel.bind 'update', (payload) => y = el.position()['top'] - 100 $.scrollTo(y) - - - +channel.bind 'patch', (payload) => + $.ajax "/api/v1/documents/" + payload.id, + type: "GET" + dataType: "json" + success: (data) -> + document = data.document + oldText = split $(".text").html().trim() + $("h1").html(document.title) + $(".text").html(document.body) + newText = split $(".text").html().trim() + try + for snippet, i in newText + if newText[i] != oldText[i] + parsedSnippet = $("

#{snippet}

").text() + el = $(":contains(#{parsedSnippet})").last() + y = el.position()['top'] - 100 + $.scrollTo(y) diff --git a/app/controllers/writeroom/documents_controller.rb b/app/controllers/writeroom/documents_controller.rb index c3ef915..a66cfb5 100644 --- a/app/controllers/writeroom/documents_controller.rb +++ b/app/controllers/writeroom/documents_controller.rb @@ -36,7 +36,8 @@ def update @document = Document.find(params[:id]) if @document.update(document_params) - Pusher.trigger(pusher_channel, 'update', @document.to_pusher) + Pusher.trigger(pusher_channel, 'patch', + { id: @document.id.to_s }) end respond_with @document end