From 19b4078af6df0a8055996722ac74065c2419fcaa Mon Sep 17 00:00:00 2001 From: "P. Reis" Date: Wed, 4 Dec 2024 20:33:35 -0300 Subject: [PATCH] refactor: create useMentionCompose hook, used in PureStatus component --- src/components/pure-status.tsx | 7 ++++--- src/hooks/useMentionCompose.ts | 13 +++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 src/hooks/useMentionCompose.ts diff --git a/src/components/pure-status.tsx b/src/components/pure-status.tsx index 7724d5058..d7cb46e3f 100644 --- a/src/components/pure-status.tsx +++ b/src/components/pure-status.tsx @@ -6,7 +6,6 @@ import { useCallback, useEffect, useRef, useState } from 'react'; import { useIntl, FormattedMessage, defineMessages } from 'react-intl'; import { Link, useHistory } from 'react-router-dom'; -import { mentionCompose } from 'soapbox/actions/compose.ts'; import { openModal } from 'soapbox/actions/modals.ts'; import { unfilterStatus } from 'soapbox/actions/statuses.ts'; import TranslateButton from 'soapbox/components/translate-button.tsx'; @@ -21,6 +20,7 @@ import { HotKeys } from 'soapbox/features/ui/components/hotkeys.tsx'; import { useAppDispatch } from 'soapbox/hooks/useAppDispatch.ts'; import { useAppSelector } from 'soapbox/hooks/useAppSelector.ts'; import { useFavourite } from 'soapbox/hooks/useFavourite.ts'; +import { useMentionCompose } from 'soapbox/hooks/useMentionCompose.ts'; import { useReblog } from 'soapbox/hooks/useReblog.ts'; import { useReplyCompose } from 'soapbox/hooks/useReplyCompose.ts'; import { useSettings } from 'soapbox/hooks/useSettings.ts'; @@ -106,6 +106,7 @@ const PureStatus: React.FC = (props) => { const filtered = (status.filtered.length || actualStatus.filtered.length) > 0; const { replyCompose } = useReplyCompose(); + const { mentionCompose } = useMentionCompose(); const { toggleFavourite } = useFavourite(); const { toggleReblog } = useReblog(); const { toggleStatusHidden } = useStatusHidden(); @@ -183,13 +184,13 @@ const PureStatus: React.FC = (props) => { if ((e && e.shiftKey) || !boostModal) { modalReblog(); } else { - dispatch(openModal('BOOST', { status: statusImmutable, onReblog: modalReblog })); // fix later + dispatch(openModal('BOOST', { status: statusImmutable, onReblog: modalReblog })); // fix later, ReplyIndicator component: status.emojis.toJS is not a function } }; const handleHotkeyMention = (e?: KeyboardEvent): void => { e?.preventDefault(); - dispatch(mentionCompose(actualStatus.account)); + mentionCompose(actualStatus.account); }; const handleHotkeyOpen = (): void => { diff --git a/src/hooks/useMentionCompose.ts b/src/hooks/useMentionCompose.ts new file mode 100644 index 000000000..1c022f8f3 --- /dev/null +++ b/src/hooks/useMentionCompose.ts @@ -0,0 +1,13 @@ +import { mentionCompose as mentionComposeAction } from 'soapbox/actions/compose.ts'; +import { EntityTypes, Entities } from 'soapbox/entity-store/entities.ts'; +import { useAppDispatch } from 'soapbox/hooks/useAppDispatch.ts'; + +export function useMentionCompose() { + const dispatch = useAppDispatch(); + + const mentionCompose = (account: EntityTypes[Entities.ACCOUNTS]) => { + dispatch(mentionComposeAction(account)); + }; + + return { mentionCompose }; +} \ No newline at end of file