@ -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) => ({
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,
});
}
};
/*
@ -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;
@ -4732,6 +4732,13 @@ a.status-card.compact:hover {
background: rgba($gold-star, 0.3);
&.disabled {
color: $white;
background-color: transparent;
cursor: default;
opacity: 0.4;
@ -43,7 +43,7 @@ module.exports = merge(sharedConfig, {
plugins: [
new CompressionPlugin({
filename: '[path].gz[query]',
filename: '[path][base].gz[query]',
cache: true,
test: /\.(js|css|html|json|ico|svg|eot|otf|ttf|map)$/,
}),