From fdb6a355412e46da4da36691033dd81cc741d643 Mon Sep 17 00:00:00 2001 From: Seth Call Date: Mon, 7 Dec 2020 21:04:10 -0600 Subject: [PATCH] fix --- admin/app/admin/jam_ruby_users.rb | 4 +- .../AccountPaymentHistoryScreen.js.jsx.coffee | 2 +- .../PopupMediaControls.js.jsx.coffee | 7 +++- .../SessionMediaTracks.js.jsx.coffee | 37 +++++++++++++++--- .../actions/MixerActions.js.coffee | 1 + .../stores/MixerStore.js.coffee | 38 +++++++++++++++++++ .../stores/SessionStore.js.coffee | 2 +- .../react-components/SessionScreen.scss | 4 +- .../client/react-components/SessionTrack.scss | 4 ++ 9 files changed, 86 insertions(+), 13 deletions(-) diff --git a/admin/app/admin/jam_ruby_users.rb b/admin/app/admin/jam_ruby_users.rb index 4df42aa0a..d7f988505 100644 --- a/admin/app/admin/jam_ruby_users.rb +++ b/admin/app/admin/jam_ruby_users.rb @@ -43,7 +43,6 @@ ActiveAdmin.register JamRuby::User, :as => 'Users' do member_action :resend_welcome_email, :method => :get do - handled = false user = resource if user.is_a_student if user.import_source @@ -66,7 +65,7 @@ ActiveAdmin.register JamRuby::User, :as => 'Users' do UserMailer.welcome_message(user).deliver_now end - redirect_to :back, {notice: handled ? "Resent Welcome Email" : "No Email Sent!"} + redirect_to :back, {notice: "Resent Welcome Email"} end member_action :sync_subscription, :method => :get do @@ -185,7 +184,6 @@ ActiveAdmin.register JamRuby::User, :as => 'Users' do end end - row "Subscription" do |user| div do attributes_table do diff --git a/web/app/assets/javascripts/react-components/AccountPaymentHistoryScreen.js.jsx.coffee b/web/app/assets/javascripts/react-components/AccountPaymentHistoryScreen.js.jsx.coffee index 93926f26d..3e6e50d70 100644 --- a/web/app/assets/javascripts/react-components/AccountPaymentHistoryScreen.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/AccountPaymentHistoryScreen.js.jsx.coffee @@ -623,7 +623,7 @@ profileUtils = context.JK.ProfileUtils
{uncollectableMessage}
{header}
- Pay with Paypal + Pay with Paypal
{firstNameField} {lastNameField} diff --git a/web/app/assets/javascripts/react-components/PopupMediaControls.js.jsx.coffee b/web/app/assets/javascripts/react-components/PopupMediaControls.js.jsx.coffee index 004c1fe2d..264dcd206 100644 --- a/web/app/assets/javascripts/react-components/PopupMediaControls.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/PopupMediaControls.js.jsx.coffee @@ -119,7 +119,10 @@ mixins.push(Reflux.listenTo(UserStore, 'onUserChanged')) jamTrackMixdown: {} } - close: () -> + close: (e) -> + if e? + e.preventDefault() + if !@state.media.mediaSummary.isOpener return @@ -490,6 +493,8 @@ mixins.push(Reflux.listenTo(UserStore, 'onUserChanged')) @unloaded = true window.unloaded = true + @props.windowUnloaded() + SessionActions.closeMedia(false) unless window.DontAutoCloseMedia toggleMyMixes: (e) -> diff --git a/web/app/assets/javascripts/react-components/SessionMediaTracks.js.jsx.coffee b/web/app/assets/javascripts/react-components/SessionMediaTracks.js.jsx.coffee index 0e5c3924e..08e162784 100644 --- a/web/app/assets/javascripts/react-components/SessionMediaTracks.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/SessionMediaTracks.js.jsx.coffee @@ -231,23 +231,37 @@ ChannelGroupIds = context.JK.ChannelGroupIds else if this.state.mediaSummary.mediaOpen || @state.jamTrackState?.jamTrack? + only_opener = false # give the users options to close it if this.state.mediaSummary.recordingOpen mediaType = "Recording" + only_opener = true else if this.state.mediaSummary.jamTrackOpen || @state.jamTrackState?.jamTrack? mediaType = "JamTrack" + only_opener = true else if this.state.mediaSummary.backingTrackOpen mediaType = "Audio File" + only_opener = true else if this.state.mediaSummary.metronomeOpen mediaType = "Metronome" else mediaType = "" - closeOptions = ` - - Close {mediaType} - ` + if !only_opener || this.state.mediaSummary.isOpener + closeOptions = ` + + Close {mediaType} + ` + else + if @state.popupOpen + closeOptions = ` + + ` + else + closeOptions = ` + Reopen Popup + ` content = null @@ -312,7 +326,7 @@ ChannelGroupIds = context.JK.ChannelGroupIds getInitialState:() -> - {mediaSummary:{mediaOpen: false}, isRecording: false, backingTracks: [], jamTracks: [], recordedTracks: [], metronome: null, jamTrackState: {}} + {mediaSummary:{mediaOpen: false}, isRecording: false, backingTracks: [], jamTracks: [], recordedTracks: [], metronome: null, jamTrackState: {}, popupOpen: false} onAppInit: (app) -> @app = app @@ -349,15 +363,26 @@ ChannelGroupIds = context.JK.ChannelGroupIds @handlePopup() + windowUnloaded: () -> + logger.debug('SessionMediaTracks: window uploaded') + @setState({popupOpen: false}) + @childWindow = null + handlePopup: () -> if @state.mediaSummary.userNeedsMediaControls || @state.jamTrackState?.jamTrack? unless @childWindow? logger.debug("opening media control window") @childWindow = window.open("/popups/media-controls", 'Media Controls', 'scrollbars=yes,toolbar=no,status=no,height=155,width=350') - @childWindow.PopupProps = {media: @state, jamTrackState: context.JamTrackStore.getState(), downloadingJamTrack: context.SessionStore.downloadingJamTrack } + @childWindow.PopupProps = {media: @state, jamTrackState: context.JamTrackStore.getState(), downloadingJamTrack: context.SessionStore.downloadingJamTrack, windowUnloaded: @windowUnloaded } + setTimeout(() => + @setState({popupOpen: true}) + , 1) else if @childWindow? @childWindow.DontAutoCloseMedia = true @childWindow.close() @childWindow = null + setTimeout(() => + @setState({popupOpen: false}) + , 1) }) diff --git a/web/app/assets/javascripts/react-components/actions/MixerActions.js.coffee b/web/app/assets/javascripts/react-components/actions/MixerActions.js.coffee index cbb7916cc..90b662159 100644 --- a/web/app/assets/javascripts/react-components/actions/MixerActions.js.coffee +++ b/web/app/assets/javascripts/react-components/actions/MixerActions.js.coffee @@ -15,4 +15,5 @@ context = window deadUserRemove: {} missingPeerMixer: {} clientsWithAudio: {} + closeMedia: {} }) diff --git a/web/app/assets/javascripts/react-components/stores/MixerStore.js.coffee b/web/app/assets/javascripts/react-components/stores/MixerStore.js.coffee index 7518f8735..334312793 100644 --- a/web/app/assets/javascripts/react-components/stores/MixerStore.js.coffee +++ b/web/app/assets/javascripts/react-components/stores/MixerStore.js.coffee @@ -1,5 +1,6 @@ context = window logger = context.JK.logger +SessionActions = context.SessionActions MIX_MODES = context.JK.MIX_MODES rest = context.JK.Rest() @@ -176,6 +177,43 @@ rest = context.JK.Rest() @mixers = new context.MixerHelper(@session, @masterMixers, @personalMixers, @metro, @noAudioUsers, @clientsWithAudioOverride, @mixers?.mixMode || MIX_MODES.PERSONAL) @issueChange() + # codeInitiated means the user did not initiate this + onCloseMedia: (codeInitiated) -> + + logger.debug("SessionStore: onCloseMedia", codeInitiated) + if @session.recordedTracks() + @closeRecording() + else if @session.jamTracks() || @session.downloadingJamTrack + @closeJamTrack() + else if @session.backingTrack() && @session.backingTrack().path + @closeBackingTrack() + else if @session.isMetronomeOpen() + @closeMetronomeTrack() + else + logger.error("don't know how to close open media", @session) unless codeInitiated + + closeRecording: () -> + logger.debug("closing recording") + + if !@mixers.mediaSummary.isOpener + logger.debug("not closing recording") + + rest.stopPlayClaimedRecording({id: @currentSessionId, claimed_recording_id: @currentSession.claimed_recording.id}) + .done((response) => + #sessionModel.refreshCurrentSession(true); + # update session info + SessionActions.updateSession(response) + ) + .fail((jqXHR) => + @app.notify({ + "title": "Couldn't Stop Recording Playback", + "text": "Couldn't inform the server to stop playback. msg=" + jqXHR.responseText, + "icon_url": "/assets/content/icon_alert_big.png" + }) + ) + + context.jamClient.CloseRecording() + onDeadUserRemove: (clientId) -> return unless @session.inSession() diff --git a/web/app/assets/javascripts/react-components/stores/SessionStore.js.coffee b/web/app/assets/javascripts/react-components/stores/SessionStore.js.coffee index d64194f85..b7b2f977e 100644 --- a/web/app/assets/javascripts/react-components/stores/SessionStore.js.coffee +++ b/web/app/assets/javascripts/react-components/stores/SessionStore.js.coffee @@ -249,7 +249,7 @@ ConfigureTracksActions = @ConfigureTracksActions else if @helper.isMetronomeOpen() @closeMetronomeTrack() else - logger.error("don't know how to close open media") unless codeInitiated + logger.error("don't know how to close open media", @helper) unless codeInitiated closeJamTrack: () -> diff --git a/web/app/assets/stylesheets/client/react-components/SessionScreen.scss b/web/app/assets/stylesheets/client/react-components/SessionScreen.scss index 97d4fef40..e09156055 100644 --- a/web/app/assets/stylesheets/client/react-components/SessionScreen.scss +++ b/web/app/assets/stylesheets/client/react-components/SessionScreen.scss @@ -354,7 +354,7 @@ $session-screen-divider: 1190px; } } - .closeAudio, .session-clear-notifications { + .closeAudio, .session-clear-notifications, .reopen-popup, .popup-open { cursor: pointer; color: $ColorTextTypical; height: 20px; @@ -369,6 +369,8 @@ $session-screen-divider: 1190px; } } + .reopen-popup {color:#fc0} + .open-media-file-header, .use-metronome-header { font-size: 14px; line-height: 100%; diff --git a/web/app/assets/stylesheets/client/react-components/SessionTrack.scss b/web/app/assets/stylesheets/client/react-components/SessionTrack.scss index 795c80a5a..8197318cf 100644 --- a/web/app/assets/stylesheets/client/react-components/SessionTrack.scss +++ b/web/app/assets/stylesheets/client/react-components/SessionTrack.scss @@ -203,6 +203,10 @@ .track-icon-mute{ float:right; } + + &:nth-child(2) { + margin-top:0; + } } &.music-mixer, &.chat-mixer {