From 3512e607263efdf932075b8d2ce04e30a6e99ccb Mon Sep 17 00:00:00 2001 From: William Grant <willmgrant@gmail.com> Date: Thu, 8 Feb 2024 10:34:35 +1100 Subject: [PATCH] feat: add drop shadow to all selected message elements --- stylesheets/_modules.scss | 4 ++++ ts/components/conversation/H5AudioPlayer.tsx | 7 ++++++- .../message/message-content/MessageAttachment.tsx | 10 +++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/stylesheets/_modules.scss b/stylesheets/_modules.scss index 349b85b70..54391bce3 100644 --- a/stylesheets/_modules.scss +++ b/stylesheets/_modules.scss @@ -69,6 +69,10 @@ color: var(--message-bubbles-received-text-color); background: var(--message-bubbles-received-background-color); } + + &.message-selected { + box-shadow: var(--drop-shadow); + } } .module-message__generic-attachment__icon-container { diff --git a/ts/components/conversation/H5AudioPlayer.tsx b/ts/components/conversation/H5AudioPlayer.tsx index 490166f9f..2ace8bde9 100644 --- a/ts/components/conversation/H5AudioPlayer.tsx +++ b/ts/components/conversation/H5AudioPlayer.tsx @@ -5,6 +5,7 @@ import { useDispatch, useSelector } from 'react-redux'; import styled from 'styled-components'; import { useEncryptedFileFetch } from '../../hooks/useEncryptedFileFetch'; import { setNextMessageToPlayId } from '../../state/ducks/conversations'; +import { useMessageSelected } from '../../state/selectors'; import { getNextMessageToPlayId, getSortedMessagesOfSelectedConversation, @@ -25,7 +26,7 @@ const StyledSpeedButton = styled.div` } `; -export const StyledH5AudioPlayer = styled(H5AudioPlayer)` +export const StyledH5AudioPlayer = styled(H5AudioPlayer)<{ dropShadow?: boolean }>` &.rhap_container { min-width: 220px; padding: 0px; @@ -145,6 +146,8 @@ export const StyledH5AudioPlayer = styled(H5AudioPlayer)` height: 20px; margin-right: 0px; } + + ${props => props.dropShadow && 'box-shadow: var(--drop-shadow);'} `; export const AudioPlayerWithEncryptedFile = (props: { @@ -162,6 +165,7 @@ export const AudioPlayerWithEncryptedFile = (props: { const messageProps = useSelector(getSortedMessagesOfSelectedConversation); const nextMessageToPlayId = useSelector(getNextMessageToPlayId); const multiSelectMode = useSelector(isMessageSelectionMode); + const selected = useMessageSelected(messageId); const dataTestId = `audio-${messageId}`; @@ -263,6 +267,7 @@ export const AudioPlayerWithEncryptedFile = (props: { play: <SessionIcon iconType="play" iconSize="small" />, pause: <SessionIcon iconType="pause" iconSize="small" />, }} + dropShadow={selected} /> ); }; diff --git a/ts/components/conversation/message/message-content/MessageAttachment.tsx b/ts/components/conversation/message/message-content/MessageAttachment.tsx index db3d843d5..1eda378f5 100644 --- a/ts/components/conversation/message/message-content/MessageAttachment.tsx +++ b/ts/components/conversation/message/message-content/MessageAttachment.tsx @@ -11,6 +11,7 @@ import { toggleSelectedMessageId, } from '../../../../state/ducks/conversations'; import { StateType } from '../../../../state/reducer'; +import { useMessageSelected } from '../../../../state/selectors'; import { getMessageAttachmentProps, isMessageSelectionMode, @@ -72,6 +73,7 @@ export const MessageAttachment = (props: Props) => { ); const multiSelectMode = useSelector(isMessageSelectionMode); + const selected = useMessageSelected(messageId); const onClickOnImageGrid = useCallback( (attachment: AttachmentTypeWithPath | AttachmentType) => { if (multiSelectMode) { @@ -176,7 +178,13 @@ export const MessageAttachment = (props: Props) => { const extension = getExtensionForDisplay({ contentType, fileName }); return ( - <MessageHighlighter highlight={highlight} className="module-message__generic-attachment"> + <MessageHighlighter + highlight={highlight} + className={classNames( + 'module-message__generic-attachment', + selected ? 'message-selected' : undefined + )} + > {pending ? ( <div className="module-message__generic-attachment__spinner-container"> <Spinner size="small" />