Sha256: 36f8d8be2a5952112cb9975ad4a177af6e2a7a220d3c84ef07611378b4ed205f

Contents?: true

Size: 1.43 KB

Versions: 11

Compression:

Stored size: 1.43 KB

Contents

module React
  module ReduxComponent
    class ComponentClassStoreDefaults
      def initialize(state, component_name)
        @state = state
        @component_name = component_name
        if @state.isomorfeus_store
          @state.isomorfeus_store.merge!(component_class_state: { @component_name => {} })
        else
          @state.isomorfeus_store = { component_class_state: { @component_name => {} } }
        end
      end

      def method_missing(key, *args, &block)
        if `args.length > 0`
          # set initial class state
          key = key.chop if `key.endsWith('=')`
          @state.isomorfeus_store[:component_class_state][@component_name][key] = args[0]
          current_state = Isomorfeus.store.get_state
          if !(current_state[:component_class_state].has_key?(@component_name) && current_state[:component_class_state][@component_name].has_key?(key))
            Isomorfeus.store.dispatch(type: 'COMPONENT_CLASS_STATE', class: @component_name, name: key, value: args[0])
          end
        else
          # get class state

          # check if we have a component local state value

          if @state.isomorfeus_store[:component_class_state][@component_name].has_key?(key)
            return @state.isomorfeus_store[:component_class_state][@component_name][key]
          end
        end
        nil
      end

      def to_h
        @state.isomorfeus_store[:component_class_state][@component_name]
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
isomorfeus-react-16.8.1 lib/react/redux_component/component_class_store_defaults.rb
isomorfeus-react-16.8.0 lib/react/redux_component/component_class_store_defaults.rb
isomorfeus-react-16.6.8 lib/react/redux_component/component_class_store_defaults.rb
isomorfeus-react-16.6.7 lib/react/redux_component/component_class_store_defaults.rb
isomorfeus-react-16.6.6 lib/react/redux_component/component_class_store_defaults.rb
isomorfeus-react-16.6.5 lib/react/redux_component/component_class_store_defaults.rb
isomorfeus-react-16.6.4 lib/react/redux_component/component_class_store_defaults.rb
isomorfeus-react-16.6.3 lib/react/redux_component/component_class_store_defaults.rb
isomorfeus-react-16.6.2 lib/react/redux_component/component_class_store_defaults.rb
isomorfeus-react-16.6.1 lib/react/redux_component/component_class_store_defaults.rb
isomorfeus-react-16.5.1 lib/react/redux_component/component_class_store_defaults.rb