Skip to content

Commit

Permalink
Start implementing player Ui #10
Browse files Browse the repository at this point in the history
  • Loading branch information
prayag17 committed May 10, 2023
1 parent 9895421 commit 7137cbc
Show file tree
Hide file tree
Showing 5 changed files with 123 additions and 16 deletions.
12 changes: 12 additions & 0 deletions src/components/icons/mdiFastForward.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/** @format */
import SvgIcon from "@mui/material/SvgIcon";

import { mdiFastForward } from "@mdi/js";

export const MdiFastForward = (props) => {
return (
<SvgIcon {...props}>
<path d={mdiFastForward}></path>
</SvgIcon>
);
};
12 changes: 12 additions & 0 deletions src/components/icons/mdiPause.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/** @format */
import SvgIcon from "@mui/material/SvgIcon";

import { mdiPause } from "@mdi/js";

export const MdiPause = (props) => {
return (
<SvgIcon {...props}>
<path d={mdiPause}></path>
</SvgIcon>
);
};
12 changes: 12 additions & 0 deletions src/components/icons/mdiRewind.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/** @format */
import SvgIcon from "@mui/material/SvgIcon";

import { mdiRewind } from "@mdi/js";

export const MdiRewind = (props) => {
return (
<SvgIcon {...props}>
<path d={mdiRewind}></path>
</SvgIcon>
);
};
92 changes: 76 additions & 16 deletions src/routes/player/videoPlayer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,27 @@ import { appWindow } from "@tauri-apps/api/window";
import AppBar from "@mui/material/AppBar";
import Toolbar from "@mui/material/Toolbar";
import Box from "@mui/material/Box";
import Stack from "@mui/material/Stack";
import IconButton from "@mui/material/IconButton";
import Typography from "@mui/material/Typography";

import ReactPlayer from "react-player";

import { usePlaybackStore } from "../../utils/store/playback";
import { MdiArrowLeft } from "../../components/icons/mdiArrowLeft";
import { MdiPlay } from "../../components/icons/mdiPlay";

import { useNavigate } from "react-router-dom";
import { useRef, useState, useCallback } from "react";
import { secToTicks, ticksToSec } from "../../utils/date/time";

import { getPlaystateApi } from "@jellyfin/sdk/lib/utils/api/playstate-api";

import "./videoPlayer.module.scss";
import { MdiPause } from "../../components/icons/mdiPause";
import { MdiFastForward } from "../../components/icons/mdiFastForward";
import { MdiRewind } from "../../components/icons/mdiRewind";

export const VideoPlayer = () => {
const navigate = useNavigate();

Expand Down Expand Up @@ -54,32 +61,85 @@ export const VideoPlayer = () => {
state.itemName,
],
);

let timer;
return (
<Box sx={{ background: "black" }}>
<AppBar
position="fixed"
elevation={0}
<Box
className="video"
sx={{ background: "black" }}
onMouseMove={(e) => {
let a = "he";
clearTimeout(timer);
e.currentTarget.classList.add("video-osd-visible");
timer = setTimeout(() => {
document
.querySelector(".video")
.classList.remove("video-osd-visible");
}, 2000);
}}
>
<Stack
className="video-osd"
sx={{
background:
"linear-gradient(to bottom, rgb(0 0 0 / 0.75), transparent)",
position: "fixed",
top: 0,
left: 0,
right: 0,
bottom: 0,
}}
alignItems="center"
justifyContent="space-between"
direction="column"
zIndex="10000000"
>
<Toolbar>
<IconButton onClick={() => navigate(-1)}>
<MdiArrowLeft />
<AppBar
position="static"
elevation={0}
sx={{
background:
"linear-gradient(to bottom, rgb(0 0 0 / 0.75), transparent)",
}}
>
<Toolbar>
<IconButton onClick={() => navigate(-1)}>
<MdiArrowLeft />
</IconButton>
<Typography ml={2} variant="h6">
{itemName}
</Typography>
</Toolbar>
</AppBar>
<Stack padding={2} direction="row">
<IconButton
onClick={() =>
playerRef.current.seekTo(
playerRef.current.getCurrentTime() - 15,
)
}
>
<MdiRewind />
</IconButton>
<IconButton onClick={() => setIsPlaying(!isPlaying)}>
{isPlaying ? <MdiPause /> : <MdiPlay />}
</IconButton>
<IconButton
onClick={() =>
playerRef.current.seekTo(
playerRef.current.getCurrentTime() + 15,
)
}
>
<MdiFastForward />
</IconButton>
<Typography ml={2} variant="h6">
{itemName}
</Typography>
</Toolbar>
</AppBar>
</Stack>
</Stack>
<ReactPlayer
ref={playerRef}
width="100vw"
height="100vh"
playing={true}
playing={isPlaying}
url={url}
controls={true}
// controls={true}
onProgress={onProgress}
onReady={onReady}
muted={isMuted}
Expand Down
11 changes: 11 additions & 0 deletions src/routes/player/videoPlayer.module.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/** @format */

.video {
&-osd {
opacity: 0;
transition: opacity 0.1s linear;
}
&-osd-visible &-osd {
opacity: 1;
}
}

0 comments on commit 7137cbc

Please sign in to comment.