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,
name,
showName,
href,
poster,
chapters,
subtitles,
@ -73,11 +72,11 @@ export const Hover = ({
fonts,
previousSlug,
nextSlug,
qualitiesAvailables = true,
}: {
isLoading: boolean;
name?: string | null;
showName?: string;
href?: string;
poster?: KyooImage | null;
chapters?: Chapter[];
subtitles?: Subtitle[];
@ -85,6 +84,7 @@ export const Hover = ({
fonts?: string[];
previousSlug?: string | null;
nextSlug?: string | null;
qualitiesAvailables?: boolean;
}) => {
const show = useAtomValue(hoverAtom);
const setHover = useSetAtom(hoverReasonAtom);
@ -162,6 +162,7 @@ export const Hover = ({
subtitles={subtitles}
audios={audios}
fonts={fonts}
qualitiesAvailables={qualitiesAvailables}
onMenuOpen={() => setHover((x) => ({ ...x, menuOpened: true }))}
onMenuClose={() => {
// 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 { fullscreenAtom, subtitleAtom } from "../state";
import { AudiosMenu, QualitiesMenu } from "../video";
import i18next from "i18next";
export const RightButtons = ({
audios,
@ -39,6 +38,7 @@ export const RightButtons = ({
fonts,
onMenuOpen,
onMenuClose,
qualitiesAvailables,
...props
}: {
audios?: Audio[];
@ -46,6 +46,7 @@ export const RightButtons = ({
fonts?: string[];
onMenuOpen: () => void;
onMenuClose: () => void;
qualitiesAvailables: boolean;
} & Stylable) => {
const { css } = useYoshiki();
const { t } = useTranslation();
@ -90,14 +91,16 @@ export const RightButtons = ({
{...tooltip(t("player.audios"), true)}
{...spacing}
/>
<QualitiesMenu
Trigger={IconButton}
icon={SettingsIcon}
onMenuOpen={onMenuOpen}
onMenuClose={onMenuClose}
{...tooltip(t("player.quality"), true)}
{...spacing}
/>
{qualitiesAvailables && (
<QualitiesMenu
Trigger={IconButton}
icon={SettingsIcon}
onMenuOpen={onMenuOpen}
onMenuClose={onMenuClose}
{...tooltip(t("player.quality"), true)}
{...spacing}
/>
)}
{Platform.OS === "web" && (
<IconButton
icon={isFullscreen ? FullscreenExit : Fullscreen}

View File

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