From e40c964d97d9df85501c53b22fbc0503c1a804b2 Mon Sep 17 00:00:00 2001 From: Seth Call Date: Sun, 15 Feb 2015 22:15:34 -0600 Subject: [PATCH] * merged --- .../jam_ruby/models/recorded_backing_track.rb | 7 +++++++ ruby/lib/jam_ruby/models/recorded_track.rb | 2 +- .../dialog/recordingFinishedDialog.js | 17 +++++++++++++++++ web/app/assets/javascripts/jam_rest.js | 13 +++++++++++++ web/app/assets/javascripts/session.js | 3 ++- .../api_backing_tracks_controller.rb | 17 ++++++++++++++++- web/config/routes.rb | 1 + 7 files changed, 57 insertions(+), 3 deletions(-) diff --git a/ruby/lib/jam_ruby/models/recorded_backing_track.rb b/ruby/lib/jam_ruby/models/recorded_backing_track.rb index f37659d3e..42513620c 100644 --- a/ruby/lib/jam_ruby/models/recorded_backing_track.rb +++ b/ruby/lib/jam_ruby/models/recorded_backing_track.rb @@ -179,6 +179,13 @@ module JamRuby s3_manager.delete(self[:url]) if self[:url] && s3_manager.exists?(self[:url]) end + def mark_silent + destroy + + # check if we have all the files we need, now that the recorded_backing_track is out of the way + recording.preconditions_for_mix? + end + private def self.construct_filename(created_at, recording_id, client_track_id) diff --git a/ruby/lib/jam_ruby/models/recorded_track.rb b/ruby/lib/jam_ruby/models/recorded_track.rb index 2a6a828d1..e11a76bf0 100644 --- a/ruby/lib/jam_ruby/models/recorded_track.rb +++ b/ruby/lib/jam_ruby/models/recorded_track.rb @@ -228,7 +228,7 @@ module JamRuby def self.construct_filename(created_at, recording_id, client_track_id) raise "unknown ID" unless client_track_id - "recordings/#{created_at.strftime('%m-%d-%Y')}/#{recording_id}/backing-track-#{client_track_id}.ogg" + "recordings/#{created_at.strftime('%m-%d-%Y')}/#{recording_id}/track-#{client_track_id}.ogg" end end end diff --git a/web/app/assets/javascripts/dialog/recordingFinishedDialog.js b/web/app/assets/javascripts/dialog/recordingFinishedDialog.js index f0d24a27d..41eec0101 100644 --- a/web/app/assets/javascripts/dialog/recordingFinishedDialog.js +++ b/web/app/assets/javascripts/dialog/recordingFinishedDialog.js @@ -78,6 +78,23 @@ "icon_url": "/assets/content/icon_alert_big.png" }); } + else { + // hunt for missing backing tracks; if so, mark them as silent + context._.each(openRecordingResult.backing_tracks, function(backingTrack) { + if(backingTrack.local_state == "MISSING") { + // mark this as deleted + logger.debug("marking recorded track as deleted") + rest.markRecordedBackingTrackSilent({recording_id: openRecordingResult.recording_id, backing_track_id: backingTrack.client_track_id}) + .fail(function() { + app.notify({ + "title": "Unable to Mark Backing Track", + "text": "A backing track was never played, but we could not tell the server to remove it from the recording.", + "icon_url": "/assets/content/icon_alert_big.png" + }); + }) + } + }) + } playbackControls.startMonitor(); } diff --git a/web/app/assets/javascripts/jam_rest.js b/web/app/assets/javascripts/jam_rest.js index 76a260b72..f0500ae65 100644 --- a/web/app/assets/javascripts/jam_rest.js +++ b/web/app/assets/javascripts/jam_rest.js @@ -1043,6 +1043,18 @@ }) } + function markRecordedBackingTrackSilent(options) { + var recordingId = options["recording_id"]; + var trackId = options["backing_track_id"]; + + return $.ajax({ + type: "POST", + dataType: "json", + contentType: 'application/json', + data: {}, + url: "/api/recordings/" + recordingId + "/backing_tracks/" + trackId + '/silent' + }); + } function getRecordedTrack(options) { var recordingId = options["recording_id"]; var trackId = options["track_id"]; @@ -1697,6 +1709,7 @@ this.getMount = getMount; this.createSourceChange = createSourceChange; this.validateUrlSite = validateUrlSite; + this.markRecordedBackingTrackSilent = markRecordedBackingTrackSilent; return this; }; diff --git a/web/app/assets/javascripts/session.js b/web/app/assets/javascripts/session.js index 74491f43c..0f6a7d841 100644 --- a/web/app/assets/javascripts/session.js +++ b/web/app/assets/javascripts/session.js @@ -908,7 +908,7 @@ // mediaType == null is for backwards compat with older clients. Can be removed soon recordingTrackMixers.push(mixer) } else { - console.log("Unknown track type: " + mediaType) + logger.warn("Unknown track type: " + mediaType) adhocTrackMixers.push(mixer); } }); @@ -1257,6 +1257,7 @@ if(recordedTracks) { $('.session-recording-name').text(sessionModel.getCurrentSession().claimed_recording.name); + console.log("renderRecordingTracks", recordingMixers, recordedTracks) var noCorrespondingTracks = false; $.each(recordingMixers, function(index, mixer) { var preMasteredClass = ""; diff --git a/web/app/controllers/api_backing_tracks_controller.rb b/web/app/controllers/api_backing_tracks_controller.rb index 618937052..9ed591422 100644 --- a/web/app/controllers/api_backing_tracks_controller.rb +++ b/web/app/controllers/api_backing_tracks_controller.rb @@ -2,6 +2,8 @@ class ApiBackingTracksController < ApiController # have to be signed in currently to see this screen before_filter :api_signed_in_user + + before_filter :lookup_recorded_backing_track, :only => [ :backing_track_silent ] respond_to :json @@ -14,4 +16,17 @@ class ApiBackingTracksController < ApiController render "api_backing_tracks/index", :layout => nil end -end # class ApiJamTracksController + def backing_track_silent + @recorded_backing_track.mark_silent + + render :json => {}, :status => 200 + end + + private + + def lookup_recorded_backing_track + @recorded_backing_track = RecordedBackingTrack.find_by_recording_id_and_client_track_id!(params[:id], params[:track_id]) + raise PermissionError, ValidationMessages::PERMISSION_VALIDATION_ERROR unless @recorded_backing_track.recording.has_access?(current_user) + end + +end # class ApiBackingTracksController diff --git a/web/config/routes.rb b/web/config/routes.rb index e018686e1..2a0001179 100644 --- a/web/config/routes.rb +++ b/web/config/routes.rb @@ -470,6 +470,7 @@ SampleApp::Application.routes.draw do match '/recordings/:id/backing_tracks/:track_id/upload_sign' => 'api_recordings#backing_track_upload_sign', :via => :get match '/recordings/:id/backing_tracks/:track_id/upload_part_complete' => 'api_recordings#backing_track_upload_part_complete', :via => :post match '/recordings/:id/backing_tracks/:track_id/upload_complete' => 'api_recordings#backing_track_upload_complete', :via => :post + match '/recordings/:id/backing_tracks/:track_id/silent' => 'api_backing_tracks#backing_track_silent', :via => :post # Recordings - recorded_videos match '/recordings/:id/tracks/:video_id/upload_sign' => 'api_recordings#video_upload_sign', :via => :get