diff --git a/app/javascript/mastodon/components/follow_button.tsx b/app/javascript/mastodon/components/follow_button.tsx
index f49abfd2b3..4a22bb1c3f 100644
--- a/app/javascript/mastodon/components/follow_button.tsx
+++ b/app/javascript/mastodon/components/follow_button.tsx
@@ -16,8 +16,7 @@ const messages = defineMessages({
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
follow: { id: 'account.follow', defaultMessage: 'Follow' },
followBack: { id: 'account.follow_back', defaultMessage: 'Follow back' },
- mutual: { id: 'account.mutual', defaultMessage: 'Mutual' },
- edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' },
+ editProfile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' },
});
export const FollowButton: React.FC<{
@@ -73,11 +72,9 @@ export const FollowButton: React.FC<{
if (!signedIn) {
label = intl.formatMessage(messages.follow);
} else if (accountId === me) {
- label = intl.formatMessage(messages.edit_profile);
+ label = intl.formatMessage(messages.editProfile);
} else if (!relationship) {
label = ;
- } else if (relationship.following && relationship.followed_by) {
- label = intl.formatMessage(messages.mutual);
} else if (relationship.following || relationship.requested) {
label = intl.formatMessage(messages.unfollow);
} else if (relationship.followed_by) {
diff --git a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx
index 9505d48010..ae1724a728 100644
--- a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx
+++ b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx
@@ -37,10 +37,10 @@ import {
FollowingCounter,
StatusesCounter,
} from 'mastodon/components/counters';
+import { FollowButton } from 'mastodon/components/follow_button';
import { FormattedDateWrapper } from 'mastodon/components/formatted_date';
import { Icon } from 'mastodon/components/icon';
import { IconButton } from 'mastodon/components/icon_button';
-import { LoadingIndicator } from 'mastodon/components/loading_indicator';
import { ShortNumber } from 'mastodon/components/short_number';
import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container';
import { DomainPill } from 'mastodon/features/account/components/domain_pill';
@@ -51,7 +51,6 @@ import { useIdentity } from 'mastodon/identity_context';
import { autoPlayGif, me, domain as localDomain } from 'mastodon/initial_state';
import type { Account } from 'mastodon/models/account';
import type { DropdownMenu } from 'mastodon/models/dropdown_menu';
-import type { Relationship } from 'mastodon/models/relationship';
import {
PERMISSION_MANAGE_USERS,
PERMISSION_MANAGE_FEDERATION,
@@ -179,20 +178,6 @@ const titleFromAccount = (account: Account) => {
return `${prefix} (@${acct})`;
};
-const messageForFollowButton = (relationship?: Relationship) => {
- if (!relationship) return messages.follow;
-
- if (relationship.get('following') && relationship.get('followed_by')) {
- return messages.mutual;
- } else if (relationship.get('following') || relationship.get('requested')) {
- return messages.unfollow;
- } else if (relationship.get('followed_by')) {
- return messages.followBack;
- } else {
- return messages.follow;
- }
-};
-
const dateFormatOptions: Intl.DateTimeFormatOptions = {
month: 'short',
day: 'numeric',
@@ -215,20 +200,6 @@ export const AccountHeader: React.FC<{
const hidden = useAppSelector((state) => getAccountHidden(state, accountId));
const handleLinkClick = useLinks();
- const handleFollow = useCallback(() => {
- if (!account) {
- return;
- }
-
- if (relationship?.following || relationship?.requested) {
- dispatch(
- openModal({ modalType: 'CONFIRM_UNFOLLOW', modalProps: { account } }),
- );
- } else {
- dispatch(followAccount(account.id));
- }
- }, [dispatch, account, relationship]);
-
const handleBlock = useCallback(() => {
if (!account) {
return;
@@ -365,23 +336,6 @@ export const AccountHeader: React.FC<{
);
}, [dispatch, account]);
- const handleInteractionModal = useCallback(() => {
- if (!account) {
- return;
- }
-
- dispatch(
- openModal({
- modalType: 'INTERACTION',
- modalProps: {
- type: 'follow',
- accountId: account.id,
- url: account.uri,
- },
- }),
- );
- }, [dispatch, account]);
-
const handleOpenAvatar = useCallback(
(e: React.MouseEvent) => {
if (e.button !== 0 || e.ctrlKey || e.metaKey) {
@@ -417,10 +371,6 @@ export const AccountHeader: React.FC<{
});
}, [account]);
- const handleEditProfile = useCallback(() => {
- window.open('/settings/profile', '_blank');
- }, []);
-
const handleMouseEnter = useCallback(
({ currentTarget }: React.MouseEvent) => {
if (autoPlayGif) {
@@ -680,9 +630,12 @@ export const AccountHeader: React.FC<{
return null;
}
- let actionBtn, bellBtn, lockedIcon, shareBtn;
+ let actionBtn: React.ReactNode,
+ bellBtn: React.ReactNode,
+ lockedIcon: React.ReactNode,
+ shareBtn: React.ReactNode;
- const info = [];
+ const info: React.ReactNode[] = [];
if (me !== account.id && relationship?.blocking) {
info.push(
@@ -750,43 +703,17 @@ export const AccountHeader: React.FC<{
);
}
- if (me !== account.id) {
- if (signedIn && !relationship) {
- // Wait until the relationship is loaded
- actionBtn = (
-
- );
- } else if (!relationship?.blocking) {
- actionBtn = (
-
- );
- } else {
- actionBtn = (
-
- );
- }
- } else {
+ if (relationship?.blocking) {
actionBtn = (
);
+ } else {
+ actionBtn = ;
}
if (account.moved && !relationship?.following) {