Disable qualities button for downloaded items

This commit is contained in:
Zoe Roux 2023-12-19 23:58:44 +01:00
parent d4ab42d98f
commit 2b005d6ea5
4 changed files with 22 additions and 20 deletions

View File

@ -65,7 +65,6 @@ export const Hover = ({
isLoading, isLoading,
name, name,
showName, showName,
href,
poster, poster,
chapters, chapters,
subtitles, subtitles,
@ -73,11 +72,11 @@ export const Hover = ({
fonts, fonts,
previousSlug, previousSlug,
nextSlug, nextSlug,
qualitiesAvailables = true,
}: { }: {
isLoading: boolean; isLoading: boolean;
name?: string | null; name?: string | null;
showName?: string; showName?: string;
href?: string;
poster?: KyooImage | null; poster?: KyooImage | null;
chapters?: Chapter[]; chapters?: Chapter[];
subtitles?: Subtitle[]; subtitles?: Subtitle[];
@ -85,6 +84,7 @@ export const Hover = ({
fonts?: string[]; fonts?: string[];
previousSlug?: string | null; previousSlug?: string | null;
nextSlug?: string | null; nextSlug?: string | null;
qualitiesAvailables?: boolean;
}) => { }) => {
const show = useAtomValue(hoverAtom); const show = useAtomValue(hoverAtom);
const setHover = useSetAtom(hoverReasonAtom); const setHover = useSetAtom(hoverReasonAtom);
@ -162,6 +162,7 @@ export const Hover = ({
subtitles={subtitles} subtitles={subtitles}
audios={audios} audios={audios}
fonts={fonts} fonts={fonts}
qualitiesAvailables={qualitiesAvailables}
onMenuOpen={() => setHover((x) => ({ ...x, menuOpened: true }))} onMenuOpen={() => setHover((x) => ({ ...x, menuOpened: true }))}
onMenuClose={() => { onMenuClose={() => {
// Disable hover since the menu overlay makes the mouseout unreliable. // Disable hover since the menu overlay makes the mouseout unreliable.

View File

@ -31,7 +31,6 @@ import MusicNote from "@material-symbols/svg-400/rounded/music_note-fill.svg";
import { Stylable, useYoshiki } from "yoshiki/native"; import { Stylable, useYoshiki } from "yoshiki/native";
import { fullscreenAtom, subtitleAtom } from "../state"; import { fullscreenAtom, subtitleAtom } from "../state";
import { AudiosMenu, QualitiesMenu } from "../video"; import { AudiosMenu, QualitiesMenu } from "../video";
import i18next from "i18next";
export const RightButtons = ({ export const RightButtons = ({
audios, audios,
@ -39,6 +38,7 @@ export const RightButtons = ({
fonts, fonts,
onMenuOpen, onMenuOpen,
onMenuClose, onMenuClose,
qualitiesAvailables,
...props ...props
}: { }: {
audios?: Audio[]; audios?: Audio[];
@ -46,6 +46,7 @@ export const RightButtons = ({
fonts?: string[]; fonts?: string[];
onMenuOpen: () => void; onMenuOpen: () => void;
onMenuClose: () => void; onMenuClose: () => void;
qualitiesAvailables: boolean;
} & Stylable) => { } & Stylable) => {
const { css } = useYoshiki(); const { css } = useYoshiki();
const { t } = useTranslation(); const { t } = useTranslation();
@ -90,14 +91,16 @@ export const RightButtons = ({
{...tooltip(t("player.audios"), true)} {...tooltip(t("player.audios"), true)}
{...spacing} {...spacing}
/> />
<QualitiesMenu {qualitiesAvailables && (
Trigger={IconButton} <QualitiesMenu
icon={SettingsIcon} Trigger={IconButton}
onMenuOpen={onMenuOpen} icon={SettingsIcon}
onMenuClose={onMenuClose} onMenuOpen={onMenuOpen}
{...tooltip(t("player.quality"), true)} onMenuClose={onMenuClose}
{...spacing} {...tooltip(t("player.quality"), true)}
/> {...spacing}
/>
)}
{Platform.OS === "web" && ( {Platform.OS === "web" && (
<IconButton <IconButton
icon={isFullscreen ? FullscreenExit : Fullscreen} icon={isFullscreen ? FullscreenExit : Fullscreen}

View File

@ -56,7 +56,6 @@ const mapData = (
isLoading: false, isLoading: false,
name: data.type === "movie" ? data.name : `${episodeDisplayNumber(data, "")} ${data.name}`, name: data.type === "movie" ? data.name : `${episodeDisplayNumber(data, "")} ${data.name}`,
showName: data.type === "movie" ? data.name! : data.show!.name, showName: data.type === "movie" ? data.name! : data.show!.name,
href: data ? (data.type === "movie" ? `/movie/${data.slug}` : `/show/${data.show!.slug}`) : "#",
poster: data.type === "movie" ? data.poster : data.show!.poster, poster: data.type === "movie" ? data.poster : data.show!.poster,
subtitles: info?.subtitles, subtitles: info?.subtitles,
audios: info?.audios, audios: info?.audios,
@ -64,6 +63,7 @@ const mapData = (
fonts: info?.fonts, fonts: info?.fonts,
previousSlug, previousSlug,
nextSlug, nextSlug,
qualitiesAvailables: !!data.links.hls
}; };
}; };

View File

@ -42,7 +42,7 @@ import NativeVideo, { OnLoadData, VideoProps } from "react-native-video";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { PlayMode, playModeAtom, subtitleAtom } from "./state"; import { PlayMode, playModeAtom, subtitleAtom } from "./state";
import uuid from "react-native-uuid"; import uuid from "react-native-uuid";
import { Pressable } from "react-native"; import { View } from "react-native";
import "@kyoo/primitives/src/types.d.ts"; import "@kyoo/primitives/src/types.d.ts";
import { useYoshiki } from "yoshiki/native"; import { useYoshiki } from "yoshiki/native";
@ -59,7 +59,7 @@ const audioAtom = atom(0);
const clientId = uuid.v4() as string; const clientId = uuid.v4() as string;
const Video = forwardRef<NativeVideo, VideoProps>(function Video( const Video = forwardRef<NativeVideo, VideoProps>(function Video(
{ onLoad, source, onPointerDown, subtitles, ...props }, { onLoad, onBuffer, source, onPointerDown, subtitles, ...props },
ref, ref,
) { ) {
const { css } = useYoshiki(); const { css } = useYoshiki();
@ -77,11 +77,7 @@ const Video = forwardRef<NativeVideo, VideoProps>(function Video(
}, [source]); }, [source]);
return ( return (
<Pressable <View {...css({ flexGrow: 1, flexShrink: 1 })}>
tabIndex={-1}
onPress={() => onPointerDown?.({ nativeEvent: { pointerType: "pointer" } } as any)}
{...css({ flexGrow: 1, flexShrink: 1 })}
>
<NativeVideo <NativeVideo
ref={ref} ref={ref}
source={{ source={{
@ -92,9 +88,11 @@ const Video = forwardRef<NativeVideo, VideoProps>(function Video(
}, },
}} }}
onLoad={(info) => { onLoad={(info) => {
onBuffer?.({ isBuffering: false });
setInfo(info); setInfo(info);
onLoad?.(info); onLoad?.(info);
}} }}
onBuffer={onBuffer}
selectedVideoTrack={video === -1 ? { type: "auto" } : { type: "resolution", value: video }} selectedVideoTrack={video === -1 ? { type: "auto" } : { type: "resolution", value: video }}
selectedAudioTrack={{ type: "index", value: audio }} selectedAudioTrack={{ type: "index", value: audio }}
textTracks={subtitles?.map((x) => ({ textTracks={subtitles?.map((x) => ({
@ -113,7 +111,7 @@ const Video = forwardRef<NativeVideo, VideoProps>(function Video(
} }
{...props} {...props}
/> />
</Pressable> </View>
); );
}); });