openreplay/frontend/app/components/Session/Player/ClipPlayer/ClipPlayerControls.tsx
Andrey Babushkin fd5c0c9747
Add lokalisation (#3092)
* applied eslint

* add locales and lint the project

* removed error boundary

* updated locales

* fix min files

* fix locales
2025-03-06 17:43:15 +01:00

57 lines
1.7 KiB
TypeScript

import React from 'react';
import Timeline from 'Components/Session/Player/ClipPlayer/Timeline';
import { PlayButton, PlayingState } from '@/player-ui';
import { PlayerContext } from 'Components/Session/playerContext';
import { observer } from 'mobx-react-lite';
import { Button } from 'antd';
import { useHistory } from 'react-router-dom';
import { CirclePlay } from 'lucide-react';
import { withSiteId } from '@/routes';
import * as routes from '@/routes';
import { useStore } from '@/mstore';
import Session from 'Types/session';
import { useTranslation } from 'react-i18next';
function ClipPlayerControls({
session,
range,
}: {
session: Session;
range: [number, number];
}) {
const { t } = useTranslation();
const { projectsStore } = useStore();
const { player, store } = React.useContext(PlayerContext);
const history = useHistory();
const { siteId } = projectsStore;
const { playing, completed } = store.get();
const state = completed
? PlayingState.Completed
: playing
? PlayingState.Playing
: PlayingState.Paused;
const togglePlay = () => {
player.togglePlay();
};
const showFullSession = () => {
const path = withSiteId(routes.session(session.sessionId), siteId);
history.push(`${path}?jumpto=${Math.round(range[0])}`);
};
return (
<div className="relative flex items-center gap-4 p-3 border-t">
<PlayButton state={state} togglePlay={togglePlay} iconSize={30} />
<Timeline range={range} />
<Button size="small" type="primary" onClick={showFullSession}>
{t('Play Full Session')}
<CirclePlay size={16} />
</Button>
</div>
);
}
export default observer(ClipPlayerControls);