import type { Ref } from 'vue'; import type { IVideoData, IVideoCard } from '../types'; import { AuthSteps } from '../runtime'; /** Управляет состоянием попапа добавления видео в плейлист; при неавторизованном пользователе открывает попап авторизации. */ export const usePlaylistAdd = () => { const videoCard = useState('playlist-add-card', () => null); const isPlaylistAdd = useState('playlist-add-open', () => false); const selectValue = useState('playlist-add-select', () => []); const step = useState<'add' | 'new'>('playlist-add-step', () => 'add'); const onBack = useState<(() => void) | null>('playlist-add-on-back', () => null); const { openAuthPopup } = useAuthPopup(); const openPlaylistAdd = (isAuthorized: Ref, card: IVideoCard | IVideoData, onBackCallback?: () => void) => { if (isAuthorized.value) { videoCard.value = card; isPlaylistAdd.value = true; onBack.value = onBackCallback ?? null; } else { const authPopupText = 'register_first'; openAuthPopup(AuthSteps.Registration, authPopupText); } }; const closePlaylistAdd = () => { videoCard.value = null; isPlaylistAdd.value = false; step.value = 'add'; onBack.value = null; }; return { isPlaylistAdd, videoCard, openPlaylistAdd, closePlaylistAdd, selectValue, step, onBack, }; };