Page MenuHomePhorge

thread-emoji-avatar-selection-modal.react.js
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

thread-emoji-avatar-selection-modal.react.js

// @flow
import invariant from 'invariant';
import * as React from 'react';
import { EditThreadAvatarContext } from 'lib/components/base-edit-thread-avatar-provider.react.js';
import {
getDefaultAvatar,
useAvatarForThread,
} from 'lib/shared/avatar-utils.js';
import type {
ClientAvatar,
ClientEmojiAvatar,
} from 'lib/types/avatar-types.js';
import type {
ThreadInfo,
RawThreadInfo,
} from 'lib/types/minimally-encoded-thread-permissions-types.js';
import EmojiAvatarSelectionModal from './emoji-avatar-selection-modal.react.js';
type Props = {
+threadInfo: RawThreadInfo | ThreadInfo,
};
function ThreadEmojiAvatarSelectionModal(props: Props): React.Node {
const { threadInfo } = props;
const editThreadAvatarContext = React.useContext(EditThreadAvatarContext);
invariant(editThreadAvatarContext, 'editThreadAvatarContext should be set');
const { baseSetThreadAvatar, threadAvatarSaveInProgress } =
editThreadAvatarContext;
const currentThreadAvatar: ClientAvatar = useAvatarForThread(threadInfo);
const defaultThreadAvatar: ClientEmojiAvatar = getDefaultAvatar(
threadInfo.id,
threadInfo.color,
);
const setEmojiAvatar = React.useCallback(
(pendingEmojiAvatar: ClientEmojiAvatar): Promise<void> =>
baseSetThreadAvatar(threadInfo.id, pendingEmojiAvatar),
[baseSetThreadAvatar, threadInfo.id],
);
return (
<EmojiAvatarSelectionModal
currentAvatar={currentThreadAvatar}
defaultAvatar={defaultThreadAvatar}
setEmojiAvatar={setEmojiAvatar}
avatarSaveInProgress={threadAvatarSaveInProgress}
/>
);
}
export default ThreadEmojiAvatarSelectionModal;

File Metadata

Mime Type
text/x-java
Expires
Sun, Dec 7, 7:54 AM (1 d, 16 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5702410
Default Alt Text
thread-emoji-avatar-selection-modal.react.js (1 KB)

Event Timeline