diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 49480428e..9bf0b5726 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -465,5 +465,7 @@ "answeredACall": "Call with $name$", "trimDatabase": "Trim Database", "trimDatabaseDescription": "Reduces your message database size to your last 10,000 messages.", - "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?" + "trimDatabaseConfirmationBody": "Are you sure you want to delete your $deleteAmount$ oldest received messages?", + "reportAsSpam": "REPORT AS SPAM", + "respondingToRequestWarning": "Sending a message to this user will automatically accept their message request and reveal your Session ID." } diff --git a/stylesheets/_session_left_pane.scss b/stylesheets/_session_left_pane.scss index 7b217c829..331e71ec6 100644 --- a/stylesheets/_session_left_pane.scss +++ b/stylesheets/_session_left_pane.scss @@ -132,6 +132,7 @@ $session-compose-margin: 20px; align-items: center; overflow-y: auto; overflow-x: hidden; + justify-content: space-between; .session-icon .exit { padding: 13px; diff --git a/ts/components/conversation/SessionConversation.tsx b/ts/components/conversation/SessionConversation.tsx index 7b77a89eb..b7c48c6f6 100644 --- a/ts/components/conversation/SessionConversation.tsx +++ b/ts/components/conversation/SessionConversation.tsx @@ -34,7 +34,7 @@ import { addStagedAttachmentsInConversation } from '../../state/ducks/stagedAtta import { MIME } from '../../types'; import { AttachmentTypeWithPath } from '../../types/Attachment'; import { arrayBufferToObjectURL, AttachmentUtil, GoogleChrome } from '../../util'; -import { SessionButtonColor } from '../basic/SessionButton'; +import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton'; import { MessageView } from '../MainViewController'; import { ConversationHeaderWithDetails } from './ConversationHeader'; import { MessageDetail } from './message/message-item/MessageDetail'; @@ -47,6 +47,11 @@ import { } from '../../types/attachments/VisualAttachment'; import { blobToArrayBuffer } from 'blob-util'; import { MAX_ATTACHMENT_FILESIZE_BYTES } from '../../session/constants'; +import { useSelector } from 'react-redux'; +import { getOverlayMode } from '../../state/selectors/section'; +import styled from 'styled-components'; +import { Flex } from '../basic/Flex'; +import { blockConvoById } from '../../interactions/conversationInteractions'; // tslint:disable: jsx-curly-spacing interface State { @@ -221,6 +226,12 @@ export class SessionConversation extends React.Component { return ; } + // // TODO: refactor component and use overlay hook + // const overlayMode = useSelector(getOverlayMode); + // // either use overlayMode == messageRequest or use Conversation.isAPproved === false; + const conversation = getConversationController().get(selectedConversation.id); + const isApproved = conversation.isApproved(); + const selectionMode = selectedMessages.length > 0; return ( @@ -241,6 +252,36 @@ export class SessionConversation extends React.Component { {lightBoxOptions?.media && this.renderLightBox(lightBoxOptions)}
+ {!isApproved && ( + +
+ { + getConversationController() + .get(selectedConversation.id) + .setIsApproved(true); + }} + text={window.i18n('accept')} + /> + { + getConversationController(); + blockConvoById(selectedConversation.id); + }} + /> +
+ +
+ )} } bottom={ @@ -252,6 +293,14 @@ export class SessionConversation extends React.Component { {isDraggingFile && }
+ {!isApproved && ( + + + {window.i18n('respondingToRequestWarning')} + + + )} + { if (!MIME.isJPEG(contentType)) { const urlImage = URL.createObjectURL(file); diff --git a/ts/components/leftpane/overlay/OverlayMessageRequest.tsx b/ts/components/leftpane/overlay/OverlayMessageRequest.tsx index 2708db53c..0181e9b0e 100644 --- a/ts/components/leftpane/overlay/OverlayMessageRequest.tsx +++ b/ts/components/leftpane/overlay/OverlayMessageRequest.tsx @@ -7,7 +7,6 @@ import { getConversationRequests } from '../../../state/selectors/conversations' import { MemoConversationListItemWithDetails } from '../conversation-list-item/ConversationListItem'; import styled from 'styled-components'; import { SessionButton, SessionButtonColor, SessionButtonType } from '../../basic/SessionButton'; -import { OverlayHeader } from './OverlayHeader'; import { setOverlayMode } from '../../../state/ducks/section'; import { getConversationController } from '../../../session/conversations'; import { forceSyncConfigurationNowIfNeeded } from '../../../session/utils/syncUtils'; @@ -76,7 +75,7 @@ export const OverlayMessageRequest = () => { { diff --git a/ts/types/LocalizerKeys.ts b/ts/types/LocalizerKeys.ts index cf1da1f11..d977299e3 100644 --- a/ts/types/LocalizerKeys.ts +++ b/ts/types/LocalizerKeys.ts @@ -465,4 +465,6 @@ export type LocalizerKeys = | 'trimDatabase' | 'trimDatabaseDescription' | 'trimDatabaseConfirmationBody' + | 'reportAsSpam' + | 'respondingToRequestWarning' | 'reportIssue';