Browse Source

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
closed-social-v3
Claire 2 years ago
committed by Eugen Rochko
parent
commit
34ab4111a7
2 changed files with 17 additions and 7 deletions
  1. +14
    -7
      app/javascript/mastodon/actions/picture_in_picture.js
  2. +3
    -0
      app/javascript/mastodon/reducers/picture_in_picture.js

+ 14
- 7
app/javascript/mastodon/actions/picture_in_picture.js 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) => ({
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} * @return {object}

+ 3
- 0
app/javascript/mastodon/reducers/picture_in_picture.js 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;
} }

Loading…
Cancel
Save