Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions src/lib/Sendbird/context/SendbirdProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -180,10 +180,14 @@ const SendbirdContextManager = ({

// Emoji Manager
const emojiManager = useMemo(() => {
return new EmojiManager({
sdk,
logger,
});
if (sdkStore.initialized) {
return new EmojiManager({
sdk,
logger,
});
}

return undefined;
}, [sdkStore.initialized]);

const uikitConfigs = useMemo(() => ({
Expand Down
33 changes: 23 additions & 10 deletions src/ui/ContextMenu/EmojiListItems.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import React, { ReactElement, ReactNode, RefObject, useEffect, useRef, useState } from 'react';
import React, { Children, ReactElement, ReactNode, RefObject, useEffect, useRef, useState } from 'react';
import { createPortal } from 'react-dom';

import SortByRow from '../SortByRow';
import { Nullable } from '../../types';
import { EMOJI_MENU_ROOT_ID, MENU_OBSERVING_CLASS_NAME } from '.';
import { APP_LAYOUT_ROOT } from '../../modules/App/const';
import { Label, LabelColors, LabelTypography } from '../Label';

const defaultParentRect = { x: 0, y: 0, left: 0, top: 0, height: 0 };
type SpaceFromTrigger = { x: number, y: number };
Expand Down Expand Up @@ -96,7 +97,7 @@ export const EmojiListItems = ({
}
setReactionStyle(reactionStyle);
}
}, []);
}, [children]);

const rootElement = document.getElementById(EMOJI_MENU_ROOT_ID);
if (rootElement) {
Expand All @@ -115,14 +116,26 @@ export const EmojiListItems = ({
top: `${Math.round(reactionStyle.top)}px`,
}}
>
<SortByRow
className="sendbird-dropdown__reaction-bar__row"
maxItemCount={8}
itemWidth={44}
itemHeight={40}
>
{children}
</SortByRow>
{Children.count(children) <= 0
? (
<Label
className="sendbird-dropdown__reaction-bar__emptyLabel"
type={LabelTypography.BODY_1}
color={LabelColors.ONBACKGROUND_1}
>
Emojis is not loaded yet.
</Label>
) : (
<SortByRow
className="sendbird-dropdown__reaction-bar__row"
maxItemCount={8}
itemWidth={44}
itemHeight={40}
>
{children}
</SortByRow>
)
}
</ul>
</div>,
rootElement,
Expand Down
4 changes: 1 addition & 3 deletions src/ui/EmojiReactions/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -121,16 +121,14 @@ const EmojiReactions = ({
</ReactionBadge>
)}
menuItems={(closeDropdown: () => void): ReactElement => {
if (filteredEmojis.length === 0) return null;

return (
<EmojiListItems
parentRef={addReactionRef}
parentContainRef={addReactionRef}
closeDropdown={closeDropdown}
spaceFromTrigger={spaceFromTrigger}
>
{getEmojiListByCategoryIds(emojiContainer, filterEmojiCategoryIds?.(message)).map((emoji: Emoji): ReactElement => {
{filteredEmojis.map((emoji: Emoji): ReactElement => {
const isReacted: boolean = (message?.reactions
?.find((reaction: Reaction): boolean => reaction.key === emoji.key)?.userIds
?.some((reactorId: string): boolean => reactorId === userId)) || false;
Expand Down
3 changes: 1 addition & 2 deletions src/ui/MessageContent/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -416,8 +416,7 @@ export function MessageContent(props: MessageContentProps): ReactElement {
message,
channel,
isByMe,
// @ts-ignore
emojiContainer: emojiContainer ?? new EmojiContainer({}),
emojiContainer: emojiContainer,
memberNicknamesMap: nicknamesMap ?? new Map(),
toggleReaction,
onPressUserProfile: onPressUserProfileHandler,
Expand Down
2 changes: 0 additions & 2 deletions src/ui/MessageItemReactionMenu/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,6 @@ export function MessageEmojiMenu({
</IconButton>
)}
menuItems={(closeDropdown: () => void): ReactElement => {
if (filteredEmojis.length === 0) return null;

return (
<EmojiListItems
id={getObservingId(message.messageId)}
Expand Down
2 changes: 1 addition & 1 deletion src/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,7 @@ export const getEmojiMapAll = (emojiContainer: EmojiContainer): Map<string, Emoj
return emojiMap;
};
export const getEmojiListByCategoryIds = (emojiContainer: EmojiContainer, categoryIds: number[]): Array<Emoji> => {
if (!categoryIds) return getEmojiListAll(emojiContainer);
if (!categoryIds) return getEmojiListAll(emojiContainer) || [];

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