import { useContext, useMemo, useState } from 'react'; import { Box, Button, IconButton, Tooltip, useTheme, styled, useMediaQuery, } from '@mui/material'; import CloseIcon from '@mui/icons-material/Close'; import { ReactComponent as UnleashLogo } from 'assets/icons/logoBg.svg'; import { ReactComponent as UnleashLogoWhite } from 'assets/icons/logoWhiteBg.svg'; import AnimateOnMount from 'component/common/AnimateOnMount/AnimateOnMount'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { fadeInTopEnter, fadeInTopLeave, fadeInTopStart, } from 'themes/themeStyles'; import UIContext from 'contexts/UIContext'; import { PNPS_FEEDBACK_ID, showNPSFeedback, } from 'component/feedback/FeedbackNPS/showNPSFeedback'; import { useAuthFeedback } from 'hooks/api/getters/useAuth/useAuthFeedback'; import { useAuthFeedbackApi } from 'hooks/api/actions/useAuthFeedbackApi/useAuthFeedbackApi'; import { ThemeMode } from 'component/common/ThemeMode/ThemeMode'; const StyledHeader = styled('h3')(({ theme }) => ({ margin: 0, color: theme.palette.text.primary, marginLeft: theme.spacing(1), })); interface IFeedbackNPSProps { openUrl: string; } export const FeedbackNPS = ({ openUrl }: IFeedbackNPSProps) => { const { showFeedback, setShowFeedback } = useContext(UIContext); const { createFeedback, updateFeedback } = useAuthFeedbackApi(); const { feedback } = useAuthFeedback(); const [answeredNotNow, setAnsweredNotNow] = useState(false); const theme = useTheme(); const feedbackId = PNPS_FEEDBACK_ID; const isSmallScreen = useMediaQuery(theme.breakpoints.down('sm')); const animations = useMemo( () => ({ start: { ...fadeInTopStart(theme), zIndex: theme.zIndex.tooltip, right: theme.spacing(4), top: theme.spacing(2), left: 'auto', maxWidth: '400px', ...(isSmallScreen && { right: theme.spacing(3), left: theme.spacing(3), top: theme.spacing(5), display: 'flex', maxWidth: '600px', }), }, enter: fadeInTopEnter, leave: fadeInTopLeave, }), [theme, isSmallScreen] ); const onConfirm = async () => { try { await createFeedback({ feedbackId }); } catch (err) { console.warn(err); setShowFeedback(false); } // Await api call to register confirmation window.open(openUrl, '_blank'); setTimeout(() => { setShowFeedback(false); }, 200); }; const onDontShowAgain = async () => { try { await updateFeedback({ feedbackId, neverShow: true }); } catch (err) { console.warn(err); setShowFeedback(false); } setTimeout(() => { setShowFeedback(false); }, 100); }; if (!showNPSFeedback(feedback)) { return null; } return ( ({ position: 'absolute', right: theme.spacing(-4), top: theme.spacing(-4), })} onClick={() => setShowFeedback(false)} size="large" > } lightmode={} /> Unleash feedback Alright, apologies for the disruption. Have a nice day!

} elseShow={

Hi. Do you have 2 minutes to help us improve Unleash?{' '}

} /> Don't show again } elseShow={ <> } />
); };