aboutsummaryrefslogtreecommitdiff
path: root/components/watch/player
diff options
context:
space:
mode:
authorFactiven <[email protected]>2023-09-26 23:35:35 +0700
committerFactiven <[email protected]>2023-09-26 23:35:35 +0700
commit20b8a7267827e3a07c1eef668c3b9c22fda43765 (patch)
tree2fec9006dfac5737d8b227bf5ccce73880800cc2 /components/watch/player
parentUpdate release.md (diff)
downloadmoopa-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.js43
-rw-r--r--components/watch/player/playerComponent.js5
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}