in src/views/inbox-threads/inbox-threads__mention.tsx [33:111]
export default function InboxThreadMention({
thread,
currentUser,
uiTheme,
onNavigate,
}: Props): JSX.Element | null {
const [isReactionPanelVisible, updateReactionPanelVisible] = useState(false);
const activity: Activity = thread.messages[0].activities[0];
activity.author = ApiHelper.convertRelativeUrl(
activity.author,
'avatarUrl',
getApi().config.backendUrl,
);
let comment: IssueComment | null | undefined;
let text: string | null | undefined;
if (isActivityCategory.commentMention(activity)) {
comment = activity.comment;
text = comment?.text;
} else if (isActivityCategory.issueMention(activity)) {
text = activity?.issue?.description;
} else if (isActivityCategory.articleCommentMention(activity)) {
comment = activity?.comment;
text = comment?.text;
} else if (isActivityCategory.articleMention(activity)) {
text = activity?.article?.content;
}
const target = thread.subject.target;
return text ? (
<>
<ThreadItem
author={activity.author}
avatar={
<Avatar
userName={getEntityPresentation(activity.author)}
size={30}
source={{
uri: activity.author.avatarUrl,
}}
/>
}
avatarStyle={styles.avatarComment}
change={
<>
<TouchableOpacity
onPress={() => {
onNavigate(
target.issue || target.article,
activity.id,
comment?.id,
);
}}
>
<StreamComment
activity={{
added: [comment],
}}
/>
</TouchableOpacity>
{!!comment && (
<ThreadCommentReactions
activity={activity}
currentUser={currentUser}
isPanelVisible={isReactionPanelVisible}
/>
)}
</>
}
reason={i18n('mentioned you')}
timestamp={thread.notified}
/>
<ThreadAddReactionButton
style={styles.threadReactionsAddButton}
onPress={() => updateReactionPanelVisible(true)}
/>
</>
) : null;
}