/** * Заглушка подписок на плейлисты: список тех, на которые подписан пользователь. * Ручек в API пока нет, поэтому состояние живёт только на клиенте и сбрасывается при перезагрузке. */ export const usePlaylistFollow = () => { const follows = useState('playlist-follows', () => []); const { show } = useSnackbar(); /** Возвращает true, если подписка оформлена, и false — если снята. */ function toggle(id: string) { const followed = !follows.value.includes(id); follows.value = followed ? [ ...follows.value, id ] : follows.value.filter(item => item !== id); return followed; } const isFollowing = (id: string) => follows.value.includes(id); // Снекбар — как у `UiFollowBtn`: отменять хочется только отписку, подписка и так видна // по состоянию пункта меню. const toggleFollow = (id: string, name = '') => { if (toggle(id)) return; show('unfollowed', { icon: 'minus', highlight: name, onAction: () => toggle(id), }); }; return { follows, isFollowing, toggleFollow, /** Переключение без снекбара — для `UiFollowBtn`, который показывает его сам */ toggle, }; };