From b60ddb3b9e6f99f73f271b4417c957f5d26a5538 Mon Sep 17 00:00:00 2001 From: HoonBaek Date: Fri, 31 Mar 2023 16:33:23 +0900 Subject: [PATCH 1/2] Modify condition of checking parent and thread messages --- src/smart-components/Thread/context/ThreadProvider.tsx | 2 +- src/smart-components/Thread/context/utils.ts | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/smart-components/Thread/context/ThreadProvider.tsx b/src/smart-components/Thread/context/ThreadProvider.tsx index 885e9d064..37ed88b84 100644 --- a/src/smart-components/Thread/context/ThreadProvider.tsx +++ b/src/smart-components/Thread/context/ThreadProvider.tsx @@ -145,7 +145,7 @@ export const ThreadProvider: React.FC = (props: ThreadProvi sdkInit, currentChannel, parentMessage, - }, { logger, pubSub, threadDispatcher }) + }, { logger, pubSub, threadDispatcher }); // callbacks const fetchPrevThreads = useGetPrevThreadsCallback({ diff --git a/src/smart-components/Thread/context/utils.ts b/src/smart-components/Thread/context/utils.ts index c8a437f17..234df8bc4 100644 --- a/src/smart-components/Thread/context/utils.ts +++ b/src/smart-components/Thread/context/utils.ts @@ -25,15 +25,14 @@ export const getParentMessageFrom = (message: UserMessage | FileMessage): UserMe export const isParentMessage = (message: UserMessage | FileMessage): boolean => { return ( message?.parentMessage === null - && message?.parentMessageId === null - && message?.threadInfo !== null + && !message?.parentMessageId ); }; export const isThreadMessage = (message: UserMessage | FileMessage): boolean => { return ( message?.parentMessage !== null - && message?.parentMessageId !== null + && message?.parentMessageId && message?.threadInfo === null ); }; From 875d1a6196cf9897cc093d4a7f3cc5a0d35826b8 Mon Sep 17 00:00:00 2001 From: HoonBaek Date: Fri, 31 Mar 2023 17:57:38 +0900 Subject: [PATCH 2/2] Check type of message ids in the util function: isParentMessage, isThreadMessage --- .../Thread/context/__test__/utils.spec.ts | 18 ++++++++++++------ src/smart-components/Thread/context/utils.ts | 4 +++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/smart-components/Thread/context/__test__/utils.spec.ts b/src/smart-components/Thread/context/__test__/utils.spec.ts index 00b18f553..a2e668492 100644 --- a/src/smart-components/Thread/context/__test__/utils.spec.ts +++ b/src/smart-components/Thread/context/__test__/utils.spec.ts @@ -2,20 +2,20 @@ import { UserMessage } from "@sendbird/chat/message"; import { getParentMessageFrom, isParentMessage, isThreadMessage } from "../utils"; const mockParentMessage = { - messageId: 1, + messageId: 111111, parentMessage: null, - parentMessageId: null, + parentMessageId: 0, threadInfo: { - lastRepliedAt: 100000, + lastRepliedAt: 1000, replyCount: 1, mostRepliedUsers: [], - updatedAt: 100000, + updatedAt: 1000, }, }; const mockThreadMessage = { - messageId: 2, + messageId: 111112, parentMessage: mockParentMessage, - parentMessageId: 1, + parentMessageId: 111111, threadInfo: null, }; @@ -26,6 +26,9 @@ describe('Thread/utils - isParentMessage', () => { it('should confirm if the message is not a parent message', () => { expect(isParentMessage(mockThreadMessage as UserMessage)).toBe(false); }); + it('should check type of the parentMessageId', () => { + expect(isParentMessage({ ...mockParentMessage, parentMessageId: '1' } as UserMessage)).toBe(false); + }); }); describe('Thread/utils - isThreadMessage', () => { @@ -35,6 +38,9 @@ describe('Thread/utils - isThreadMessage', () => { it('should comfirm if the message is not a thread message', () => { expect(isThreadMessage(mockParentMessage as UserMessage)).toBe(false); }); + it('should check type of the parentMessageId', () => { + expect(isThreadMessage({ ...mockThreadMessage, parentMessageId: '1' } as UserMessage)).toBe(false); + }); }); describe('Thread/utils - getParentMessageFrom', () => { diff --git a/src/smart-components/Thread/context/utils.ts b/src/smart-components/Thread/context/utils.ts index 234df8bc4..0ef270c57 100644 --- a/src/smart-components/Thread/context/utils.ts +++ b/src/smart-components/Thread/context/utils.ts @@ -25,6 +25,7 @@ export const getParentMessageFrom = (message: UserMessage | FileMessage): UserMe export const isParentMessage = (message: UserMessage | FileMessage): boolean => { return ( message?.parentMessage === null + && typeof message?.parentMessageId === 'number' && !message?.parentMessageId ); }; @@ -32,7 +33,8 @@ export const isParentMessage = (message: UserMessage | FileMessage): boolean => export const isThreadMessage = (message: UserMessage | FileMessage): boolean => { return ( message?.parentMessage !== null - && message?.parentMessageId + && typeof message?.parentMessageId === 'number' + && message?.parentMessageId > 0 && message?.threadInfo === null ); };