Skip to content

Commit 99bb49c

Browse files
committed
refactor: ReactionTooltipContent, move localization and account subscription inside
1 parent dfca25a commit 99bb49c

2 files changed

Lines changed: 20 additions & 22 deletions

File tree

src/components/Reactions/ReactionTooltipContent.tsx

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import React, {useMemo} from 'react';
1+
import React from 'react';
22
import {View} from 'react-native';
33
import Text from '@components/Text';
4-
import type {WithCurrentUserPersonalDetailsProps} from '@components/withCurrentUserPersonalDetails';
54
import useLocalize from '@hooks/useLocalize';
65
import useThemeStyles from '@hooks/useThemeStyles';
6+
import {getLocalizedEmojiName} from '@libs/EmojiUtils';
77
import {getPersonalDetailsByIDs} from '@libs/PersonalDetailsUtils';
88

9-
type ReactionTooltipContentProps = Pick<WithCurrentUserPersonalDetailsProps, 'currentUserPersonalDetails'> & {
9+
type ReactionTooltipContentProps = {
1010
/**
1111
* A list of emoji codes to display in the tooltip.
1212
*/
@@ -21,15 +21,18 @@ type ReactionTooltipContentProps = Pick<WithCurrentUserPersonalDetailsProps, 'cu
2121
* A list of account IDs to display in the tooltip.
2222
*/
2323
accountIDs: number[];
24+
25+
/**
26+
* The account ID of the current user.
27+
*/
28+
currentUserAccountID: number;
2429
};
2530

26-
function ReactionTooltipContent({accountIDs, currentUserPersonalDetails, emojiCodes, emojiName}: ReactionTooltipContentProps) {
31+
function ReactionTooltipContent({accountIDs, emojiCodes, emojiName, currentUserAccountID}: ReactionTooltipContentProps) {
2732
const styles = useThemeStyles();
28-
const {translate} = useLocalize();
29-
const users = useMemo(
30-
() => getPersonalDetailsByIDs({accountIDs, currentUserAccountID: currentUserPersonalDetails.accountID, shouldChangeUserDisplayName: true}),
31-
[currentUserPersonalDetails.accountID, accountIDs],
32-
);
33+
const {translate, preferredLocale} = useLocalize();
34+
const users = getPersonalDetailsByIDs({accountIDs, currentUserAccountID, shouldChangeUserDisplayName: true});
35+
const localizedEmojiName = getLocalizedEmojiName(emojiName, preferredLocale);
3336

3437
const namesString = users
3538
.map((user) => user?.displayName)
@@ -51,7 +54,7 @@ function ReactionTooltipContent({accountIDs, currentUserPersonalDetails, emojiCo
5154

5255
<Text style={[styles.mt1, styles.textMicroBold, styles.textReactionSenders, styles.textAlignCenter]}>{namesString}</Text>
5356

54-
<Text style={[styles.textMicro, styles.fontColorReactionLabel]}>{`${translate('emojiReactions.reactedWith')} :${emojiName}:`}</Text>
57+
<Text style={[styles.textMicro, styles.fontColorReactionLabel]}>{`${translate('emojiReactions.reactedWith')} :${localizedEmojiName}:`}</Text>
5558
</View>
5659
);
5760
}

src/components/Reactions/ReportActionItemEmojiReactions.tsx

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@ import type {Emoji} from '@assets/emojis/types';
55
import OfflineWithFeedback from '@components/OfflineWithFeedback';
66
import Tooltip from '@components/Tooltip/PopoverAnchorTooltip';
77
import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails';
8-
import useLocalize from '@hooks/useLocalize';
98
import useOnyx from '@hooks/useOnyx';
109
import useThemeStyles from '@hooks/useThemeStyles';
11-
import {getEmojiReactionDetails, getLocalizedEmojiName} from '@libs/EmojiUtils';
10+
import {getEmojiReactionDetails} from '@libs/EmojiUtils';
1211
import {hideContextMenu} from '@pages/inbox/report/ContextMenu/ReportActionContextMenu';
1312
import {ReactionListContext} from '@pages/inbox/ReportScreenContext';
1413
import type {ReactionListAnchor, ReactionListEvent} from '@pages/inbox/ReportScreenContext';
@@ -72,8 +71,7 @@ type FormattedReaction = {
7271

7372
function ReportActionItemEmojiReactions({reportAction, reportID, shouldBlockReactions = false, setIsEmojiPickerActive}: ReportActionItemEmojiReactionsProps) {
7473
const styles = useThemeStyles();
75-
const {preferredLocale} = useLocalize();
76-
const currentUserPersonalDetails = useCurrentUserPersonalDetails();
74+
const {accountID: currentUserAccountID} = useCurrentUserPersonalDetails();
7775
const reactionListRef = useContext(ReactionListContext);
7876
const popoverReactionListAnchors = useRef<PopoverReactionListAnchors>({});
7977
const [preferredSkinTone = CONST.EMOJI_DEFAULT_SKIN_TONE] = useOnyx(ONYXKEYS.PREFERRED_EMOJI_SKIN_TONE);
@@ -89,17 +87,13 @@ function ReportActionItemEmojiReactions({reportAction, reportID, shouldBlockReac
8987
});
9088
return;
9189
}
92-
toggleEmojiReaction(reportID, reportAction, emoji, emojiReactions, skinTone, currentUserPersonalDetails.accountID, ignoreSkinToneOnCompare);
90+
toggleEmojiReaction(reportID, reportAction, emoji, emojiReactions, skinTone, currentUserAccountID, ignoreSkinToneOnCompare);
9391
};
9492

9593
// Each emoji is sorted by the oldest timestamp of user reactions so that they will always appear in the same order for everyone
9694
const formattedReactions: Array<FormattedReaction | null> = sortBy(
9795
Object.entries(emojiReactions ?? {}).map(([emojiName, emojiReaction]) => {
98-
const {emoji, emojiCodes, reactionCount, hasUserReacted, userAccountIDs, oldestTimestamp} = getEmojiReactionDetails(
99-
emojiName,
100-
emojiReaction,
101-
currentUserPersonalDetails.accountID,
102-
);
96+
const {emoji, emojiCodes, reactionCount, hasUserReacted, userAccountIDs, oldestTimestamp} = getEmojiReactionDetails(emojiName, emojiReaction, currentUserAccountID);
10397

10498
if (reactionCount === 0) {
10599
return null;
@@ -137,14 +131,15 @@ function ReportActionItemEmojiReactions({reportAction, reportID, shouldBlockReac
137131
if (reaction === null) {
138132
return;
139133
}
134+
140135
return (
141136
<Tooltip
142137
renderTooltipContent={() => (
143138
<ReactionTooltipContent
144-
emojiName={getLocalizedEmojiName(reaction.reactionEmojiName, preferredLocale)}
139+
emojiName={reaction.reactionEmojiName}
145140
emojiCodes={reaction.emojiCodes}
146141
accountIDs={reaction.userAccountIDs}
147-
currentUserPersonalDetails={currentUserPersonalDetails}
142+
currentUserAccountID={currentUserAccountID}
148143
/>
149144
)}
150145
renderTooltipContentKey={[...reaction.userAccountIDs.map(String), ...reaction.emojiCodes]}

0 commit comments

Comments
 (0)