diff --git a/lib/shared/relationship-utils.js b/lib/shared/relationship-utils.js --- a/lib/shared/relationship-utils.js +++ b/lib/shared/relationship-utils.js @@ -77,9 +77,34 @@ invariant(false, 'relationshipButton conditions should be exhaustive'); } +function getRelationshipActionText( + relationshipButton: RelationshipButton, + username: string, +): string { + switch (relationshipButton) { + case relationshipButtons.BLOCK: + return `Block ${username}`; + case relationshipButtons.FRIEND: + return `Add ${username} to friends`; + case relationshipButtons.UNFRIEND: + return `Unfriend ${username}`; + case relationshipButtons.UNBLOCK: + return `Unblock ${username}`; + case relationshipButtons.ACCEPT: + return `Accept friend request from ${username}`; + case relationshipButtons.REJECT: + return `Reject friend request from ${username}`; + case relationshipButtons.WITHDRAW: + return `Withdraw request to friend ${username}`; + default: + invariant(false, 'invalid relationshipButton value'); + } +} + export { sortIDs, getAvailableRelationshipButtons, relationshipBlockedInEitherDirection, getRelationshipDispatchAction, + getRelationshipActionText, }; diff --git a/native/chat/settings/thread-settings-edit-relationship.react.js b/native/chat/settings/thread-settings-edit-relationship.react.js --- a/native/chat/settings/thread-settings-edit-relationship.react.js +++ b/native/chat/settings/thread-settings-edit-relationship.react.js @@ -8,12 +8,14 @@ updateRelationships as serverUpdateRelationships, updateRelationshipsActionTypes, } from 'lib/actions/relationship-actions'; -import { getRelationshipDispatchAction } from 'lib/shared/relationship-utils'; +import { + getRelationshipActionText, + getRelationshipDispatchAction, +} from 'lib/shared/relationship-utils'; import { getSingleOtherUser } from 'lib/shared/thread-utils'; import { type RelationshipAction, type RelationshipButton, - relationshipButtons, } from 'lib/types/relationship-types'; import type { ThreadInfo } from 'lib/types/thread-types'; import { @@ -83,22 +85,11 @@ const otherUserInfoUsername = otherUserInfo.username; invariant(otherUserInfoUsername, 'Other user username should be specified'); - let relationshipButtonText; - if (relationshipButton === relationshipButtons.BLOCK) { - relationshipButtonText = `Block ${otherUserInfoUsername}`; - } else if (relationshipButton === relationshipButtons.FRIEND) { - relationshipButtonText = `Add ${otherUserInfoUsername} to friends`; - } else if (relationshipButton === relationshipButtons.UNFRIEND) { - relationshipButtonText = `Unfriend ${otherUserInfoUsername}`; - } else if (relationshipButton === relationshipButtons.UNBLOCK) { - relationshipButtonText = `Unblock ${otherUserInfoUsername}`; - } else if (relationshipButton === relationshipButtons.ACCEPT) { - relationshipButtonText = `Accept friend request from ${otherUserInfoUsername}`; - } else if (relationshipButton === relationshipButtons.REJECT) { - relationshipButtonText = `Reject friend request from ${otherUserInfoUsername}`; - } else if (relationshipButton === relationshipButtons.WITHDRAW) { - relationshipButtonText = `Withdraw request to friend ${otherUserInfoUsername}`; - } + const relationshipButtonText = React.useMemo( + () => + getRelationshipActionText(relationshipButton, otherUserInfoUsername), + [otherUserInfoUsername, relationshipButton], + ); return (