module Collab::Channel

Public Instance Methods

commit(data) click to toggle source
# File lib/collab/channel.rb, line 23
def commit(data)
  @document.apply_commit(data)
end
subscribed() click to toggle source
# File lib/collab/channel.rb, line 3
def subscribed
  reject_unauthorized_connection unless @document = find_document
  
  starting_version = params[:startingVersion]&.to_i
  raise "missing startingVersion" if starting_version.nil?
  raise "invalid version" unless @document.possibly_saved_version? starting_version

  stream_for @document
  
  commits = @document.commits
                     .where("document_version > ?", starting_version)
                     .order(document_version: :asc)
                     .load
          
  unless commits.empty?
    raise "invalid version" unless commits.first.document_version == (starting_version + 1)
    commits.lazy.map(&:as_json).each(method(:transmit))
  end
end
unsubscribed() click to toggle source
transmit({ack: "select"})

end

# File lib/collab/channel.rb, line 43
def unsubscribed
  stop_all_streams # this may not be needed
end