import React, { useMemo } from 'react';
import { Channel, UserResponse } from 'stream-chat';
import { Avatar } from './Avatar';
import { UserAvatarGroup } from './AvatarGroup';
import { UserAvatar } from './UserAvatar';
import { useChannelPreviewDisplayPresence } from '../../../components/ChannelPreview/hooks/useChannelPreviewDisplayPresence';
import { useChatContext } from '../../../contexts/chatContext/ChatContext';
import { useTheme } from '../../../contexts/themeContext/ThemeContext';
import { hashStringToNumber } from '../../../utils/utils';
export type ChannelAvatarProps = {
channel: Channel;
showOnlineIndicator?: boolean;
size?: 'lg' | 'xl' | '2xl';
showBorder?: boolean;
};
export const ChannelAvatar = (props: ChannelAvatarProps) => {
const { client } = useChatContext();
const { channel } = props;
const online = useChannelPreviewDisplayPresence(channel);
const { showOnlineIndicator = online, size = 'xl', showBorder = true } = props;
const {
theme: { semantics },
} = useTheme();
const hashedValue = hashStringToNumber(channel.cid);
const index = ((hashedValue % 5) + 1) as 1 | 2 | 3 | 4 | 5;
const avatarBackgroundColor = semantics[`avatarPaletteBg${index}`];
const channelImage = channel.data?.image;
const usersForGroup = useMemo(
() => Object.values(channel.state.members).map((member) => member.user as UserResponse),
[channel.state.members],
);
const usersWithoutSelf = useMemo(
() => usersForGroup.filter((user) => user.id !== client.user?.id),
[usersForGroup, client.user?.id],
);
if (channelImage) {
return (
);
}
if (usersWithoutSelf.length > 1) {
return (
);
} else {
return (
);
}
};