Skip to content

Commit 94ebe74

Browse files
committed
Add render~~ props to the ThreadListItem comp
1 parent 022c0b2 commit 94ebe74

File tree

3 files changed

+19
-24
lines changed

3 files changed

+19
-24
lines changed

src/modules/Thread/components/ThreadList/ThreadListItem.tsx

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useMemo, useState, useRef, useEffect, useLayoutEffect, ReactNode } from 'react';
1+
import React, { useMemo, useState, useRef, useEffect, useLayoutEffect } from 'react';
22
import format from 'date-fns/format';
33
import type { FileMessage, MultipleFilesMessage } from '@sendbird/chat/message';
44

@@ -21,32 +21,28 @@ import { SendableMessageType } from '../../../../utils';
2121
import { User } from '@sendbird/chat';
2222
import { getCaseResolvedReplyType } from '../../../../lib/utils/resolvedReplyType';
2323
import { classnames } from '../../../../utils/utils';
24-
import type { MessageMenuProps } from '../../../../ui/MessageMenu';
25-
import type { MessageEmojiMenuProps } from '../../../../ui/MessageItemReactionMenu';
24+
import { MessageComponentRenderers } from '../../../../ui/MessageContent';
2625

27-
export interface ThreadListItemProps {
26+
export interface ThreadListItemProps extends MessageComponentRenderers {
2827
className?: string;
2928
message: SendableMessageType;
3029
chainTop?: boolean;
3130
chainBottom?: boolean;
3231
hasSeparator?: boolean;
3332
renderCustomSeparator?: (props: { message: SendableMessageType }) => React.ReactElement;
3433
handleScroll?: () => void;
35-
renderEmojiMenu?: (props: MessageEmojiMenuProps) => ReactNode;
36-
renderMessageMenu?: (props: MessageMenuProps) => ReactNode;
3734
}
3835

39-
export default function ThreadListItem({
40-
className,
41-
message,
42-
chainTop,
43-
chainBottom,
44-
hasSeparator,
45-
renderCustomSeparator,
46-
handleScroll,
47-
renderEmojiMenu,
48-
renderMessageMenu,
49-
}: ThreadListItemProps): React.ReactElement {
36+
export default function ThreadListItem(props: ThreadListItemProps): React.ReactElement {
37+
const {
38+
className,
39+
message,
40+
chainTop,
41+
chainBottom,
42+
hasSeparator,
43+
renderCustomSeparator,
44+
handleScroll,
45+
} = props;
5046
const { stores, config } = useSendbirdStateContext();
5147
const { isOnline, userMention, logger, groupChannel } = config;
5248
const userId = stores?.userStore?.user?.userId;
@@ -237,6 +233,7 @@ export default function ThreadListItem({
237233
))
238234
}
239235
<ThreadListItemContent
236+
{...props}
240237
userId={userId}
241238
channel={currentChannel}
242239
message={message}
@@ -252,8 +249,6 @@ export default function ThreadListItem({
252249
showFileViewer={setShowFileViewer}
253250
toggleReaction={toggleReaction}
254251
showEdit={setShowEdit}
255-
renderEmojiMenu={renderEmojiMenu}
256-
renderMessageMenu={renderMessageMenu}
257252
/>
258253
{/* modal */}
259254
{showRemove && (

src/modules/Thread/components/ThreadList/ThreadListItemContent.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ import { useThreadContext } from '../../context/ThreadProvider';
3131
import { classnames, deleteNullish } from '../../../../utils/utils';
3232
import { MessageMenu, MessageMenuProps } from '../../../../ui/MessageMenu';
3333
import useElementObserver from '../../../../hooks/useElementObserver';
34-
import type { MessageContentRenderSubComponentProps } from '../../../../ui/MessageContent';
34+
import type { MessageComponentRenderers } from '../../../../ui/MessageContent';
3535
import MessageProfile, { MessageProfileProps } from '../../../../ui/MessageContent/MessageProfile';
3636
import MessageBody, { CustomSubcomponentsProps, MessageBodyProps } from '../../../../ui/MessageContent/MessageBody';
3737
import { MessageHeaderProps, MessageHeader } from '../../../../ui/MessageContent/MessageHeader';
3838
import { MobileBottomSheetProps } from '../../../../ui/MobileMenu/types';
3939

40-
export interface ThreadListItemContentProps extends MessageContentRenderSubComponentProps {
40+
export interface ThreadListItemContentProps extends MessageComponentRenderers {
4141
className?: string;
4242
userId: string;
4343
channel: GroupChannel;

src/ui/MessageContent/index.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export { MessageBody } from './MessageBody';
5353
export { MessageHeader } from './MessageHeader';
5454
export { MessageProfile } from './MessageProfile';
5555

56-
export interface MessageContentProps extends MessageContentRenderSubComponentProps {
56+
export interface MessageContentProps extends MessageComponentRenderers {
5757
className?: string | Array<string>;
5858
userId: string;
5959
channel: Nullable<GroupChannel>;
@@ -83,7 +83,7 @@ export interface MessageContentProps extends MessageContentRenderSubComponentPro
8383
onBeforeDownloadFileMessage?: OnBeforeDownloadFileMessageType;
8484
}
8585

86-
export interface MessageContentRenderSubComponentProps {
86+
export interface MessageComponentRenderers {
8787
renderSenderProfile?: (props: MessageProfileProps) => ReactNode;
8888
renderMessageBody?: (props: MessageBodyProps) => ReactNode;
8989
renderMessageHeader?: (props: MessageHeaderProps) => ReactNode;
@@ -337,7 +337,7 @@ export function MessageContent(props: MessageContentProps): ReactElement {
337337
ref={contentRef}
338338
>
339339
{
340-
!isByMe && !chainTop && !useReplying && renderMessageHeader(props)
340+
(!isByMe && !chainTop && !useReplying) && renderMessageHeader(props)
341341
}
342342
{/* quote message */}
343343
{(useReplying) ? (

0 commit comments

Comments
 (0)