diff --git a/app/assets/javascripts/recordings.coffee b/app/assets/javascripts/recordings.coffee index f82d831a..4605b88c 100644 --- a/app/assets/javascripts/recordings.coffee +++ b/app/assets/javascripts/recordings.coffee @@ -310,19 +310,24 @@ class @Recordings method: 'POST', url: url+'/'+id data: {video_title: title, privacy_status: privacy_status} - success: () -> - cloud = selectedUpload.find('.cloud-blue') - check = selectedUpload.find('.green-check') - spinner = selectedUpload.find('.load-spinner') + success: (data) -> - showAlert(I18n.successful_upload, 4000); + if data['url'] != null + window.location.href = data['url'] + else + cloud = selectedUpload.find('.cloud-blue') + check = selectedUpload.find('.green-check') + spinner = selectedUpload.find('.load-spinner') - spinner.hide() - check.show() - setTimeout ( -> - cloud.show() - check.hide() - ), 2500 + showAlert(I18n.successful_upload, 4000); + + spinner.hide() + check.show() + + setTimeout ( -> + cloud.show() + check.hide() + ), 2500 }) selectedUpload.find('.cloud-blue').hide() diff --git a/app/controllers/bbb_controller.rb b/app/controllers/bbb_controller.rb index 7703423b..5dcc9d6b 100644 --- a/app/controllers/bbb_controller.rb +++ b/app/controllers/bbb_controller.rb @@ -180,10 +180,22 @@ class BbbController < ApplicationController title: params[:video_title], description: t('youtube_description', url: 'https://bigbluebutton.org/'), privacy_status: params[:privacy_status]) - rescue - # In this case, they don't have a youtube channel connected to their account, so prompt to create one. - redirect_to 'https://m.youtube.com/create_channel' + rescue => e + errors = e.response_body['error']['errors'] + # Many complications, start by getting them to refresh their token. + if errors.length > 1 + redirect_url = user_login_url + else + error = errors[0] + if error['message'] == "Unauthorized" + redirect_url = 'https://m.youtube.com/create_channel' + else + # In this case, they don't have a youtube channel connected to their account, so prompt to create one. + redirect_url = user_login_url + end + end end + render json: {:url => redirect_url} end # POST /rooms/:room_id/recordings/can_upload