diff --git a/native/avatars/avatar-hooks.js b/native/avatars/avatar-hooks.js --- a/native/avatars/avatar-hooks.js +++ b/native/avatars/avatar-hooks.js @@ -128,7 +128,7 @@ function useUploadSelectedMedia( setProcessingOrUploadInProgress: SetState, -): (selection: ?NativeMediaSelection) => Promise { +): (selection: ?NativeMediaSelection) => Promise { const processSelectedMedia = useProcessSelectedMedia(); const uploadProcessedMedia = useUploadProcessedMedia(); @@ -177,7 +177,14 @@ return; } - return uploadedMedia.id; + if (!uploadedMedia.id) { + return; + } + + return { + type: 'image', + uploadID: uploadedMedia.id, + }; }, [ processSelectedMedia, @@ -218,17 +225,12 @@ const selectFromGalleryAndUpdateThreadAvatar = React.useCallback(async () => { const selection: ?MediaLibrarySelection = await selectFromGallery(); - const uploadedMediaID = await uploadSelectedMedia(selection); + const imageAvatarUpdateRequest = await uploadSelectedMedia(selection); - if (!uploadedMediaID) { + if (!imageAvatarUpdateRequest) { return; } - const imageAvatarUpdateRequest: ImageAvatarDBContent = { - type: 'image', - uploadID: uploadedMediaID, - }; - const updateThreadRequest: UpdateThreadRequest = { threadID, changes: { 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 @@ -57,37 +57,39 @@ userAvatarMediaUploadInProgress || updateUserAvatarLoadingStatus === 'loading'; + const updateImageUserAvatarPromise = React.useCallback( + async (imageAvatarUpdateRequest: ImageAvatarDBContent) => { + setUserAvatarMediaUploadInProgress(false); + try { + return await updateUserAvatarCall(imageAvatarUpdateRequest); + } catch (e) { + Alert.alert('Avatar update failed', 'Unable to update avatar.'); + throw e; + } + }, + [updateUserAvatarCall], + ); + const uploadUserAvatarSelectedMedia = useUploadSelectedMedia( setUserAvatarMediaUploadInProgress, ); const selectFromGalleryAndUpdateUserAvatar = React.useCallback(async () => { const selection: ?MediaLibrarySelection = await selectFromGallery(); - const uploadedMediaID = await uploadUserAvatarSelectedMedia(selection); + const imageAvatarUpdateRequest = await uploadUserAvatarSelectedMedia( + selection, + ); - if (!uploadedMediaID) { + if (!imageAvatarUpdateRequest) { return; } - const imageAvatarUpdateRequest: ImageAvatarDBContent = { - type: 'image', - uploadID: uploadedMediaID, - }; - dispatchActionPromise( updateUserAvatarActionTypes, - (async () => { - setUserAvatarMediaUploadInProgress(false); - try { - return await updateUserAvatarCall(imageAvatarUpdateRequest); - } catch (e) { - Alert.alert('Avatar update failed', 'Unable to update avatar.'); - throw e; - } - })(), + updateImageUserAvatarPromise(imageAvatarUpdateRequest), ); }, [ dispatchActionPromise, - updateUserAvatarCall, + updateImageUserAvatarPromise, uploadUserAvatarSelectedMedia, ]);