import { useState } from 'react'; import { useDispatch } from 'react-redux'; import styled from 'styled-components'; import { useMessageReactsPropsById } from '../../hooks/useParamSelector'; import { clearSogsReactionByServerId } from '../../session/apis/open_group_api/sogsv3/sogsV3ClearReaction'; import { getConversationController } from '../../session/conversations'; import { updateReactClearAllModal } from '../../state/ducks/modalDialog'; import { SessionWrapperModal } from '../SessionWrapperModal'; import { Flex } from '../basic/Flex'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton'; import { SessionSpinner } from '../loading'; type Props = { reaction: string; messageId: string; }; const StyledButtonContainer = styled.div` div:first-child { margin-right: 0px; } div:not(:first-child) { margin-left: 20px; } `; const StyledReactClearAllContainer = styled(Flex)` margin: var(--margins-lg); .session-button { font-size: 16px; height: 36px; padding-top: 3px; } `; const StyledDescription = styled.div` font-size: var(--font-size-md); font-weight: 400; padding-bottom: var(--margins-lg); margin: var(--margins-md) auto; `; export const ReactClearAllModal = (props: Props) => { const { reaction, messageId } = props; const [clearingInProgress, setClearingInProgress] = useState(false); const dispatch = useDispatch(); const msgProps = useMessageReactsPropsById(messageId); if (!msgProps) { return <>; } const { convoId, serverId } = msgProps; const roomInfos = getConversationController().get(convoId).toOpenGroupV2(); const handleClose = () => { dispatch(updateReactClearAllModal(null)); }; const handleClearAll = async () => { if (roomInfos && serverId) { setClearingInProgress(true); await clearSogsReactionByServerId(reaction, serverId, roomInfos); setClearingInProgress(false); handleClose(); } else { window.log.warn('Error for batch removal of', reaction, 'on message', messageId); } }; return ( {window.i18n('emojiReactsClearAll', { emoji: reaction })} ); };