Fix WebUI crash when a toot with a playing video gets deleted (#16384)
* Fix WebUI crash when a toot with a playing video gets deleted * Fix pop-up player not closing the moment a status is deleted
This commit is contained in:
		
							parent
							
								
									07ff8cb019
								
							
						
					
					
						commit
						e592e47e19
					
				
					 2 changed files with 17 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -22,13 +22,20 @@ export const PICTURE_IN_PICTURE_REMOVE = 'PICTURE_IN_PICTURE_REMOVE';
 | 
			
		|||
 * @param {MediaProps} props
 | 
			
		||||
 * @return {object}
 | 
			
		||||
 */
 | 
			
		||||
export const deployPictureInPicture = (statusId, accountId, playerType, props) => ({
 | 
			
		||||
  type: PICTURE_IN_PICTURE_DEPLOY,
 | 
			
		||||
  statusId,
 | 
			
		||||
  accountId,
 | 
			
		||||
  playerType,
 | 
			
		||||
  props,
 | 
			
		||||
});
 | 
			
		||||
export const deployPictureInPicture = (statusId, accountId, playerType, props) => {
 | 
			
		||||
  return (dispatch, getState) => {
 | 
			
		||||
    // Do not open a player for a toot that does not exist
 | 
			
		||||
    if (getState().hasIn(['statuses', statusId])) {
 | 
			
		||||
      dispatch({
 | 
			
		||||
        type: PICTURE_IN_PICTURE_DEPLOY,
 | 
			
		||||
        statusId,
 | 
			
		||||
        accountId,
 | 
			
		||||
        playerType,
 | 
			
		||||
        props,
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * @return {object}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
import { PICTURE_IN_PICTURE_DEPLOY, PICTURE_IN_PICTURE_REMOVE } from 'mastodon/actions/picture_in_picture';
 | 
			
		||||
import { TIMELINE_DELETE } from '../actions/timelines';
 | 
			
		||||
 | 
			
		||||
const initialState = {
 | 
			
		||||
  statusId: null,
 | 
			
		||||
| 
						 | 
				
			
			@ -16,6 +17,8 @@ export default function pictureInPicture(state = initialState, action) {
 | 
			
		|||
    return { statusId: action.statusId, accountId: action.accountId, type: action.playerType, ...action.props };
 | 
			
		||||
  case PICTURE_IN_PICTURE_REMOVE:
 | 
			
		||||
    return { ...initialState };
 | 
			
		||||
  case TIMELINE_DELETE:
 | 
			
		||||
    return (state.statusId === action.id) ? { ...initialState } : state;
 | 
			
		||||
  default:
 | 
			
		||||
    return state;
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue