diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index 808f4d73bfc..2f66f154059 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -33,6 +33,7 @@ import StatusContent from './status_content'; import { StatusThreadLabel } from './status_thread_label'; import { CollectionPreviewCard } from '../features/collections/components/collection_preview_card'; import { compareUrls } from '../utils/compare_urls'; +import { FOCUS_TARGET } from './navigation_focus_target'; const domParser = new DOMParser(); @@ -311,9 +312,9 @@ class Status extends ImmutablePureComponent { window.open(path, '_blank', 'noopener'); } else { if (history.location.pathname.replace('/deck/', '/') === path) { - history.replace(path); + history.replace(path, {focusTarget: FOCUS_TARGET.POST}); } else { - history.push(path); + history.push(path, {focusTarget: FOCUS_TARGET.POST}); } } }; diff --git a/app/javascript/mastodon/features/notifications_v2/components/embedded_status.tsx b/app/javascript/mastodon/features/notifications_v2/components/embedded_status.tsx index 49bf364f055..e8a55bb3389 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/embedded_status.tsx +++ b/app/javascript/mastodon/features/notifications_v2/components/embedded_status.tsx @@ -8,6 +8,7 @@ import type { List as ImmutableList, RecordOf } from 'immutable'; import type { ApiMentionJSON } from '@/mastodon/api_types/statuses'; import { AnimateEmojiProvider } from '@/mastodon/components/emoji/context'; +import { FOCUS_TARGET } from '@/mastodon/components/navigation_focus_target'; import BarChart4BarsIcon from '@/material-icons/400-24px/bar_chart_4_bars.svg?react'; import PhotoLibraryIcon from '@/material-icons/400-24px/photo_library.svg?react'; import { toggleStatusSpoilers } from 'mastodon/actions/statuses'; @@ -67,7 +68,7 @@ export const EmbeddedStatus: React.FC<{ statusId: string }> = ({ const path = `/@${account.acct}/${statusId}`; if (button === 0 && !(ctrlKey || metaKey)) { - history.push(path); + history.push(path, { focusTarget: FOCUS_TARGET.POST }); } else if (button === 1 || (button === 0 && (ctrlKey || metaKey))) { window.open(path, '_blank', 'noopener'); } diff --git a/app/javascript/mastodon/features/status/index.jsx b/app/javascript/mastodon/features/status/index.jsx index db18964a3b9..69a62a36635 100644 --- a/app/javascript/mastodon/features/status/index.jsx +++ b/app/javascript/mastodon/features/status/index.jsx @@ -72,6 +72,7 @@ import ActionBar from './components/action_bar'; import { DetailedStatus } from './components/detailed_status'; import { RefreshController } from './components/refresh_controller'; import { quoteComposeById } from '@/mastodon/actions/compose_typed'; +import { FOCUS_TARGET, NavigationFocusTarget } from '@/mastodon/components/navigation_focus_target'; const messages = defineMessages({ revealAll: { id: 'status.show_more_all', defaultMessage: 'Show more for all' }, @@ -585,7 +586,13 @@ class Status extends ImmutablePureComponent { {ancestors} -
+ -
+
{descendants}