86 lines
1.9 KiB
TypeScript
86 lines
1.9 KiB
TypeScript
|
import React from 'react';
|
||
|
import { StyleSheet } from 'react-native';
|
||
|
|
||
|
import Button from '../Button';
|
||
|
import AvatarContainer from './AvatarContainer';
|
||
|
import { IAvatar } from './interfaces';
|
||
|
import I18n from '../../i18n';
|
||
|
import { useTheme } from '../../theme';
|
||
|
import { BUTTON_HIT_SLOP } from '../message/utils';
|
||
|
import { useAppSelector } from '../../lib/hooks';
|
||
|
import { compareServerVersion } from '../../lib/methods/helpers';
|
||
|
import sharedStyles from '../../views/Styles';
|
||
|
|
||
|
const styles = StyleSheet.create({
|
||
|
editAvatarButton: {
|
||
|
marginTop: 8,
|
||
|
paddingVertical: 8,
|
||
|
paddingHorizontal: 12,
|
||
|
marginBottom: 0,
|
||
|
height: undefined
|
||
|
},
|
||
|
textButton: {
|
||
|
fontSize: 12,
|
||
|
...sharedStyles.textSemibold
|
||
|
}
|
||
|
});
|
||
|
|
||
|
interface IAvatarContainer extends Omit<IAvatar, 'size'> {
|
||
|
handleEdit?: () => void;
|
||
|
}
|
||
|
|
||
|
const AvatarWithEdit = ({
|
||
|
style,
|
||
|
text = '',
|
||
|
avatar,
|
||
|
emoji,
|
||
|
borderRadius,
|
||
|
type,
|
||
|
children,
|
||
|
onPress,
|
||
|
getCustomEmoji,
|
||
|
isStatic,
|
||
|
rid,
|
||
|
handleEdit
|
||
|
}: IAvatarContainer): React.ReactElement => {
|
||
|
const { colors } = useTheme();
|
||
|
|
||
|
const { serverVersion } = useAppSelector(state => ({
|
||
|
serverVersion: state.server.version
|
||
|
}));
|
||
|
|
||
|
return (
|
||
|
<>
|
||
|
<AvatarContainer
|
||
|
style={style}
|
||
|
text={text}
|
||
|
avatar={avatar}
|
||
|
emoji={emoji}
|
||
|
size={120}
|
||
|
borderRadius={borderRadius}
|
||
|
type={type}
|
||
|
children={children}
|
||
|
onPress={onPress}
|
||
|
getCustomEmoji={getCustomEmoji}
|
||
|
isStatic={isStatic}
|
||
|
rid={rid}
|
||
|
/>
|
||
|
{handleEdit && serverVersion && compareServerVersion(serverVersion, 'greaterThanOrEqualTo', '3.6.0') ? (
|
||
|
<Button
|
||
|
title={I18n.t('Edit')}
|
||
|
type='secondary'
|
||
|
backgroundColor={colors.editAndUploadButtonAvatar}
|
||
|
onPress={handleEdit}
|
||
|
testID='avatar-edit-button'
|
||
|
style={styles.editAvatarButton}
|
||
|
styleText={styles.textButton}
|
||
|
color={colors.titleText}
|
||
|
hitSlop={BUTTON_HIT_SLOP}
|
||
|
/>
|
||
|
) : null}
|
||
|
</>
|
||
|
);
|
||
|
};
|
||
|
|
||
|
export default AvatarWithEdit;
|