From 89cb8b3161e5f04459cd67cae8acf197e8070a5f Mon Sep 17 00:00:00 2001 From: HoonBaek Date: Tue, 6 Feb 2024 16:13:52 +0900 Subject: [PATCH 1/2] Fix cannot delete object property error of renderMessage --- src/utils/omitObjectProperty.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/utils/omitObjectProperty.ts b/src/utils/omitObjectProperty.ts index d57d8b1fd..e12da7b78 100644 --- a/src/utils/omitObjectProperty.ts +++ b/src/utils/omitObjectProperty.ts @@ -1,6 +1,7 @@ -export function omitObjectProperties>(obj: O, properties: string[]) { +export function omitObjectProperties>(obj: O, properties: string[]): O { + const newObj = { ...obj }; properties.forEach((propertyName) => { - if (Object.hasOwn(obj, propertyName)) delete obj[propertyName]; + if (Object.hasOwn(newObj, propertyName)) delete newObj[propertyName]; }); - return obj; + return newObj; } From 8e56bb7b7bb4dc89d0e5bb4429d3369672d3aa1e Mon Sep 17 00:00:00 2001 From: HoonBaek Date: Wed, 7 Feb 2024 13:37:04 +0900 Subject: [PATCH 2/2] remove omitObjectProperty --- .../components/Message/MessageView.tsx | 3 +- .../__tests__/omitObjectProperties.spec.ts | 38 ------------------- src/utils/omitObjectProperty.ts | 7 ---- 3 files changed, 1 insertion(+), 47 deletions(-) delete mode 100644 src/utils/__tests__/omitObjectProperties.spec.ts delete mode 100644 src/utils/omitObjectProperty.ts diff --git a/src/modules/GroupChannel/components/Message/MessageView.tsx b/src/modules/GroupChannel/components/Message/MessageView.tsx index 7d37628ca..8f798aff1 100644 --- a/src/modules/GroupChannel/components/Message/MessageView.tsx +++ b/src/modules/GroupChannel/components/Message/MessageView.tsx @@ -17,7 +17,6 @@ import Label, { LabelColors, LabelTypography } from '../../../../ui/Label'; import MessageInput from '../../../../ui/MessageInput'; import { MessageInputKeys } from '../../../../ui/MessageInput/const'; import MessageContent, { MessageContentProps } from '../../../../ui/MessageContent'; -import { omitObjectProperties } from '../../../../utils/omitObjectProperty'; import SuggestedReplies from '../SuggestedReplies'; import SuggestedMentionListView from '../SuggestedMentionList/SuggestedMentionListView'; @@ -228,7 +227,7 @@ const MessageView = (props: MessageViewProps) => { }, [animatedMessageId, messageScrollRef.current, message.messageId]); const renderedCustomSeparator = useMemo(() => renderCustomSeparator?.({ message }) ?? null, [message, renderCustomSeparator]); - const renderedMessage = useMemo(() => renderMessage?.(omitObjectProperties(props, ['renderMessage'])), [message, renderMessage]); + const renderedMessage = useMemo(() => renderMessage?.(props), [message, renderMessage]); if (renderedMessage) { return ( diff --git a/src/utils/__tests__/omitObjectProperties.spec.ts b/src/utils/__tests__/omitObjectProperties.spec.ts deleted file mode 100644 index 032dd0700..000000000 --- a/src/utils/__tests__/omitObjectProperties.spec.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { omitObjectProperties } from '../omitObjectProperty'; - -const mockObject = { - a: 'a', - b: 'b', - c: 'c', - one: 1, - two: 2, - null: null, - undefined: undefined, -}; - -describe('Global-utils/omitObjectProperties', () => { - it('should omit the existing properties from object', () => { - expect(omitObjectProperties(mockObject, ['a', 'two', 'null', 'undefined'])) - .toEqual({ - b: 'b', - c: 'c', - one: 1, - }); - }); - - it('should not omit not-existing properties', () => { - expect(omitObjectProperties(mockObject, ['d', 'three', 'NaN'])) - .toEqual(mockObject); - }); - - it('should not affect to the original object', () => { - const clone = { ...mockObject }; - expect(omitObjectProperties(mockObject, ['a', 'two', 'null', 'undefined'])) - .toEqual({ - b: 'b', - c: 'c', - one: 1, - }); - expect(mockObject).toEqual(clone); - }); -}); diff --git a/src/utils/omitObjectProperty.ts b/src/utils/omitObjectProperty.ts deleted file mode 100644 index e12da7b78..000000000 --- a/src/utils/omitObjectProperty.ts +++ /dev/null @@ -1,7 +0,0 @@ -export function omitObjectProperties>(obj: O, properties: string[]): O { - const newObj = { ...obj }; - properties.forEach((propertyName) => { - if (Object.hasOwn(newObj, propertyName)) delete newObj[propertyName]; - }); - return newObj; -}