diff --git a/web/lib/music_session_manager.rb b/web/lib/music_session_manager.rb index 328ddedbc..b9d69fae7 100644 --- a/web/lib/music_session_manager.rb +++ b/web/lib/music_session_manager.rb @@ -51,6 +51,10 @@ MusicSessionManager < BaseManager connection = ConnectionManager.new.join_music_session(user, client_id, music_session, as_musician, tracks) unless connection.errors.any? + user.update_progression_field(:first_music_session_at) + MusicSessionUserHistory.save(music_session.id, user.id, client_id, tracks) + + unless band.nil? Notification.send_band_session_join(music_session, band) end @@ -108,20 +112,23 @@ MusicSessionManager < BaseManager connection = ConnectionManager.new.join_music_session(user, client_id, music_session, as_musician, tracks) - user.update_progression_field(:first_music_session_at) - MusicSessionUserHistory.save(music_session_id, user.id, client_id, tracks) + unless connection.errors.any? + user.update_progression_field(:first_music_session_at) + MusicSessionUserHistory.save(music_session_id, user.id, client_id, tracks) - if as_musician && music_session.musician_access + if as_musician && music_session.musician_access - # send to session participants - Notification.send_session_join(music_session, connection, user) + # send to session participants + Notification.send_session_join(music_session, connection, user) - # send "musician joined session" notification only if it's not a band session since there will be a "band joined session" notification - if music_session.band.nil? - Notification.send_musician_session_join(music_session, connection, user) + # send "musician joined session" notification only if it's not a band session since there will be a "band joined session" notification + if music_session.band.nil? + Notification.send_musician_session_join(music_session, connection, user) + end end end + if connection.errors.any? # rollback the transaction to make sure nothing is disturbed in the database raise ActiveRecord::Rollback