@theoplayer/react-native-ui
Version:
A React Native UI for @theoplayer/react-native
40 lines (38 loc) • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useCurrentTime = void 0;
var _react = require("react");
var _reactNativeUi = require("@theoplayer/react-native-ui");
var _reactNativeTheoplayer = require("react-native-theoplayer");
const TIME_CHANGE_EVENTS = [_reactNativeTheoplayer.PlayerEventType.TIME_UPDATE, _reactNativeTheoplayer.PlayerEventType.SEEKING, _reactNativeTheoplayer.PlayerEventType.SEEKED];
/**
* Returns {@link react-native-theoplayer!THEOplayer.duration | the player's current time}, automatically updating whenever it changes.
*
* This hook must only be used in a component mounted inside a {@link THEOplayerDefaultUi} or {@link UiContainer},
* or alternatively any other component that provides a {@link PlayerContext}.
*
* @group Hooks
*/
const useCurrentTime = () => {
const {
player
} = (0, _react.useContext)(_reactNativeUi.PlayerContext);
const [currentTime, setCurrentTime] = (0, _react.useState)(player?.currentTime ?? 0);
const onTimeUpdate = (0, _react.useCallback)(() => {
if (player) {
setCurrentTime(player.currentTime);
}
}, [player]);
(0, _react.useEffect)(() => {
if (!player) return;
TIME_CHANGE_EVENTS.forEach(event => player.addEventListener(event, onTimeUpdate));
return () => {
TIME_CHANGE_EVENTS.forEach(event => player.removeEventListener(event, onTimeUpdate));
};
}, [player, onTimeUpdate]);
return currentTime;
};
exports.useCurrentTime = useCurrentTime;
//# sourceMappingURL=useCurrentTime.js.map