Sha256: 8b365d9e916cd06eb04515197e262ca4321d68d335a6594184c00c2c62785b6d
Contents?: true
Size: 1.08 KB
Versions: 1
Compression:
Stored size: 1.08 KB
Contents
module ApplicationCable class Store attr_accessor :transmitter def initialize subject, channel, store_id = nil @channel = channel @subject = subject @store_id = store_id end def transmit data if @subject @channel.broadcast_to @subject, ({store_id: @store_id}).compact.merge(data) else @channel.transmit ({store_id: @store_id}).compact.merge(data) end end def set value transmit action: "set", value: value end def merge value transmit action: "merge", value: value end def upsert value, key = 'id' transmit action: "upsert", key: key, value: value end end class ScopedChannel def initialize channel, subject @channel = channel @subject = subject end def store(store_id) Store.new(@subject, @channel, store_id) end end class Channel < ActionCable::Channel::Base public :transmit def self.[](subject) ScopedChannel.new(self, subject) end def store(store_id) Store.new(nil, self, store_id) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
livestores-1.0.0 | lib/livestores/channel.rb |