refactor avatar suggestion

This commit is contained in:
Reinaldo Neto 2022-12-12 18:13:12 -03:00
parent a478f1ff52
commit 13f5075f7c
2 changed files with 44 additions and 40 deletions

View File

@ -1,10 +1,10 @@
import React from 'react'; import React, { useState, useEffect } from 'react';
import { Text, View, TouchableOpacity } from 'react-native'; import { Text, View, TouchableOpacity } from 'react-native';
import { IAvatar, IUser } from '../../definitions'; import { IAvatar, IUser } from '../../definitions';
import { Services } from '../../lib/services';
import I18n from '../../i18n'; import I18n from '../../i18n';
import Avatar from '../../containers/Avatar'; import Avatar from '../../containers/Avatar';
// import Touch from '../../containers/Touch';
import styles from './styles'; import styles from './styles';
import { useTheme } from '../../theme'; import { useTheme } from '../../theme';
@ -23,16 +23,35 @@ const Item = ({ item, onPress, text }: { item?: IAvatar; onPress: (value?: IAvat
); );
}; };
const AvatarSuggestion = ({ const AvatarSuggestion = ({
avatarSuggestions,
onPress, onPress,
user, user,
resetAvatar resetAvatar
}: { }: {
avatarSuggestions: IAvatar[];
onPress: (value?: IAvatar) => void; onPress: (value?: IAvatar) => void;
user?: IUser; user?: IUser;
resetAvatar?: () => void; resetAvatar?: () => void;
}) => ( }) => {
const [avatarSuggestions, setAvatarSuggestions] = useState<IAvatar[]>([]);
const getAvatarSuggestion = async () => {
const result = await Services.getAvatarSuggestion();
const suggestions = Object.keys(result).map(service => {
const { url, blob, contentType } = result[service];
return {
url,
data: blob,
service,
contentType
};
});
setAvatarSuggestions(suggestions);
};
useEffect(() => {
getAvatarSuggestion();
}, []);
return (
<View style={{ flex: 1 }}> <View style={{ flex: 1 }}>
<Text style={styles.itemLabel}>{I18n.t('Images_uploaded')}</Text> <Text style={styles.itemLabel}>{I18n.t('Images_uploaded')}</Text>
<View style={styles.containerAvatarSuggestion}> <View style={styles.containerAvatarSuggestion}>
@ -42,6 +61,7 @@ const AvatarSuggestion = ({
))} ))}
</View> </View>
</View> </View>
); );
};
export default AvatarSuggestion; export default AvatarSuggestion;

View File

@ -27,7 +27,7 @@ import log from '../../lib/methods/helpers/log';
const ChangeAvatarView = () => { const ChangeAvatarView = () => {
const [avatar, setAvatarState] = useState<IAvatar>(); const [avatar, setAvatarState] = useState<IAvatar>();
const [avatarSuggestions, setAvatarSuggestions] = useState<IAvatar[]>([]);
const [textAvatar, setTextAvatar] = useState(''); const [textAvatar, setTextAvatar] = useState('');
const [saving, setSaving] = useState(false); const [saving, setSaving] = useState(false);
const { colors } = useTheme(); const { colors } = useTheme();
@ -66,26 +66,6 @@ const ChangeAvatarView = () => {
}); });
}, [navigation]); }, [navigation]);
const getAvatarSuggestion = async () => {
const result = await Services.getAvatarSuggestion();
const suggestions = Object.keys(result).map(service => {
const { url, blob, contentType } = result[service];
return {
url,
data: blob,
service,
contentType
};
});
setAvatarSuggestions(suggestions);
};
useEffect(() => {
if (fromUser) {
getAvatarSuggestion();
}
}, [fromUser]);
const setAvatar = (value?: IAvatar) => { const setAvatar = (value?: IAvatar) => {
avatarUrl.current = value?.url; avatarUrl.current = value?.url;
setAvatarState(value); setAvatarState(value);
@ -126,6 +106,12 @@ const ChangeAvatarView = () => {
avatarUrl.current = `@${user.username}`; avatarUrl.current = `@${user.username}`;
}; };
const resetRoomAvatar = () => {
setAvatar(undefined);
// await Services.saveRoomSettings(room.rid, params);
};
const pickImage = async () => { const pickImage = async () => {
const options = { const options = {
cropping: true, cropping: true,
@ -166,11 +152,9 @@ const ChangeAvatarView = () => {
isUserProfile={fromUser} isUserProfile={fromUser}
/> />
</View> </View>
<AvatarUrl submit={value => setAvatar({ url: value, data: value, service: 'url' })} /> {fromUser ? <AvatarUrl submit={value => setAvatar({ url: value, data: value, service: 'url' })} /> : null}
<List.Separator style={styles.separator} /> <List.Separator style={styles.separator} />
{fromUser ? ( {fromUser ? <AvatarSuggestion resetAvatar={resetAvatar} user={user} onPress={setAvatar} /> : null}
<AvatarSuggestion resetAvatar={resetAvatar} user={user} onPress={setAvatar} avatarSuggestions={avatarSuggestions} />
) : null}
<Button <Button
title={I18n.t('Upload_image')} title={I18n.t('Upload_image')}
@ -186,7 +170,7 @@ const ChangeAvatarView = () => {
type='primary' type='primary'
disabled={saving} disabled={saving}
backgroundColor={colors.dangerColor} backgroundColor={colors.dangerColor}
onPress={() => {}} onPress={resetRoomAvatar}
testID='change-avatar-view-delete-my-account' testID='change-avatar-view-delete-my-account'
/> />
) : null} ) : null}