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 deletedgh/stable
parent
07ff8cb019
commit
e592e47e19
|
@ -22,13 +22,20 @@ export const PICTURE_IN_PICTURE_REMOVE = 'PICTURE_IN_PICTURE_REMOVE';
|
||||||
* @param {MediaProps} props
|
* @param {MediaProps} props
|
||||||
* @return {object}
|
* @return {object}
|
||||||
*/
|
*/
|
||||||
export const deployPictureInPicture = (statusId, accountId, playerType, props) => ({
|
export const deployPictureInPicture = (statusId, accountId, playerType, props) => {
|
||||||
type: PICTURE_IN_PICTURE_DEPLOY,
|
return (dispatch, getState) => {
|
||||||
statusId,
|
// Do not open a player for a toot that does not exist
|
||||||
accountId,
|
if (getState().hasIn(['statuses', statusId])) {
|
||||||
playerType,
|
dispatch({
|
||||||
props,
|
type: PICTURE_IN_PICTURE_DEPLOY,
|
||||||
});
|
statusId,
|
||||||
|
accountId,
|
||||||
|
playerType,
|
||||||
|
props,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @return {object}
|
* @return {object}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { PICTURE_IN_PICTURE_DEPLOY, PICTURE_IN_PICTURE_REMOVE } from 'mastodon/actions/picture_in_picture';
|
import { PICTURE_IN_PICTURE_DEPLOY, PICTURE_IN_PICTURE_REMOVE } from 'mastodon/actions/picture_in_picture';
|
||||||
|
import { TIMELINE_DELETE } from '../actions/timelines';
|
||||||
|
|
||||||
const initialState = {
|
const initialState = {
|
||||||
statusId: null,
|
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 };
|
return { statusId: action.statusId, accountId: action.accountId, type: action.playerType, ...action.props };
|
||||||
case PICTURE_IN_PICTURE_REMOVE:
|
case PICTURE_IN_PICTURE_REMOVE:
|
||||||
return { ...initialState };
|
return { ...initialState };
|
||||||
|
case TIMELINE_DELETE:
|
||||||
|
return (state.statusId === action.id) ? { ...initialState } : state;
|
||||||
default:
|
default:
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue