"use client"; import { ENDPOINTS } from "#/api/config"; import { useEffect } from "react"; import { _fetchAPI } from "./PlayerParsing"; import { useUserPlayerPreferencesStore } from "#/store/player"; import { numberDeclension } from "#/api/utils"; export interface Voiceover { id: number; name: string; icon: string; episodes_count: number; view_count: number; pinned: boolean; } interface VoiceoverSelectorMenuProps { release_id: number; token: string | null; setVoiceover: (state) => void; voiceover: Voiceover; voiceoverList: Voiceover[]; setPlayerError: (state) => void; } export const VoiceoverSelectorMenu = ({ release_id, token, setVoiceover, voiceover, voiceoverList, setPlayerError, }: VoiceoverSelectorMenuProps) => { const playerPreferenceStore = useUserPlayerPreferencesStore(); const preferredVO = playerPreferenceStore.getPreferredVoiceover(release_id); useEffect(() => { const __getInfo = async () => { let url = `${ENDPOINTS.release.episode}/${release_id}`; if (token) { url += `?token=${token}`; } const vo = await _fetchAPI( url, "Не удалось получить информацию о озвучках", setPlayerError, { 1: "Просмотр запрещён" } ); if (vo) { const selectedVO = vo.types.find((voiceover: Voiceover) => voiceover.name === preferredVO) || vo.types[0]; setVoiceover({ selected: selectedVO, available: vo.types, }); } }; __getInfo(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [release_id, token]); if (!voiceover) return <> return (

Озвучка

{voiceoverList && voiceoverList.length > 0 ? voiceoverList.map((vo: Voiceover) => { return ( ); }) : ""}
); };