-
-
- {messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 && (
-
- )}
- {messageActions.indexOf(MESSAGE_ACTIONS.pin) > -1 && !message.parent_id && (
-
- )}
- {messageActions.indexOf(MESSAGE_ACTIONS.flag) > -1 && (
-
- )}
- {messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1 && (
-
- )}
- {messageActions.indexOf(MESSAGE_ACTIONS.edit) > -1 && (
-
- )}
- {messageActions.indexOf(MESSAGE_ACTIONS.delete) > -1 && (
-
- )}
+} & ComponentProps<'div'>;
+
+const UnMemoizedMessageActionsBox = React.forwardRef(
+
(
+ props: MessageActionsBoxProps,
+ ref: React.ForwardedRef,
+ ) => {
+ const {
+ getMessageActions,
+ handleDelete,
+ handleEdit,
+ handleFlag,
+ handleMute,
+ handlePin,
+ isUserMuted,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ mine,
+ open = false,
+ ...restDivProps
+ } = props;
+
+ const {
+ CustomMessageActionsList = DefaultCustomMessageActionsList,
+ } = useComponentContext('MessageActionsBox');
+ const { setQuotedMessage } = useChannelActionContext('MessageActionsBox');
+ const { customMessageActions, message } = useMessageContext(
+ 'MessageActionsBox',
+ );
+
+ const { t } = useTranslationContext('MessageActionsBox');
+
+ const messageActions = getMessageActions();
+
+ const handleQuote = () => {
+ setQuotedMessage(message);
+
+ const elements = message.parent_id
+ ? document.querySelectorAll('.str-chat__thread .str-chat__textarea__textarea')
+ : document.getElementsByClassName('str-chat__textarea__textarea');
+ const textarea = elements.item(0);
+
+ if (textarea instanceof HTMLTextAreaElement) {
+ textarea.focus();
+ }
+ };
+
+ const rootClassName = clsx('str-chat__message-actions-box', {
+ 'str-chat__message-actions-box--open': open,
+ });
+ const buttonClassName =
+ 'str-chat__message-actions-list-item str-chat__message-actions-list-item-button';
+
+ return (
+
+
+
+ {messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 && (
+
+ )}
+ {messageActions.indexOf(MESSAGE_ACTIONS.pin) > -1 && !message.parent_id && (
+
+ )}
+ {messageActions.indexOf(MESSAGE_ACTIONS.flag) > -1 && (
+
+ )}
+ {messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1 && (
+
+ )}
+ {messageActions.indexOf(MESSAGE_ACTIONS.edit) > -1 && (
+
+ )}
+ {messageActions.indexOf(MESSAGE_ACTIONS.delete) > -1 && (
+
+ )}
+
-
- );
-};
+ );
+ },
+);
/**
* A popup box that displays the available actions on a message, such as edit, delete, pin, etc.
diff --git a/src/components/MessageActions/__tests__/MessageActions.test.js b/src/components/MessageActions/__tests__/MessageActions.test.js
index 59fc85afdc..8c137a9e3a 100644
--- a/src/components/MessageActions/__tests__/MessageActions.test.js
+++ b/src/components/MessageActions/__tests__/MessageActions.test.js
@@ -72,18 +72,7 @@ describe('
component', () => {
data-testid="message-actions"
onClick={[Function]}
>
-
+
component', () => {
it('should open message actions box on click', () => {
const { getByTestId } = renderMessageActions();
- expect(MessageActionsBoxMock).toHaveBeenLastCalledWith(
+ expect(MessageActionsBoxMock).toHaveBeenCalledWith(
expect.objectContaining({ open: false }),
{},
);
@@ -254,18 +243,7 @@ describe('
component', () => {
data-testid="message-actions"
onClick={[Function]}
>
-
+
component', () => {
data-testid="message-actions"
onClick={[Function]}
>
-
+