mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-06-02 12:08:37 +01:00
Compare commits
2 Commits
feat/playe
...
fix/contro
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f99400876b | ||
|
|
de5e323db4 |
@@ -110,6 +110,10 @@ export const Controls: FC<Props> = ({
|
|||||||
|
|
||||||
const [episodeView, setEpisodeView] = useState(false);
|
const [episodeView, setEpisodeView] = useState(false);
|
||||||
const [showAudioSlider, setShowAudioSlider] = useState(false);
|
const [showAudioSlider, setShowAudioSlider] = useState(false);
|
||||||
|
// Pause the controls auto-hide while the player settings popover is open so
|
||||||
|
// it can't be dismissed out from under the user (notably the iOS popover,
|
||||||
|
// which lives inside the controls and closes when they fade out).
|
||||||
|
const [settingsMenuOpen, setSettingsMenuOpen] = useState(false);
|
||||||
|
|
||||||
const { height: screenHeight, width: screenWidth } = useWindowDimensions();
|
const { height: screenHeight, width: screenWidth } = useWindowDimensions();
|
||||||
const { previousItem, nextItem } = usePlaybackManager({
|
const { previousItem, nextItem } = usePlaybackManager({
|
||||||
@@ -467,7 +471,7 @@ export const Controls: FC<Props> = ({
|
|||||||
episodeView,
|
episodeView,
|
||||||
onHideControls: hideControls,
|
onHideControls: hideControls,
|
||||||
timeout: CONTROLS_CONSTANTS.TIMEOUT,
|
timeout: CONTROLS_CONSTANTS.TIMEOUT,
|
||||||
disabled: true,
|
disabled: settingsMenuOpen,
|
||||||
});
|
});
|
||||||
|
|
||||||
const switchOnEpisodeMode = useCallback(() => {
|
const switchOnEpisodeMode = useCallback(() => {
|
||||||
@@ -528,6 +532,7 @@ export const Controls: FC<Props> = ({
|
|||||||
setPlaybackSpeed={setPlaybackSpeed}
|
setPlaybackSpeed={setPlaybackSpeed}
|
||||||
showTechnicalInfo={showTechnicalInfo}
|
showTechnicalInfo={showTechnicalInfo}
|
||||||
onToggleTechnicalInfo={onToggleTechnicalInfo}
|
onToggleTechnicalInfo={onToggleTechnicalInfo}
|
||||||
|
onSettingsMenuOpenChange={setSettingsMenuOpen}
|
||||||
/>
|
/>
|
||||||
</Animated.View>
|
</Animated.View>
|
||||||
<Animated.View
|
<Animated.View
|
||||||
|
|||||||
@@ -37,6 +37,9 @@ interface HeaderControlsProps {
|
|||||||
// Technical info props
|
// Technical info props
|
||||||
showTechnicalInfo?: boolean;
|
showTechnicalInfo?: boolean;
|
||||||
onToggleTechnicalInfo?: () => void;
|
onToggleTechnicalInfo?: () => void;
|
||||||
|
// Notifies the parent when the settings popover opens/closes so it can pause
|
||||||
|
// the controls auto-hide while the menu is up.
|
||||||
|
onSettingsMenuOpenChange?: (open: boolean) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const HeaderControls: FC<HeaderControlsProps> = ({
|
export const HeaderControls: FC<HeaderControlsProps> = ({
|
||||||
@@ -57,6 +60,7 @@ export const HeaderControls: FC<HeaderControlsProps> = ({
|
|||||||
setPlaybackSpeed,
|
setPlaybackSpeed,
|
||||||
showTechnicalInfo = false,
|
showTechnicalInfo = false,
|
||||||
onToggleTechnicalInfo,
|
onToggleTechnicalInfo,
|
||||||
|
onSettingsMenuOpenChange,
|
||||||
}) => {
|
}) => {
|
||||||
const { settings } = useSettings();
|
const { settings } = useSettings();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -117,6 +121,7 @@ export const HeaderControls: FC<HeaderControlsProps> = ({
|
|||||||
setPlaybackSpeed={setPlaybackSpeed}
|
setPlaybackSpeed={setPlaybackSpeed}
|
||||||
showTechnicalInfo={showTechnicalInfo}
|
showTechnicalInfo={showTechnicalInfo}
|
||||||
onToggleTechnicalInfo={onToggleTechnicalInfo}
|
onToggleTechnicalInfo={onToggleTechnicalInfo}
|
||||||
|
onOpenChange={onSettingsMenuOpenChange}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ interface DropdownViewProps {
|
|||||||
setPlaybackSpeed?: (speed: number, scope: PlaybackSpeedScope) => void;
|
setPlaybackSpeed?: (speed: number, scope: PlaybackSpeedScope) => void;
|
||||||
showTechnicalInfo?: boolean;
|
showTechnicalInfo?: boolean;
|
||||||
onToggleTechnicalInfo?: () => void;
|
onToggleTechnicalInfo?: () => void;
|
||||||
|
/** Forwarded to the popover so the player can pause auto-hide while it's open. */
|
||||||
|
onOpenChange?: (open: boolean) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
const DropdownView = ({
|
const DropdownView = ({
|
||||||
@@ -27,6 +29,7 @@ const DropdownView = ({
|
|||||||
setPlaybackSpeed,
|
setPlaybackSpeed,
|
||||||
showTechnicalInfo = false,
|
showTechnicalInfo = false,
|
||||||
onToggleTechnicalInfo,
|
onToggleTechnicalInfo,
|
||||||
|
onOpenChange,
|
||||||
}: DropdownViewProps) => {
|
}: DropdownViewProps) => {
|
||||||
const { subtitleTracks, audioTracks } = useVideoContext();
|
const { subtitleTracks, audioTracks } = useVideoContext();
|
||||||
const { item, mediaSource } = usePlayerContext();
|
const { item, mediaSource } = usePlayerContext();
|
||||||
@@ -223,6 +226,7 @@ const DropdownView = ({
|
|||||||
groups={optionGroups}
|
groups={optionGroups}
|
||||||
trigger={trigger}
|
trigger={trigger}
|
||||||
expoUIConfig={{}}
|
expoUIConfig={{}}
|
||||||
|
onOpenChange={onOpenChange}
|
||||||
bottomSheetConfig={{
|
bottomSheetConfig={{
|
||||||
enablePanDownToClose: true,
|
enablePanDownToClose: true,
|
||||||
}}
|
}}
|
||||||
|
|||||||
Reference in New Issue
Block a user