Page MenuHomePhabricator

D8736.id29562.diff
No OneTemporary

D8736.id29562.diff

diff --git a/lib/components/base-edit-thread-avatar-provider.react.js b/lib/components/base-edit-thread-avatar-provider.react.js
--- a/lib/components/base-edit-thread-avatar-provider.react.js
+++ b/lib/components/base-edit-thread-avatar-provider.react.js
@@ -12,10 +12,7 @@
ImageAvatarDBContent,
} from '../types/avatar-types.js';
import type { LoadingStatus } from '../types/loading-types.js';
-import type {
- MediaLibrarySelection,
- NativeMediaSelection,
-} from '../types/media-types.js';
+import type { NativeMediaSelection } from '../types/media-types.js';
import type { UpdateThreadRequest } from '../types/thread-types.js';
import {
useDispatchActionPromise,
@@ -25,7 +22,6 @@
export type EditThreadAvatarContextType = {
+threadAvatarSaveInProgress: boolean,
- +selectFromGalleryAndUpdateThreadAvatar: (threadID: string) => Promise<void>,
+updateImageThreadAvatar: (
selection: NativeMediaSelection,
threadID: string,
@@ -41,7 +37,6 @@
type Props = {
+displayFailureAlert: () => mixed,
- +selectFromGallery: () => Promise<?MediaLibrarySelection>,
+useUploadSelectedMedia: (
setProcessingOrUploadInProgress?: (inProgress: boolean) => mixed,
) => (selection: NativeMediaSelection) => Promise<?ImageAvatarDBContent>,
@@ -51,7 +46,6 @@
function BaseEditThreadAvatarProvider(props: Props): React.Node {
const {
displayFailureAlert,
- selectFromGallery,
useUploadSelectedMedia,
activeThreadID,
children,
@@ -135,17 +129,6 @@
],
);
- const selectFromGalleryAndUpdateThreadAvatar = React.useCallback(
- async (threadID: string) => {
- const selection: ?MediaLibrarySelection = await selectFromGallery();
- if (!selection) {
- return;
- }
- await updateImageThreadAvatar(selection, threadID);
- },
- [selectFromGallery, updateImageThreadAvatar],
- );
-
const setThreadAvatar = React.useCallback(
async (threadID: string, avatarRequest: UpdateUserAvatarRequest) => {
const updateThreadRequest: UpdateThreadRequest = {
@@ -174,16 +157,10 @@
const context = React.useMemo(
() => ({
threadAvatarSaveInProgress,
- selectFromGalleryAndUpdateThreadAvatar,
updateImageThreadAvatar,
setThreadAvatar,
}),
- [
- threadAvatarSaveInProgress,
- selectFromGalleryAndUpdateThreadAvatar,
- updateImageThreadAvatar,
- setThreadAvatar,
- ],
+ [threadAvatarSaveInProgress, updateImageThreadAvatar, setThreadAvatar],
);
return (
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
@@ -9,6 +9,7 @@
import { useSafeAreaInsets } from 'react-native-safe-area-context';
import { uploadMultimedia } from 'lib/actions/upload-actions.js';
+import { EditThreadAvatarContext } from 'lib/components/base-edit-thread-avatar-provider.react.js';
import { EditUserAvatarContext } from 'lib/components/edit-user-avatar-provider.react.js';
import {
extensionFromFilename,
@@ -307,6 +308,27 @@
return selectFromGalleryAndUpdateUserAvatar;
}
+function useSelectFromGalleryAndUpdateThreadAvatar(): (
+ threadID: string,
+) => Promise<void> {
+ const editThreadAvatarContext = React.useContext(EditThreadAvatarContext);
+ invariant(editThreadAvatarContext, 'editThreadAvatarContext must be defined');
+ const { updateImageThreadAvatar } = editThreadAvatarContext;
+
+ const selectFromGalleryAndUpdateThreadAvatar = React.useCallback(
+ async (threadID: string): Promise<void> => {
+ const selection: ?MediaLibrarySelection = await selectFromGallery();
+ if (!selection) {
+ return;
+ }
+ await updateImageThreadAvatar(selection, threadID);
+ },
+ [updateImageThreadAvatar],
+ );
+
+ return selectFromGalleryAndUpdateThreadAvatar;
+}
+
type ShowAvatarActionSheetOptions = {
+id: 'emoji' | 'image' | 'camera' | 'ens' | 'cancel' | 'remove',
+onPress?: () => mixed,
@@ -440,4 +462,5 @@
useSelectFromGalleryAndUpdateUserAvatar,
useNativeSetUserAvatar,
useNativeUpdateUserImageAvatar,
+ useSelectFromGalleryAndUpdateThreadAvatar,
};
diff --git a/native/avatars/edit-thread-avatar.react.js b/native/avatars/edit-thread-avatar.react.js
--- a/native/avatars/edit-thread-avatar.react.js
+++ b/native/avatars/edit-thread-avatar.react.js
@@ -8,7 +8,10 @@
import { EditThreadAvatarContext } from 'lib/components/base-edit-thread-avatar-provider.react.js';
import type { RawThreadInfo, ThreadInfo } from 'lib/types/thread-types.js';
-import { useShowAvatarActionSheet } from './avatar-hooks.js';
+import {
+ useSelectFromGalleryAndUpdateThreadAvatar,
+ useShowAvatarActionSheet,
+} from './avatar-hooks.js';
import EditAvatarBadge from './edit-avatar-badge.react.js';
import ThreadAvatar from './thread-avatar.react.js';
import {
@@ -27,11 +30,11 @@
const editThreadAvatarContext = React.useContext(EditThreadAvatarContext);
invariant(editThreadAvatarContext, 'editThreadAvatarContext should be set');
- const {
- threadAvatarSaveInProgress,
- selectFromGalleryAndUpdateThreadAvatar,
- setThreadAvatar,
- } = editThreadAvatarContext;
+ const { threadAvatarSaveInProgress, setThreadAvatar } =
+ editThreadAvatarContext;
+
+ const selectFromGalleryAndUpdateThreadAvatar =
+ useSelectFromGalleryAndUpdateThreadAvatar();
const { navigate } = useNavigation();
diff --git a/native/avatars/native-edit-thread-avatar-provider.react.js b/native/avatars/native-edit-thread-avatar-provider.react.js
--- a/native/avatars/native-edit-thread-avatar-provider.react.js
+++ b/native/avatars/native-edit-thread-avatar-provider.react.js
@@ -4,7 +4,7 @@
import { BaseEditThreadAvatarProvider } from 'lib/components/base-edit-thread-avatar-provider.react.js';
-import { selectFromGallery, useUploadSelectedMedia } from './avatar-hooks.js';
+import { useUploadSelectedMedia } from './avatar-hooks.js';
import { activeThreadSelector } from '../navigation/nav-selectors.js';
import { NavContext } from '../navigation/navigation-context.js';
import Alert from '../utils/alert.js';
@@ -32,7 +32,6 @@
return (
<BaseEditThreadAvatarProvider
displayFailureAlert={displayAvatarUpdateFailureAlert}
- selectFromGallery={selectFromGallery}
useUploadSelectedMedia={useUploadSelectedMedia}
activeThreadID={activeThreadID}
>

File Metadata

Mime Type
text/plain
Expires
Fri, Sep 20, 8:41 PM (20 h, 40 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2154198
Default Alt Text
D8736.id29562.diff (6 KB)

Event Timeline