diff --git a/app/javascript/mastodon/components/hashtag_menu.tsx b/app/javascript/mastodon/components/hashtag_menu.tsx index e64697a1f9f..28e3e02720b 100644 --- a/app/javascript/mastodon/components/hashtag_menu.tsx +++ b/app/javascript/mastodon/components/hashtag_menu.tsx @@ -1,3 +1,5 @@ +import { useCallback, useState } from 'react'; + import { FormattedMessage } from 'react-intl'; import { useHashtag } from '@/mastodon/hooks/useHashtag'; @@ -19,24 +21,33 @@ export const HashtagMenu: React.FC<{ accountId?: string; children?: React.ReactNode; }> = ({ tagId, accountId, children }) => { - const { tag, toggleFollow } = useHashtag(tagId); + const [wasMenuOpened, setWasMenuOpened] = useState(false); + const { tag, toggleFollow } = useHashtag(wasMenuOpened ? tagId : undefined); const account = useAppSelector((state) => selectPlainAccount(state, accountId), ); const { signedIn } = useIdentity(); - if (!tag) { - return null; - } + const handleMenuOpen = useCallback(() => { + setWasMenuOpened(true); + }, []); + + const tagName = tag?.name ?? tagId; + const tagNameForUrl = tag ? encodeURIComponent(tag.name) : tagId; return ( -