Module: Volt::Persistors::StoreState
- Included in:
- ArrayStore, ModelStore
- Defined in:
- lib/volt/models/persistors/store_state.rb
Overview
StoreState provides method for a store to track its loading state.
Instance Method Summary collapse
-
#change_state_to(new_state, skip_trigger = false) ⇒ Object
Called from the QueryListener when the data is loaded.
-
#loaded(initial_state = nil) ⇒ Object
Called when a collection loads.
- #state ⇒ Object
Instance Method Details
#change_state_to(new_state, skip_trigger = false) ⇒ Object
Called from the QueryListener when the data is loaded
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/volt/models/persistors/store_state.rb', line 17 def change_state_to(new_state, skip_trigger = false) old_state = @state @state = new_state # Trigger changed on the 'state' method unless skip_trigger if old_state != @state @state_dep.changed! if @state_dep end end if @state == :loaded && @fetch_promises # Trigger each waiting fetch @fetch_promises.compact.each { |fp| fp.resolve(@model) } @fetch_promises = nil stop_listening end end |
#loaded(initial_state = nil) ⇒ Object
Called when a collection loads
6 7 8 |
# File 'lib/volt/models/persistors/store_state.rb', line 6 def loaded(initial_state = nil) change_state_to(initial_state || :not_loaded) end |
#state ⇒ Object
10 11 12 13 14 |
# File 'lib/volt/models/persistors/store_state.rb', line 10 def state @state_dep ||= Dependency.new @state_dep.depend @state end |