mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-05-17 07:21:58 +00:00
feat: add player lock button
This commit is contained in:
parent
56b292f79a
commit
fbc32bcd22
1 changed files with 93 additions and 74 deletions
|
|
@ -30,6 +30,7 @@ import { useSettings } from '../../hooks/useSettings';
|
|||
|
||||
// Shared Components
|
||||
import { GestureControls, PauseOverlay, SpeedActivatedOverlay } from './components';
|
||||
import { LockOverlay, LockOverlayRef } from './modals/LockOverlay';
|
||||
import LoadingOverlay from './modals/LoadingOverlay';
|
||||
import PlayerControls from './controls/PlayerControls';
|
||||
import { AudioTrackModal } from './modals/AudioTrackModal';
|
||||
|
|
@ -91,6 +92,8 @@ const AndroidVideoPlayer: React.FC = () => {
|
|||
const mpvPlayerRef = useRef<MpvPlayerRef>(null);
|
||||
const exoPlayerRef = useRef<any>(null);
|
||||
const pinchRef = useRef(null);
|
||||
const lockOverlayRef = useRef<LockOverlayRef>(null);
|
||||
const [isLocked, setIsLocked] = useState(false);
|
||||
const tracksHook = usePlayerTracks();
|
||||
|
||||
const [currentStreamUrl, setCurrentStreamUrl] = useState<string>(uri);
|
||||
|
|
@ -271,7 +274,6 @@ const AndroidVideoPlayer: React.FC = () => {
|
|||
|
||||
const nextEpisodeHook = useNextEpisode(type, season, episode, groupedEpisodes, (metadataResult as any)?.groupedEpisodes, episodeId);
|
||||
|
||||
|
||||
const { segments: skipIntervals, outroSegment } = useSkipSegments({
|
||||
imdbId: resolvedImdbId || (id?.startsWith('tt') ? id : undefined),
|
||||
type,
|
||||
|
|
@ -1047,6 +1049,7 @@ const AndroidVideoPlayer: React.FC = () => {
|
|||
controlsVisible={playerState.showControls}
|
||||
controlsExtraOffset={100}
|
||||
/>
|
||||
<View pointerEvents={isLocked ? 'none' : 'box-none'} style={StyleSheet.absoluteFill}>
|
||||
<GestureControls
|
||||
screenDimensions={playerState.screenDimensions}
|
||||
gestureControls={gestureControls}
|
||||
|
|
@ -1070,6 +1073,7 @@ const AndroidVideoPlayer: React.FC = () => {
|
|||
seekToTime={controlsHook.seekToTime}
|
||||
formatTime={formatTime}
|
||||
/>
|
||||
</View>
|
||||
|
||||
{/* Buffering Indicator (Visible when controls are hidden) */}
|
||||
{playerState.isBuffering && !playerState.showControls && (
|
||||
|
|
@ -1078,6 +1082,7 @@ const AndroidVideoPlayer: React.FC = () => {
|
|||
</View>
|
||||
)}
|
||||
|
||||
<View pointerEvents={isLocked ? 'none' : 'box-none'} style={StyleSheet.absoluteFill}>
|
||||
<PlayerControls
|
||||
showControls={playerState.showControls}
|
||||
fadeAnim={fadeAnim}
|
||||
|
|
@ -1130,6 +1135,20 @@ const AndroidVideoPlayer: React.FC = () => {
|
|||
onEnterPictureInPicture={handleEnterPictureInPicture}
|
||||
isBuffering={playerState.isBuffering}
|
||||
imdbId={resolvedImdbId}
|
||||
onLock={() => lockOverlayRef.current?.lock()}
|
||||
/>
|
||||
</View>
|
||||
|
||||
<LockOverlay
|
||||
ref={lockOverlayRef}
|
||||
onHideControls={() => {
|
||||
setIsLocked(true);
|
||||
playerState.setShowControls(false);
|
||||
}}
|
||||
onShowControls={() => {
|
||||
setIsLocked(false);
|
||||
playerState.setShowControls(true);
|
||||
}}
|
||||
/>
|
||||
|
||||
<SpeedActivatedOverlay
|
||||
|
|
|
|||
Loading…
Reference in a new issue