diff --git a/native/avatars/edit-user-avatar-provider.react.js b/native/avatars/edit-user-avatar-provider.react.js --- a/native/avatars/edit-user-avatar-provider.react.js +++ b/native/avatars/edit-user-avatar-provider.react.js @@ -8,10 +8,7 @@ updateUserAvatarActionTypes, } from 'lib/actions/user-actions.js'; import { createLoadingStatusSelector } from 'lib/selectors/loading-selectors.js'; -import type { - ENSAvatarDBContent, - UpdateUserAvatarRemoveRequest, -} from 'lib/types/avatar-types.js'; +import type { UpdateUserAvatarRequest } from 'lib/types/avatar-types.js'; import type { LoadingStatus } from 'lib/types/loading-types.js'; import type { NativeMediaSelection } from 'lib/types/media-types.js'; import { @@ -26,8 +23,7 @@ +userAvatarSaveInProgress: boolean, +selectFromGalleryAndUpdateUserAvatar: () => Promise, +updateImageUserAvatar: (selection: NativeMediaSelection) => Promise, - +setENSUserAvatar: () => void, - +removeUserAvatar: () => void, + +setUserAvatar: (avatarRequest: UpdateUserAvatarRequest) => Promise, }; const EditUserAvatarContext: React.Context = @@ -93,56 +89,34 @@ await updateImageUserAvatar(selection); }, [updateImageUserAvatar]); - const setENSUserAvatar = React.useCallback(() => { - const ensAvatarRequest: ENSAvatarDBContent = { - type: 'ens', - }; - - dispatchActionPromise( - updateUserAvatarActionTypes, - (async () => { - try { - return await updateUserAvatarCall(ensAvatarRequest); - } catch (e) { - Alert.alert('Avatar update failed', 'Unable to update avatar.'); - throw e; - } - })(), - ); - }, [dispatchActionPromise, updateUserAvatarCall]); - - const removeUserAvatar = React.useCallback(() => { - const removeAvatarRequest: UpdateUserAvatarRemoveRequest = { - type: 'remove', - }; - - dispatchActionPromise( - updateUserAvatarActionTypes, - (async () => { + const setUserAvatar = React.useCallback( + async (avatarRequest: UpdateUserAvatarRequest) => { + const promise = (async () => { try { - return await updateUserAvatarCall(removeAvatarRequest); + return await updateUserAvatarCall(avatarRequest); } catch (e) { Alert.alert('Avatar update failed', 'Unable to update avatar.'); throw e; } - })(), - ); - }, [dispatchActionPromise, updateUserAvatarCall]); + })(); + dispatchActionPromise(updateUserAvatarActionTypes, promise); + await promise; + }, + [dispatchActionPromise, updateUserAvatarCall], + ); const context = React.useMemo( () => ({ userAvatarSaveInProgress, selectFromGalleryAndUpdateUserAvatar, updateImageUserAvatar, - setENSUserAvatar, - removeUserAvatar, + setUserAvatar, }), [ - removeUserAvatar, + userAvatarSaveInProgress, selectFromGalleryAndUpdateUserAvatar, updateImageUserAvatar, - setENSUserAvatar, - userAvatarSaveInProgress, + setUserAvatar, ], ); diff --git a/native/avatars/edit-user-avatar.react.js b/native/avatars/edit-user-avatar.react.js --- a/native/avatars/edit-user-avatar.react.js +++ b/native/avatars/edit-user-avatar.react.js @@ -32,8 +32,7 @@ const { userAvatarSaveInProgress, selectFromGalleryAndUpdateUserAvatar, - setENSUserAvatar, - removeUserAvatar, + setUserAvatar, } = editUserAvatarContext; const currentUserInfo = useSelector(state => state.currentUserInfo); @@ -53,6 +52,14 @@ navigate(UserAvatarCameraModalRouteName); }, [navigate]); + const setENSUserAvatar = React.useCallback(() => { + setUserAvatar({ type: 'ens' }); + }, [setUserAvatar]); + + const removeUserAvatar = React.useCallback(() => { + setUserAvatar({ type: 'remove' }); + }, [setUserAvatar]); + const actionSheetConfig = React.useMemo(() => { const configOptions = [ { id: 'emoji', onPress: navigateToUserEmojiAvatarCreation },