import { PlaylistStep } from '../runtime'; import type { IVideoCard, IPlaylistCard } from '../types'; /** Управляет состоянием попапа редактирования плейлиста: шаги PlaylistStep, выбранный плейлист, возврат назад. */ export const usePlaylistEdit = () => { const deletedVideo = useState('playlist-edit-deleted-video', () => null); const selectedPlaylist = useState('playlist-edit-selected', () => undefined); const isPlaylistEditOpen = useState('playlist-edit-open', () => false); const isBackToEdit = useState('playlist-edit-back', () => false); const currentStep = useState('playlist-edit-step', () => PlaylistStep.Edit); /** Возврат к попапу, из которого открыли редактирование. */ const onBack = useState<(() => void) | null>('playlist-edit-on-back', () => null); const openPlaylistEdit = (step: PlaylistStep, back: boolean = false, playlist?: IPlaylistCard, videoCard?: IVideoCard) => { selectedPlaylist.value = playlist; isPlaylistEditOpen.value = true; currentStep.value = step; isBackToEdit.value = back; deletedVideo.value = videoCard; }; /** Закрывает попап целиком, минуя возврат на шаг редактирования. */ const closePlaylistEditAll = () => { isPlaylistEditOpen.value = false; isBackToEdit.value = false; selectedPlaylist.value = undefined; onBack.value = null; }; const closePlaylistEdit = () => { if (isBackToEdit.value) { openPlaylistEdit(PlaylistStep.Edit, false, selectedPlaylist.value); } else { closePlaylistEditAll(); } }; return { isPlaylistEditOpen, currentStep, openPlaylistEdit, closePlaylistEdit, closePlaylistEditAll, selectedPlaylist, onBack, deletedVideo, }; };