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

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

#stateObject



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