|
|
@ -1,6 +1,6 @@
|
|
|
|
import { useSelector } from 'react-redux';
|
|
|
|
import { useSelector } from 'react-redux';
|
|
|
|
import styled from 'styled-components';
|
|
|
|
import styled from 'styled-components';
|
|
|
|
import { useIsIncomingRequest } from '../../hooks/useParamSelector';
|
|
|
|
import { useIsIncomingRequest, useIsOutgoingRequest } from '../../hooks/useParamSelector';
|
|
|
|
import {
|
|
|
|
import {
|
|
|
|
approveConvoAndSendResponse,
|
|
|
|
approveConvoAndSendResponse,
|
|
|
|
declineConversationWithConfirm,
|
|
|
|
declineConversationWithConfirm,
|
|
|
@ -9,7 +9,10 @@ import { getConversationController } from '../../session/conversations';
|
|
|
|
import { hasSelectedConversationIncomingMessages } from '../../state/selectors/conversations';
|
|
|
|
import { hasSelectedConversationIncomingMessages } from '../../state/selectors/conversations';
|
|
|
|
import { useSelectedConversationKey } from '../../state/selectors/selectedConversation';
|
|
|
|
import { useSelectedConversationKey } from '../../state/selectors/selectedConversation';
|
|
|
|
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
|
|
|
|
import { SessionButton, SessionButtonColor } from '../basic/SessionButton';
|
|
|
|
import { ConversationRequestExplanation } from './SubtleNotification';
|
|
|
|
import {
|
|
|
|
|
|
|
|
ConversationIncomingRequestExplanation,
|
|
|
|
|
|
|
|
ConversationOutgoingRequestExplanation,
|
|
|
|
|
|
|
|
} from './SubtleNotification';
|
|
|
|
|
|
|
|
|
|
|
|
const ConversationRequestBanner = styled.div`
|
|
|
|
const ConversationRequestBanner = styled.div`
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
@ -17,7 +20,7 @@ const ConversationRequestBanner = styled.div`
|
|
|
|
justify-content: center;
|
|
|
|
justify-content: center;
|
|
|
|
padding: var(--margins-lg);
|
|
|
|
padding: var(--margins-lg);
|
|
|
|
gap: var(--margins-lg);
|
|
|
|
gap: var(--margins-lg);
|
|
|
|
background-color: var(--background-secondary-color);
|
|
|
|
text-align: center;
|
|
|
|
`;
|
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
|
|
const ConversationBannerRow = styled.div`
|
|
|
|
const ConversationBannerRow = styled.div`
|
|
|
@ -77,45 +80,46 @@ export const ConversationMessageRequestButtons = () => {
|
|
|
|
|
|
|
|
|
|
|
|
const hasIncomingMessages = useSelector(hasSelectedConversationIncomingMessages);
|
|
|
|
const hasIncomingMessages = useSelector(hasSelectedConversationIncomingMessages);
|
|
|
|
const isIncomingRequest = useIsIncomingRequest(selectedConvoId);
|
|
|
|
const isIncomingRequest = useIsIncomingRequest(selectedConvoId);
|
|
|
|
|
|
|
|
const isOutgoingRequest = useIsOutgoingRequest(selectedConvoId);
|
|
|
|
|
|
|
|
|
|
|
|
if (!selectedConvoId || !hasIncomingMessages) {
|
|
|
|
if (!selectedConvoId || (!isIncomingRequest && !isOutgoingRequest)) {
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!isIncomingRequest) {
|
|
|
|
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<ConversationRequestBanner>
|
|
|
|
<ConversationRequestBanner>
|
|
|
|
<StyledBlockUserText
|
|
|
|
{isOutgoingRequest && !hasIncomingMessages ? (
|
|
|
|
onClick={() => {
|
|
|
|
<ConversationOutgoingRequestExplanation />
|
|
|
|
handleDeclineAndBlockConversationRequest(selectedConvoId, selectedConvoId);
|
|
|
|
) : (
|
|
|
|
}}
|
|
|
|
<>
|
|
|
|
data-testid="decline-and-block-message-request"
|
|
|
|
<StyledBlockUserText
|
|
|
|
>
|
|
|
|
onClick={() => {
|
|
|
|
{window.i18n('block')}
|
|
|
|
handleDeclineAndBlockConversationRequest(selectedConvoId, selectedConvoId);
|
|
|
|
</StyledBlockUserText>
|
|
|
|
}}
|
|
|
|
|
|
|
|
data-testid="decline-and-block-message-request"
|
|
|
|
<ConversationRequestExplanation />
|
|
|
|
>
|
|
|
|
|
|
|
|
{window.i18n('block')}
|
|
|
|
<ConversationBannerRow>
|
|
|
|
</StyledBlockUserText>
|
|
|
|
<SessionButton
|
|
|
|
<ConversationIncomingRequestExplanation />
|
|
|
|
onClick={async () => {
|
|
|
|
<ConversationBannerRow>
|
|
|
|
await handleAcceptConversationRequest(selectedConvoId);
|
|
|
|
<SessionButton
|
|
|
|
}}
|
|
|
|
onClick={async () => {
|
|
|
|
text={window.i18n('accept')}
|
|
|
|
await handleAcceptConversationRequest(selectedConvoId);
|
|
|
|
dataTestId="accept-message-request"
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
text={window.i18n('accept')}
|
|
|
|
<SessionButton
|
|
|
|
dataTestId="accept-message-request"
|
|
|
|
buttonColor={SessionButtonColor.Danger}
|
|
|
|
/>
|
|
|
|
text={window.i18n('decline')}
|
|
|
|
<SessionButton
|
|
|
|
onClick={() => {
|
|
|
|
buttonColor={SessionButtonColor.Danger}
|
|
|
|
handleDeclineConversationRequest(selectedConvoId, selectedConvoId);
|
|
|
|
text={window.i18n('decline')}
|
|
|
|
}}
|
|
|
|
onClick={() => {
|
|
|
|
dataTestId="decline-message-request"
|
|
|
|
handleDeclineConversationRequest(selectedConvoId, selectedConvoId);
|
|
|
|
/>
|
|
|
|
}}
|
|
|
|
</ConversationBannerRow>
|
|
|
|
dataTestId="decline-message-request"
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
</ConversationBannerRow>
|
|
|
|
|
|
|
|
</>
|
|
|
|
|
|
|
|
)}
|
|
|
|
</ConversationRequestBanner>
|
|
|
|
</ConversationRequestBanner>
|
|
|
|
);
|
|
|
|
);
|
|
|
|
};
|
|
|
|
};
|
|
|
|