Sha256: 09d1e32f67ffd948f8d2f19ca80835dddde11c0fcd01e8285e2c7495c0ff1abd

Contents?: true

Size: 1.33 KB

Versions: 20

Compression:

Stored size: 1.33 KB

Contents

module Loco
  class WsConnectedResourcesManager
    def initialize resources
      @resources = resources
      @connected_resources = nil
    end

    class << self
      def identifiers
        val = WsConnectionStorage.current.get key
        return [] if val.blank?
        JSON.parse val
      end

      def add identifier
        ids = identifiers
        return if ids.include? identifier
        ids << identifier
        WsConnectionStorage.current.set key, ids.to_json
      end

      def del identifier
        ids = identifiers
        return if not ids.include? identifier
        ids.delete identifier
        WsConnectionStorage.current.set key, ids.to_json
      end

      def key; "loco:conn_ids" end
    end

    def connected_resources
      return @connected_resources if @connected_resources
      @resources.each do |resource|
        next if WsConnectionManager.new(resource).connected_uuids.empty?
        add resource
      end
      @connected_resources || []
    end

    def connected? resource
      connected_resources.map do |resource|
        WsConnectionManager.new(resource).identifier
      end.include? WsConnectionManager.new(resource).identifier
    end

    private

      def add resource
        @connected_resources ||= []
        @connected_resources << resource
        @connected_resources.uniq!
      end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
loco-rails-2.5.3 lib/loco/ws_connected_resources_manager.rb
loco-rails-2.5.2 lib/loco/ws_connected_resources_manager.rb
loco-rails-2.5.1 lib/loco/ws_connected_resources_manager.rb
loco-rails-2.5.0 lib/loco/ws_connected_resources_manager.rb
loco-rails-2.4.0 lib/loco/ws_connected_resources_manager.rb
loco-rails-2.3.0 lib/loco/ws_connected_resources_manager.rb
loco-rails-3.0.0 lib/loco/ws_connected_resources_manager.rb
loco-rails-2.2.2 lib/loco/ws_connected_resources_manager.rb
loco-rails-2.2.1 lib/loco/ws_connected_resources_manager.rb
loco-rails-2.2.0 lib/loco/ws_connected_resources_manager.rb
loco-rails-2.1.0 lib/loco/ws_connected_resources_manager.rb
loco-rails-2.0.0 lib/loco/ws_connected_resources_manager.rb
loco-rails-1.5.2 lib/loco/ws_connected_resources_manager.rb
loco-rails-1.5.1 lib/loco/ws_connected_resources_manager.rb
loco-rails-1.5.0 lib/loco/ws_connected_resources_manager.rb
loco-rails-1.4.0 lib/loco/ws_connected_resources_manager.rb
loco-rails-1.3.3 lib/loco/ws_connected_resources_manager.rb
loco-rails-1.3.2 lib/loco/ws_connected_resources_manager.rb
loco-rails-1.3.1 lib/loco/ws_connected_resources_manager.rb
loco-rails-1.3.0 lib/loco/ws_connected_resources_manager.rb