|
1 | 1 | import type { ChannelMemberResponse } from 'stream-chat'; |
2 | 2 | import React, { useCallback, useMemo } from 'react'; |
3 | 3 |
|
4 | | -import { useChatContext, useTranslationContext } from '../../../../context'; |
5 | | -import { Avatar } from '../../../../components/Avatar'; |
| 4 | +import { |
| 5 | + useChatContext, |
| 6 | + useComponentContext, |
| 7 | + useTranslationContext, |
| 8 | +} from '../../../../context'; |
| 9 | +import { Avatar as DefaultAvatar } from '../../../../components/Avatar'; |
| 10 | +import { extractDisplayInfo as defaultExtractDisplayInfo } from '../../../../components/Avatar/utils'; |
6 | 11 | import { IconMute } from '../../../../components/Icons'; |
7 | 12 | import { ListItemLayout } from '../../../../components/ListItemLayout'; |
8 | 13 | import { VirtualizedList } from '../../VirtualizedList'; |
9 | 14 | import { Prompt } from '../../../../components/Dialog'; |
10 | | -import { |
11 | | - getMemberDisplayName, |
12 | | - getMemberUserId, |
13 | | - getUserDisplayName, |
14 | | -} from './ChannelMembersView.utils'; |
| 15 | +import { getMemberDisplayName, getMemberUserId } from './ChannelMembersView.utils'; |
15 | 16 | import { ChannelDetailEmptyList } from '../../ChannelDetailEmptyList'; |
16 | 17 | import { ChannelDetailListLoadingIndicator } from '../../ChannelDetailListLoadingIndicator'; |
17 | 18 | import { ChannelDetailSearchInput } from '../../ChannelDetailSearchInput'; |
@@ -56,23 +57,19 @@ const ChannelMembersBrowseViewItem = ({ |
56 | 57 | onMemberSelect?: (member: ChannelMemberResponse) => void; |
57 | 58 | }) => { |
58 | 59 | const { t } = useTranslationContext(); |
| 60 | + const { Avatar = DefaultAvatar, extractDisplayInfo = defaultExtractDisplayInfo } = |
| 61 | + useComponentContext(); |
59 | 62 | const user = member.user; |
60 | 63 | const displayName = getMemberDisplayName(member); |
61 | 64 | const roleTranslation = getMemberRoleTranslation(member, t); |
| 65 | + const displayInfo = extractDisplayInfo({ user: user ?? undefined }); |
62 | 66 |
|
63 | 67 | const LeadingSlot = useMemo( |
64 | 68 | () => |
65 | 69 | function MemberAvatar() { |
66 | | - return ( |
67 | | - <Avatar |
68 | | - imageUrl={user?.image} |
69 | | - isOnline={user?.online} |
70 | | - size='md' |
71 | | - userName={getUserDisplayName(user)} |
72 | | - /> |
73 | | - ); |
| 70 | + return <Avatar {...displayInfo} isOnline={user?.online} size='md' />; |
74 | 71 | }, |
75 | | - [user], |
| 72 | + [Avatar, displayInfo, user], |
76 | 73 | ); |
77 | 74 |
|
78 | 75 | const TrailingSlot = useMemo( |
|
0 commit comments