diff options
author | Claire <claire.github-309c@sitedethib.com> | 2021-06-24 16:00:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-24 16:00:26 +0200 |
commit | 62bf9296843cd2b387fba89e63f3daec10d2dd24 (patch) | |
tree | cccfd9b909728fa7b62d15d706943d280cd3e4af /app | |
parent | b6f952ec5b6ae18d332e12916df6b11da8b0d679 (diff) | |
parent | f024f523b25d74c1cefbf4b019333c93b7d46af6 (diff) |
Merge pull request #1555 from ClearlyClaire/glitch-soc/fixes/video-player-crash
[Glitch] Fix WebUI crash when a toot with a playing video gets deleted
Diffstat (limited to 'app')
-rw-r--r-- | app/javascript/flavours/glitch/actions/picture_in_picture.js | 21 | ||||
-rw-r--r-- | app/javascript/flavours/glitch/reducers/picture_in_picture.js | 3 |
2 files changed, 17 insertions, 7 deletions
diff --git a/app/javascript/flavours/glitch/actions/picture_in_picture.js b/app/javascript/flavours/glitch/actions/picture_in_picture.js index 4085cb59e..33d8d57d4 100644 --- a/app/javascript/flavours/glitch/actions/picture_in_picture.js +++ b/app/javascript/flavours/glitch/actions/picture_in_picture.js @@ -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} diff --git a/app/javascript/flavours/glitch/reducers/picture_in_picture.js b/app/javascript/flavours/glitch/reducers/picture_in_picture.js index f552a59c2..13a3d1aa2 100644 --- a/app/javascript/flavours/glitch/reducers/picture_in_picture.js +++ b/app/javascript/flavours/glitch/reducers/picture_in_picture.js @@ -1,4 +1,5 @@ import { PICTURE_IN_PICTURE_DEPLOY, PICTURE_IN_PICTURE_REMOVE } from 'flavours/glitch/actions/picture_in_picture'; +import { TIMELINE_DELETE } from 'flavours/glitch/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; } |