diff --git a/ruby/lib/jam_ruby/models/music_session_user_history.rb b/ruby/lib/jam_ruby/models/music_session_user_history.rb index c6f73a308..c8b8c0834 100644 --- a/ruby/lib/jam_ruby/models/music_session_user_history.rb +++ b/ruby/lib/jam_ruby/models/music_session_user_history.rb @@ -24,7 +24,7 @@ module JamRuby def name user.name end - + def music_session @msh ||= JamRuby::MusicSession.find_by_music_session_id(self.music_session_id) end diff --git a/web/app/assets/javascripts/jam_rest.js b/web/app/assets/javascripts/jam_rest.js index c7b8e2473..2dcaabfc3 100644 --- a/web/app/assets/javascripts/jam_rest.js +++ b/web/app/assets/javascripts/jam_rest.js @@ -540,6 +540,11 @@ processData: false }); } + if(detail) { + detail.done(function(user) { + window.UserActions.loaded(user) + }) + } return detail; } @@ -1167,11 +1172,12 @@ } function updateUser(options) { + options = options || {}; var id = getId(options); delete options['id']; - return $.ajax({ + var deferred = $.ajax({ type: "POST", dataType: "json", contentType: 'application/json', @@ -1179,6 +1185,13 @@ data: JSON.stringify(options), processData: false }); + + deferred.done(function(user) { + window.UserActions.loaded(user) + }) + + return deferred; + } function startRecording(options) { diff --git a/web/app/assets/javascripts/react-components/JamTrackLandingScreen.js.jsx.coffee b/web/app/assets/javascripts/react-components/JamTrackLandingScreen.js.jsx.coffee index 821fb23aa..3f18ba5ee 100644 --- a/web/app/assets/javascripts/react-components/JamTrackLandingScreen.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/JamTrackLandingScreen.js.jsx.coffee @@ -5,11 +5,14 @@ rest = context.JK.Rest() @JamTrackLandingScreen = React.createClass({ - mixins: [Reflux.listenTo(@AppStore,"onAppInit")] + mixins: [Reflux.listenTo(@AppStore,"onAppInit"), Reflux.listenTo(@UserStore, "onUserChanged")] getInitialState: () -> {user: null, purchasedJamTracks: []} + onUserChanged: (userState) -> + @onUser(userState.user) if userState.user + render: () -> howTo = null @@ -27,6 +30,7 @@ rest = context.JK.Rest() ` + if @state.purchasedJamTracks.length > 0 playJamTracks = [] for jamTrack in @state.purchasedJamTracks @@ -146,9 +150,7 @@ rest = context.JK.Rest() @processUrl() - if context.JK.currentUserId - @app.user().done(@onUser) - else + if !context.JK.currentUserId @onUser({free_jamtrack: context.JK.currentUserFreeJamTrack}) diff --git a/web/app/assets/javascripts/react-components/actions/UserActions.js.coffee b/web/app/assets/javascripts/react-components/actions/UserActions.js.coffee new file mode 100644 index 000000000..c9469e5d6 --- /dev/null +++ b/web/app/assets/javascripts/react-components/actions/UserActions.js.coffee @@ -0,0 +1,6 @@ +context = window + +@UserActions = Reflux.createActions({ + loaded: {} +}) + diff --git a/web/app/assets/javascripts/react-components/stores/UserStore.js.coffee b/web/app/assets/javascripts/react-components/stores/UserStore.js.coffee new file mode 100644 index 000000000..133c3f87c --- /dev/null +++ b/web/app/assets/javascripts/react-components/stores/UserStore.js.coffee @@ -0,0 +1,18 @@ +$ = jQuery +context = window +logger = context.JK.logger + +@UserStore = Reflux.createStore( + { + user: null + + listenables: @UserActions + + onLoaded:(user) -> + @user = user + @changed() + + changed:() -> + @trigger({user: @user}) + } +) diff --git a/web/app/assets/javascripts/redeem_complete.js b/web/app/assets/javascripts/redeem_complete.js index 1300e97f4..da264f510 100644 --- a/web/app/assets/javascripts/redeem_complete.js +++ b/web/app/assets/javascripts/redeem_complete.js @@ -68,6 +68,7 @@ rest.placeOrder() .done(function(purchaseResponse) { context.JK.currentUserFreeJamTrack = false // make sure the user sees no more free notices without having to do a full page refresh + rest.updateUser() checkoutUtils.setLastPurchase(purchaseResponse) jamTrackUtils.checkShoppingCart() diff --git a/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss b/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss index a855585e3..4536d9eb6 100644 --- a/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss +++ b/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss @@ -356,6 +356,7 @@ body.web.individual_jamtrack { .icheckbox_minimal { float: left; top: 6px; + margin-left:64px; } .cta-button { font-size: 24px;