Skip to content

Commit 80e7d1f

Browse files
authored
Fix undefined error of emojiCategory (#1324)
### Changelog * Fixed unnecessary instantiation of `EmojiManager`. * Fixed the code that lead to undefined error of `emojiCategory`.
1 parent 9e7575e commit 80e7d1f

File tree

6 files changed

+34
-22
lines changed

6 files changed

+34
-22
lines changed

Diff for: src/lib/Sendbird/context/SendbirdProvider.tsx

+8-4
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,14 @@ const SendbirdContextManager = ({
180180

181181
// Emoji Manager
182182
const emojiManager = useMemo(() => {
183-
return new EmojiManager({
184-
sdk,
185-
logger,
186-
});
183+
if (sdkStore.initialized) {
184+
return new EmojiManager({
185+
sdk,
186+
logger,
187+
});
188+
}
189+
190+
return undefined;
187191
}, [sdkStore.initialized]);
188192

189193
const uikitConfigs = useMemo(() => ({

Diff for: src/ui/ContextMenu/EmojiListItems.tsx

+23-10
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import React, { ReactElement, ReactNode, RefObject, useEffect, useRef, useState } from 'react';
1+
import React, { Children, ReactElement, ReactNode, RefObject, useEffect, useRef, useState } from 'react';
22
import { createPortal } from 'react-dom';
33

44
import SortByRow from '../SortByRow';
55
import { Nullable } from '../../types';
66
import { EMOJI_MENU_ROOT_ID, MENU_OBSERVING_CLASS_NAME } from '.';
77
import { APP_LAYOUT_ROOT } from '../../modules/App/const';
8+
import { Label, LabelColors, LabelTypography } from '../Label';
89

910
const defaultParentRect = { x: 0, y: 0, left: 0, top: 0, height: 0 };
1011
type SpaceFromTrigger = { x: number, y: number };
@@ -96,7 +97,7 @@ export const EmojiListItems = ({
9697
}
9798
setReactionStyle(reactionStyle);
9899
}
99-
}, []);
100+
}, [children]);
100101

101102
const rootElement = document.getElementById(EMOJI_MENU_ROOT_ID);
102103
if (rootElement) {
@@ -115,14 +116,26 @@ export const EmojiListItems = ({
115116
top: `${Math.round(reactionStyle.top)}px`,
116117
}}
117118
>
118-
<SortByRow
119-
className="sendbird-dropdown__reaction-bar__row"
120-
maxItemCount={8}
121-
itemWidth={44}
122-
itemHeight={40}
123-
>
124-
{children}
125-
</SortByRow>
119+
{Children.count(children) <= 0
120+
? (
121+
<Label
122+
className="sendbird-dropdown__reaction-bar__emptyLabel"
123+
type={LabelTypography.BODY_1}
124+
color={LabelColors.ONBACKGROUND_1}
125+
>
126+
Emojis is not loaded yet.
127+
</Label>
128+
) : (
129+
<SortByRow
130+
className="sendbird-dropdown__reaction-bar__row"
131+
maxItemCount={8}
132+
itemWidth={44}
133+
itemHeight={40}
134+
>
135+
{children}
136+
</SortByRow>
137+
)
138+
}
126139
</ul>
127140
</div>,
128141
rootElement,

Diff for: src/ui/EmojiReactions/index.tsx

+1-3
Original file line numberDiff line numberDiff line change
@@ -121,16 +121,14 @@ const EmojiReactions = ({
121121
</ReactionBadge>
122122
)}
123123
menuItems={(closeDropdown: () => void): ReactElement => {
124-
if (filteredEmojis.length === 0) return null;
125-
126124
return (
127125
<EmojiListItems
128126
parentRef={addReactionRef}
129127
parentContainRef={addReactionRef}
130128
closeDropdown={closeDropdown}
131129
spaceFromTrigger={spaceFromTrigger}
132130
>
133-
{getEmojiListByCategoryIds(emojiContainer, filterEmojiCategoryIds?.(message)).map((emoji: Emoji): ReactElement => {
131+
{filteredEmojis.map((emoji: Emoji): ReactElement => {
134132
const isReacted: boolean = (message?.reactions
135133
?.find((reaction: Reaction): boolean => reaction.key === emoji.key)?.userIds
136134
?.some((reactorId: string): boolean => reactorId === userId)) || false;

Diff for: src/ui/MessageContent/index.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -416,8 +416,7 @@ export function MessageContent(props: MessageContentProps): ReactElement {
416416
message,
417417
channel,
418418
isByMe,
419-
// @ts-ignore
420-
emojiContainer: emojiContainer ?? new EmojiContainer({}),
419+
emojiContainer: emojiContainer,
421420
memberNicknamesMap: nicknamesMap ?? new Map(),
422421
toggleReaction,
423422
onPressUserProfile: onPressUserProfileHandler,

Diff for: src/ui/MessageItemReactionMenu/index.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,6 @@ export function MessageEmojiMenu({
7373
</IconButton>
7474
)}
7575
menuItems={(closeDropdown: () => void): ReactElement => {
76-
if (filteredEmojis.length === 0) return null;
77-
7876
return (
7977
<EmojiListItems
8078
id={getObservingId(message.messageId)}

Diff for: src/utils/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ export const getEmojiMapAll = (emojiContainer: EmojiContainer): Map<string, Emoj
529529
return emojiMap;
530530
};
531531
export const getEmojiListByCategoryIds = (emojiContainer: EmojiContainer, categoryIds: number[]): Array<Emoji> => {
532-
if (!categoryIds) return getEmojiListAll(emojiContainer);
532+
if (!categoryIds) return getEmojiListAll(emojiContainer) || [];
533533

534534
return emojiContainer?.emojiCategories
535535
?.filter((emojiCategory: EmojiCategory) => categoryIds.includes(emojiCategory.id))

0 commit comments

Comments
 (0)