32 lines
937 B
TypeScript
32 lines
937 B
TypeScript
import { createAction } from '@reduxjs/toolkit';
|
|
|
|
import type { PIPMediaProps } from 'mastodon/reducers/picture_in_picture';
|
|
import { createAppAsyncThunk } from 'mastodon/store/typed_functions';
|
|
|
|
interface DeployParams {
|
|
statusId: string;
|
|
accountId: string;
|
|
playerType: 'audio' | 'video';
|
|
props: PIPMediaProps;
|
|
}
|
|
|
|
export const removePictureInPicture = createAction('pip/remove');
|
|
|
|
export const deployPictureInPictureAction =
|
|
createAction<DeployParams>('pip/deploy');
|
|
|
|
export const deployPictureInPicture = createAppAsyncThunk(
|
|
'pip/deploy',
|
|
(args: DeployParams, { dispatch, getState }) => {
|
|
const { statusId } = args;
|
|
|
|
// Do not open a player for a toot that does not exist
|
|
|
|
// @ts-expect-error state.statuses is not yet typed
|
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
if (getState().hasIn(['statuses', statusId])) {
|
|
dispatch(deployPictureInPictureAction(args));
|
|
}
|
|
},
|
|
);
|