mirror of
https://github.com/funamitech/mastodon
synced 2024-12-18 00:29:13 +09:00
9fbe8d3a0c
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
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));
|
|
}
|
|
},
|
|
);
|