Changeset View
Changeset View
Standalone View
Standalone View
native/avatars/edit-user-avatar.react.js
Show All 30 Lines | | { | ||||
}; | }; | ||||
function EditUserAvatar(props: Props): React.Node { | function EditUserAvatar(props: Props): React.Node { | ||||
const editUserAvatarContext = React.useContext(EditUserAvatarContext); | const editUserAvatarContext = React.useContext(EditUserAvatarContext); | ||||
invariant(editUserAvatarContext, 'editUserAvatarContext should be set'); | invariant(editUserAvatarContext, 'editUserAvatarContext should be set'); | ||||
const { | const { | ||||
userAvatarSaveInProgress, | userAvatarSaveInProgress, | ||||
selectFromGalleryAndUpdateUserAvatar, | selectFromGalleryAndUpdateUserAvatar, | ||||
setUserAvatar, | setUserAvatar, | ||||
registrationModeEnabled, | getRegistrationModeEnabled, | ||||
} = editUserAvatarContext; | } = editUserAvatarContext; | ||||
const currentUserInfo = useSelector(state => state.currentUserInfo); | const currentUserInfo = useSelector(state => state.currentUserInfo); | ||||
const userInfoProp = props.userInfo; | const userInfoProp = props.userInfo; | ||||
const userInfo: ?GenericUserInfoWithAvatar = userInfoProp ?? currentUserInfo; | const userInfo: ?GenericUserInfoWithAvatar = userInfoProp ?? currentUserInfo; | ||||
const ethAddress = React.useMemo( | const ethAddress = React.useMemo( | ||||
() => getETHAddressForUserInfo(userInfo), | () => getETHAddressForUserInfo(userInfo), | ||||
[userInfo], | [userInfo], | ||||
); | ); | ||||
const fetchedENSAvatarURI = useENSAvatar(ethAddress); | const fetchedENSAvatarURI = useENSAvatar(ethAddress); | ||||
const ensAvatarURI = fetchedENSAvatarURI ?? props.prefetchedAvatarURI; | const ensAvatarURI = fetchedENSAvatarURI ?? props.prefetchedAvatarURI; | ||||
const { navigate } = useNavigation(); | const { navigate } = useNavigation(); | ||||
const usernameOrEthAddress = userInfo?.username; | const usernameOrEthAddress = userInfo?.username; | ||||
const navigateToEmojiSelection = React.useCallback(() => { | const navigateToEmojiSelection = React.useCallback(() => { | ||||
if (!registrationModeEnabled) { | if (!getRegistrationModeEnabled()) { | ||||
navigate(EmojiUserAvatarCreationRouteName); | navigate(EmojiUserAvatarCreationRouteName); | ||||
return; | return; | ||||
} | } | ||||
navigate<'EmojiAvatarSelection'>({ | navigate<'EmojiAvatarSelection'>({ | ||||
name: EmojiAvatarSelectionRouteName, | name: EmojiAvatarSelectionRouteName, | ||||
params: { usernameOrEthAddress }, | params: { usernameOrEthAddress }, | ||||
}); | }); | ||||
}, [navigate, registrationModeEnabled, usernameOrEthAddress]); | }, [navigate, getRegistrationModeEnabled, usernameOrEthAddress]); | ||||
const navigateToCamera = React.useCallback(() => { | const navigateToCamera = React.useCallback(() => { | ||||
navigate( | navigate( | ||||
registrationModeEnabled | getRegistrationModeEnabled() | ||||
? RegistrationUserAvatarCameraModalRouteName | ? RegistrationUserAvatarCameraModalRouteName | ||||
: UserAvatarCameraModalRouteName, | : UserAvatarCameraModalRouteName, | ||||
); | ); | ||||
}, [navigate, registrationModeEnabled]); | }, [navigate, getRegistrationModeEnabled]); | ||||
const setENSUserAvatar = React.useCallback(() => { | const setENSUserAvatar = React.useCallback(() => { | ||||
setUserAvatar({ type: 'ens' }); | setUserAvatar({ type: 'ens' }); | ||||
}, [setUserAvatar]); | }, [setUserAvatar]); | ||||
const removeUserAvatar = React.useCallback(() => { | const removeUserAvatar = React.useCallback(() => { | ||||
setUserAvatar({ type: 'remove' }); | setUserAvatar({ type: 'remove' }); | ||||
}, [setUserAvatar]); | }, [setUserAvatar]); | ||||
▲ Show 20 Lines • Show All 71 Lines • Show Last 20 Lines |