import React, { useState } from 'react'; import { StyleProp, StyleSheet, View, ViewStyle } from 'react-native'; import { conditionChaining } from '@sendbird/uikit-utils'; import Icon from '../../components/Icon'; import Image from '../../components/Image'; import createStyleSheet from '../../styles/createStyleSheet'; import useUIKitTheme from '../../theme/useUIKitTheme'; import AvatarGroup from './AvatarGroup'; import AvatarIcon from './AvatarIcon'; import AvatarStack from './AvatarStack'; type Props = { uri?: string; size?: number; square?: boolean; muted?: boolean; containerStyle?: StyleProp; }; const Avatar = ({ uri, square, muted = false, size = 56, containerStyle }: Props) => { const { colors, palette } = useUIKitTheme(); const [loadFailure, setLoadFailure] = useState(false); return ( {conditionChaining( [Boolean(uri) && !loadFailure], [ setLoadFailure(true)} source={{ uri }} resizeMode={'cover'} style={StyleSheet.absoluteFill} />, , ], )} {muted && } ); }; const MutedOverlay = ({ size }: { size: number }) => { const { palette } = useUIKitTheme(); return ( ); }; const styles = createStyleSheet({ container: { alignItems: 'center', justifyContent: 'center', overflow: 'hidden', }, }); export default Object.assign(Avatar, { Group: AvatarGroup, Icon: AvatarIcon, Stack: AvatarStack, });