import { useMutation } from '@tanstack/react-query' import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import type { BumperFont, BumperSelection, BumperSettings, ChannelDto } from '@/shared/api/types' import { Button } from '@/shared/ui/button' import { Label } from '@/shared/ui/label' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/shared/ui/select' import { toast } from '@/shared/ui/toast-store' import { addBumperTemplate, updateChannelSettings } from '../api' import { BumperTemplateEditor } from './BumperTemplateEditor' import { CollapsibleCard } from './CollapsibleCard' export function BumperCard({ channel, onSaved, onError, }: { channel: ChannelDto onSaved: () => void onError: (e: unknown) => void }) { const { t } = useTranslation() const [bumpersEnabled, setBumpersEnabled] = useState(channel.bumpersEnabled) const [bumper, setBumper] = useState(channel.bumper) const setField = (key: K, value: BumperSettings[K]) => setBumper((prev) => ({ ...prev, [key]: value })) useEffect(() => { setBumpersEnabled(channel.bumpersEnabled) setBumper(channel.bumper) }, [channel]) // Общие настройки заставок сохраняются тем же эндпоинтом, что и настройки канала — остальные // поля берём из канала без изменений (они правятся в своей карточке). const save = useMutation({ mutationFn: () => updateChannelSettings(channel.id, { name: channel.name, isEnabled: channel.isEnabled, bumpersEnabled, bumper, fillerAssetId: channel.fillerAssetId, }), onSuccess: () => { toast.success(t('settings.saved')) onSaved() }, onError, }) const addTemplate = useMutation({ mutationFn: () => addBumperTemplate(channel.id, ''), onSuccess: onSaved, onError, }) const templates = [...channel.bumperTemplates].sort((a, b) => a.position - b.position) return ( {/* Общие настройки. Как часто ставить заставку — не здесь: это условие элемента стыка. */}

{t('admin.channels.bumperConditionsHint')}

{/* Блоки заставок */}

{t('admin.channels.bumperTemplates')}

{t('admin.channels.bumperTemplatesHint')}

{templates.map((template) => ( ))}
) }