Class: ViewComponentReflex::StateAdapter::Session
- Inherits:
-
Object
- Object
- ViewComponentReflex::StateAdapter::Session
- Defined in:
- lib/view_component_reflex/state_adapter/session.rb
Class Method Summary collapse
-
.reconcile_state(request, key, new_state) ⇒ Object
The passed state should always match the initial state of the component if it doesn’t, we need to reset the state to the passed value.
- .set_state(reflex, key, new_state) ⇒ Object
- .state(request, key) ⇒ Object
- .store_state(request, key, new_state = {}) ⇒ Object
Class Method Details
.reconcile_state(request, key, new_state) ⇒ Object
The passed state should always match the initial state of the component if it doesn’t, we need to reset the state to the passed value.
This handles cases where your initialize_state param computes some value that changes initialize_state({ transaction: @customer.transactions.first }) if you delete the first transaction, that ^ is no longer valid. We need to update the state.
29 30 31 32 33 34 35 |
# File 'lib/view_component_reflex/state_adapter/session.rb', line 29 def self.reconcile_state(request, key, new_state) request.session["#{key}_initial"].each do |k, v| if new_state[k] != v request.session[key][k] = new_state[k] end end end |
.set_state(reflex, key, new_state) ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/view_component_reflex/state_adapter/session.rb', line 8 def self.set_state(reflex, key, new_state) new_state.each do |k, v| state(reflex.request, key)[k] = v end store = reflex.request.session.instance_variable_get("@by") store.commit_session reflex.request, reflex.controller.response end |
.state(request, key) ⇒ Object
4 5 6 |
# File 'lib/view_component_reflex/state_adapter/session.rb', line 4 def self.state(request, key) request.session[key] ||= {} end |
.store_state(request, key, new_state = {}) ⇒ Object
16 17 18 19 20 21 |
# File 'lib/view_component_reflex/state_adapter/session.rb', line 16 def self.store_state(request, key, new_state = {}) request.session[key] = {} new_state.each do |k, v| request.session[key][k] = v end end |