diff options
| author | Factiven <[email protected]> | 2023-09-26 23:35:35 +0700 |
|---|---|---|
| committer | Factiven <[email protected]> | 2023-09-26 23:35:35 +0700 |
| commit | 20b8a7267827e3a07c1eef668c3b9c22fda43765 (patch) | |
| tree | 2fec9006dfac5737d8b227bf5ccce73880800cc2 /components/watch/player | |
| parent | Update release.md (diff) | |
| download | moopa-4.1.2.tar.xz moopa-4.1.2.zip | |
Update v4.1.2v4.1.2
Diffstat (limited to 'components/watch/player')
| -rw-r--r-- | components/watch/player/artplayer.js | 43 | ||||
| -rw-r--r-- | components/watch/player/playerComponent.js | 5 |
2 files changed, 45 insertions, 3 deletions
diff --git a/components/watch/player/artplayer.js b/components/watch/player/artplayer.js index 4eb766d..2ab4ded 100644 --- a/components/watch/player/artplayer.js +++ b/components/watch/player/artplayer.js @@ -1,7 +1,7 @@ import { useEffect, useRef } from "react"; import Artplayer from "artplayer"; import Hls from "hls.js"; -import { useWatchProvider } from "../../../lib/hooks/watchPageProvider"; +import { useWatchProvider } from "@/lib/context/watchPageProvider"; import { seekBackward, seekForward } from "./component/overlay"; import artplayerPluginHlsQuality from "artplayer-plugin-hls-quality"; @@ -10,6 +10,7 @@ export default function NewPlayer({ option, getInstance, provider, + track, defSub, defSize, subtitles, @@ -274,6 +275,46 @@ export default function NewPlayer({ ], }); + if ("mediaSession" in navigator) { + art.on("video:timeupdate", () => { + const session = navigator.mediaSession; + if (!session) return; + session.setPositionState({ + duration: art.duration, + playbackRate: art.playbackRate, + position: art.currentTime, + }); + }); + + navigator.mediaSession.setActionHandler("play", () => { + art.play(); + }); + + navigator.mediaSession.setActionHandler("pause", () => { + art.pause(); + }); + + navigator.mediaSession.setActionHandler("previoustrack", () => { + if (track?.prev) { + router.push( + `/en/anime/watch/${id}/${provider}?id=${encodeURIComponent( + track?.prev?.id + )}&num=${track?.prev?.number}` + ); + } + }); + + navigator.mediaSession.setActionHandler("nexttrack", () => { + if (track?.next) { + router.push( + `/en/anime/watch/${id}/${provider}?id=${encodeURIComponent( + track?.next?.id + )}&num=${track?.next?.number}` + ); + } + }); + } + playerRef.current = art; art.events.proxy(document, "keydown", (event) => { diff --git a/components/watch/player/playerComponent.js b/components/watch/player/playerComponent.js index 9fe9cd3..a524b79 100644 --- a/components/watch/player/playerComponent.js +++ b/components/watch/player/playerComponent.js @@ -1,9 +1,9 @@ import React, { useEffect, useState } from "react"; import NewPlayer from "./artplayer"; import { icons } from "./component/overlay"; -import { useWatchProvider } from "../../../lib/hooks/watchPageProvider"; +import { useWatchProvider } from "@/lib/context/watchPageProvider"; import { useRouter } from "next/router"; -import { useAniList } from "../../../lib/anilist/useAnilist"; +import { useAniList } from "@/lib/anilist/useAnilist"; export function calculateAspectRatio(width, height) { const gcd = (a, b) => (b === 0 ? a : gcd(b, a % b)); @@ -475,6 +475,7 @@ export default function PlayerComponent({ quality={source} option={option} provider={provider} + track={track} defSize={defSize} defSub={defSub} subSize={subSize} |