jam-cloud/web/app/assets/javascripts/react-components/stores/RetailerStore.js.coffee

70 lines
2.0 KiB
CoffeeScript

$ = jQuery
context = window
logger = context.JK.logger
rest = new context.JK.Rest()
LocationActions = context.LocationActions
@RetailerStore = Reflux.createStore(
{
retailer: null,
teacherInvitations: null
listenables: @RetailerActions
init: ->
this.listenTo(context.AppStore, this.onAppInit)
onAppInit: (@app) ->
onLoaded: (response) ->
@retailer = response
if @retailer.state
LocationActions.selectRegion('US', @retailer.state)
if @retailer.photo_url?
@retailer.photo_url = @retailer.photo_url + '?cache-bust=' + new Date().getTime()
if @retailer.large_photo_url?
@retailer.large_photo_url = @retailer.large_photo_url + '?cache-bust=' + new Date().getTime()
@changed()
rest.listRetailerInvitations({id:@retailer.id}).done((response) => @onLoadedTeacherInvitations(response)).fail((jqXHR) => @onRetailerInvitationFail(jqXHR))
onLoadedTeacherInvitations: (response) ->
@teacherInvitations = response.entries
@changed()
onAddInvitation: (teacher, invitation) ->
@teacherInvitations.push(invitation)
@changed()
onDeleteInvitation: (id) ->
if @teacherInvitations?
@teacherInvitations = @teacherInvitations.filter (invitation) -> invitation.id isnt id
@changed()
onRefresh: (retailerId) ->
if !retailerId?
retailerId = @retailer?.id
rest.getRetailer({id: retailerId}).done((response) => @onLoaded(response)).fail((jqXHR) => @onRetailerFail(jqXHR))
onUpdateRetailer: (retailer) ->
@retailer = retailer
@changed()
onRetailerFail:(jqXHR) ->
@app.layout.notify({title: 'Unable to Request Retailer Info', text: "We recommend you refresh the page."})
onRetailerInvitationFail:(jqXHR) ->
@app.layout.notify({title: 'Unable to Request Retailer Invitation Info', text: "We recommend you refresh the page."})
changed:() ->
@trigger(@getState())
getState:() ->
{retailer: @retailer, teacherInvitations: @teacherInvitations}
}
)