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
pull/16432/head
Claire 2021-06-25 04:45:17 +02:00 committed by GitHub
parent 07ff8cb019
commit e592e47e19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 7 deletions

View File

@ -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}

View File

@ -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;
} }