From 47490ea3d90d55cb9b8e4b260dbb6ee6a37a64d9 Mon Sep 17 00:00:00 2001 From: Steven Miers Date: Mon, 6 Oct 2014 16:17:46 -0500 Subject: [PATCH] VRFS-2025 Incremental --- ruby/lib/jam_ruby/connection_manager.rb | 4 ++-- .../jam_ruby/models/active_music_session.rb | 6 ++--- ruby/lib/jam_ruby/models/connection.rb | 22 ++++++++++++++++++- ruby/lib/jam_ruby/models/music_session.rb | 7 ++++++ ruby/spec/jam_ruby/models/connection_spec.rb | 4 ++++ 5 files changed, 37 insertions(+), 6 deletions(-) diff --git a/ruby/lib/jam_ruby/connection_manager.rb b/ruby/lib/jam_ruby/connection_manager.rb index e8349c97d..95c4ba91d 100644 --- a/ruby/lib/jam_ruby/connection_manager.rb +++ b/ruby/lib/jam_ruby/connection_manager.rb @@ -321,7 +321,7 @@ SQL end end - def join_music_session(user, client_id, music_session, as_musician, tracks, audio_latency) + def join_music_session(user, client_id, music_session, as_musician, tracks, audio_latency, video_sources=nil) connection = nil ConnectionManager.active_record_transaction do |connection_manager| @@ -329,7 +329,7 @@ SQL connection = Connection.find_by_client_id_and_user_id!(client_id, user.id) - connection.join_the_session(music_session, as_musician, tracks, user, audio_latency) + connection.join_the_session(music_session, as_musician, tracks, user, audio_latency, video_sources) # connection.music_session_id = music_session.id # connection.as_musician = as_musician # connection.joining_session = true diff --git a/ruby/lib/jam_ruby/models/active_music_session.rb b/ruby/lib/jam_ruby/models/active_music_session.rb index c594655d2..f3e08bcf9 100644 --- a/ruby/lib/jam_ruby/models/active_music_session.rb +++ b/ruby/lib/jam_ruby/models/active_music_session.rb @@ -447,7 +447,7 @@ module JamRuby [music_sessions, user_scores] end - def self.participant_create user, music_session_id, client_id, as_musician, tracks, audio_latency + def self.participant_create(user, music_session_id, client_id, as_musician, tracks, audio_latency, video_sources=nil) music_session = MusicSession.find(music_session_id) if music_session.active_music_session @@ -458,7 +458,7 @@ module JamRuby active_music_session.with_lock do # VRFS-1297 active_music_session.tick_track_changes - connection = ConnectionManager.new.join_music_session(user, client_id, active_music_session, as_musician, tracks, audio_latency) + connection = ConnectionManager.new.join_music_session(user, client_id, active_music_session, as_musician, tracks, audio_latency, video_sources) if connection.errors.any? # rollback the transaction to make sure nothing is disturbed in the database @@ -515,7 +515,7 @@ module JamRuby # auto-join this user into the newly created session as_musician = true - connection = ConnectionManager.new.join_music_session(user, client_id, active_music_session, as_musician, tracks, audio_latency) + connection = ConnectionManager.new.join_music_session(user, client_id, active_music_session, as_musician, tracks, audio_latency, video_sources) unless connection.errors.any? user.update_progression_field(:first_music_session_at) diff --git a/ruby/lib/jam_ruby/models/connection.rb b/ruby/lib/jam_ruby/models/connection.rb index 9083b4543..a1092300e 100644 --- a/ruby/lib/jam_ruby/models/connection.rb +++ b/ruby/lib/jam_ruby/models/connection.rb @@ -163,12 +163,18 @@ module JamRuby true end - def join_the_session(music_session, as_musician, tracks, user, audio_latency) + # + def join_the_session(music_session, as_musician, tracks, user, audio_latency) + join_the_session(music_session, as_musician, tracks, nil, user, audio_latency) + end + + def join_the_session(music_session, as_musician, tracks, videos, user, audio_latency) self.music_session_id = music_session.id self.as_musician = as_musician self.joining_session = true self.joined_session_at = Time.now associate_tracks(tracks) unless tracks.nil? + associate_videos(videos) unless videos.nil? self.save # if user joins the session as a musician, update their addr and location @@ -193,6 +199,20 @@ module JamRuby end end + def associate_videos(videos) + unless videos.nil? + self.videos.clear() + videos.each do |video| + v = VideoSource.new + v.connection = self + v.sound = video["sound"] + v.client_video_source_id = video["client_video_source_id"] + v.save # todo what if it fails? + self.videos << v + end + end + end + def self.update_locidispids(use_copied = true) # using addr, we can rebuild locidispid diff --git a/ruby/lib/jam_ruby/models/music_session.rb b/ruby/lib/jam_ruby/models/music_session.rb index 67e3eebe2..0095eb652 100644 --- a/ruby/lib/jam_ruby/models/music_session.rb +++ b/ruby/lib/jam_ruby/models/music_session.rb @@ -74,6 +74,7 @@ module JamRuby def add_to_feed feed = Feed.new feed.music_session = self + feed.active = true end @@ -604,6 +605,12 @@ module JamRuby hist.end_history if hist + feed = Feed.find_by_music_session_id(session_id) + unless feed.nil? + feed.active = false + feed.save + end + Notification.send_session_ended(session_id) end diff --git a/ruby/spec/jam_ruby/models/connection_spec.rb b/ruby/spec/jam_ruby/models/connection_spec.rb index c391c7f29..fe1c69ed0 100644 --- a/ruby/spec/jam_ruby/models/connection_spec.rb +++ b/ruby/spec/jam_ruby/models/connection_spec.rb @@ -100,4 +100,8 @@ describe JamRuby::Connection do conn.locidispid.should == 0 end end + + describe "join_the_session" do + + end end