lib/volt/models/persistors/store_state.rb in volt-0.8.14 vs lib/volt/models/persistors/store_state.rb in volt-0.8.15

- old
+ new

@@ -1,37 +1,39 @@ -# StoreState provides method for a store to track its loading state. -module StoreState +module Volt + module Persistors + # StoreState provides method for a store to track its loading state. + module StoreState - # Called when a collection loads - def loaded(initial_state=nil) - change_state_to(initial_state || :not_loaded) - end + # Called when a collection loads + def loaded(initial_state=nil) + change_state_to(initial_state || :not_loaded) + end - def state - @state_dep ||= Dependency.new - @state_dep.depend + def state + @state_dep ||= Dependency.new + @state_dep.depend + @state + end - return @state - end + # Called from the QueryListener when the data is loaded + def change_state_to(new_state, skip_trigger=false) + old_state = @state + @state = new_state - # Called from the QueryListener when the data is loaded - 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 - # Trigger changed on the 'state' method - unless skip_trigger - if old_state != @state - @state_dep.changed! if @state_dep + if @state == :loaded && @fetch_promises + # Trigger each waiting fetch + @fetch_promises.compact.each { |fp| fp.resolve(@model) } + @fetch_promises = nil + + stop_listening + end 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 - end