import { useEffect, useRef } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { clsm } from '../../../../utils'; import { ChevronDown, ChevronUp } from '../../../../assets/icons'; import { STREAM_ACTION_NAME, BREAKPOINTS, PROFILE_COLORS_WITH_WHITE_TEXT } from '../../../../constants'; import { streamManager as $streamManagerContent } from '../../../../content'; import { useChannel } from '../../../../contexts/Channel'; import { useModal } from '../../../../contexts/Modal'; import { usePoll } from '../../../../contexts/StreamManagerActions/Poll'; import { useResponsiveDevice } from '../../../../contexts/ResponsiveDevice'; import Button from '../../../../components/Button'; import usePrompt from '../../../../hooks/usePrompt'; import PollContainer from './PollContainer'; import AnimatedVoteItems from './AnimatedVoteItems'; import { createAnimationProps, getDefaultBounceTransition } from '../../../../helpers/animationPropsHelper'; const $content = $streamManagerContent.stream_manager_actions[STREAM_ACTION_NAME.POLL]; const StreamerPoll = () => { const pollRef = useRef(null); const { isActive, question, dispatchPollState, isExpanded, totalVotes } = usePoll(); useEffect(() => { if (pollRef?.current) { dispatchPollState({ pollRef: pollRef.current }); } }, [dispatchPollState, isExpanded, pollRef]); const { channelData } = useChannel(); const { color } = channelData || {}; const textColor = PROFILE_COLORS_WITH_WHITE_TEXT.includes(color) ? 'white' : 'black'; const { currentBreakpoint } = useResponsiveDevice(); const { openModal } = useModal(); const showVotePercentage = currentBreakpoint <= BREAKPOINTS.xs ? true : false; const { isBlocked, onCancel, onConfirm } = usePrompt(isActive); useEffect(() => { if (isBlocked && isActive) { openModal({ content: { confirmText: $content.leave_page, isDestructive: true, message:

{$content.confirm_leave_page}

}, onConfirm, onCancel }); } }, [isBlocked, onCancel, onConfirm, openModal, isActive]); return (

{question}

{`${$content.total_votes}: ${totalVotes.toLocaleString()}`}

); }; export default StreamerPoll;