@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
52 lines (47 loc) • 1.39 kB
text/typescript
import * as React from "react";
import { playerManager } from "../../../appUtils";
import { skipIf } from "../utils";
type Props = {
onClose: () => void;
onFullscreenPlayerWillPresent: () => void;
onFullscreenPlayerWillDismiss: () => void;
onEnded: () => void;
toggleLock: (event: { locked: boolean }) => void;
skipAllEffects: boolean;
isRunningPlayNext: boolean;
};
export const usePlayerManager = ({
onClose,
onFullscreenPlayerWillPresent,
onFullscreenPlayerWillDismiss,
onEnded,
toggleLock,
skipAllEffects,
isRunningPlayNext,
}: Props) => {
React.useEffect(
skipIf(skipAllEffects, () => {
playerManager
.on("close", onClose)
.on("onFullscreenPlayerWillPresent", onFullscreenPlayerWillPresent)
.on("onFullscreenPlayerWillDismiss", onFullscreenPlayerWillDismiss)
.on("ended", onEnded)
.on("toggleLock", toggleLock);
return () => {
playerManager
.removeHandler("close", onClose)
.removeHandler(
"onFullscreenPlayerWillPresent",
onFullscreenPlayerWillPresent
)
.removeHandler(
"onFullscreenPlayerWillDismiss",
onFullscreenPlayerWillDismiss
)
.removeHandler("ended", onEnded)
.removeHandler("toggleLock", onEnded);
};
}),
[skipAllEffects, isRunningPlayNext]
);
};