diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Details/Messages/Message.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Details/Messages/Message.tsx index 3915410560..9112b5e1df 100644 --- a/kafka-ui-react-app/src/components/Topics/Topic/Details/Messages/Message.tsx +++ b/kafka-ui-react-app/src/components/Topics/Topic/Details/Messages/Message.tsx @@ -27,6 +27,8 @@ const Message: React.FC<{ message: TopicMessage }> = ({ key, partition, content, + valueFormat, + keyFormat, headers, }, }) => { @@ -72,7 +74,9 @@ const Message: React.FC<{ message: TopicMessage }> = ({ {isOpen && ( td { padding: 16px; @@ -14,7 +14,7 @@ export const MessageContentWrapper = styled.tr` } `; -export const StyledSection = styled.div` +export const Section = styled.div` padding: 0 16px; display: flex; gap: 1px; diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Details/Messages/MessageContent/MessageContent.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Details/Messages/MessageContent/MessageContent.tsx index 207d4dba72..8ccb493787 100644 --- a/kafka-ui-react-app/src/components/Topics/Topic/Details/Messages/MessageContent/MessageContent.tsx +++ b/kafka-ui-react-app/src/components/Topics/Topic/Details/Messages/MessageContent/MessageContent.tsx @@ -2,25 +2,17 @@ import { TopicMessageTimestampTypeEnum } from 'generated-sources'; import React from 'react'; import JSONViewer from 'components/common/JSONViewer/JSONViewer'; import { SecondaryTabs } from 'components/common/Tabs/SecondaryTabs.styled'; -import { isObject } from 'lodash'; import BytesFormatted from 'components/common/BytesFormatted/BytesFormatted'; -import { - ContentBox, - StyledSection, - MessageContentWrapper, - Metadata, - MetadataLabel, - MetadataMeta, - MetadataValue, - MetadataWrapper, -} from './MessageContent.styled'; +import * as S from './MessageContent.styled'; type Tab = 'key' | 'content' | 'headers'; export interface MessageContentProps { messageKey?: string; + messageKeyFormat?: string; messageContent?: string; + messageContentFormat?: string; headers?: { [key: string]: string | undefined }; timestamp?: Date; timestampType?: TopicMessageTimestampTypeEnum; @@ -28,7 +20,9 @@ export interface MessageContentProps { const MessageContent: React.FC = ({ messageKey, + messageKeyFormat, messageContent, + messageContentFormat, headers, timestamp, timestampType, @@ -58,25 +52,12 @@ const MessageContent: React.FC = ({ }; const keySize = new TextEncoder().encode(messageKey).length; const contentSize = new TextEncoder().encode(messageContent).length; - const isContentJson = () => { - try { - return isObject(messageContent && JSON.parse(messageContent)); - } catch { - return false; - } - }; - const isKeyJson = () => { - try { - return isObject(messageKey && JSON.parse(messageKey)); - } catch { - return false; - } - }; + return ( - + - - + + - - - - Timestamp + + + + Timestamp - {timestamp?.toLocaleString()} - Timestamp type: {timestampType} + {timestamp?.toLocaleString()} + Timestamp type: {timestampType} - + - - Content + + Content - - {isContentJson() ? 'JSON' : 'Text'} - - + {messageContentFormat} + Size: - + - + - - Key + + Key - {isKeyJson() ? 'JSON' : 'Text'} - + {messageKeyFormat} + Size: - + - - - + + + - + ); }; diff --git a/kafka-ui-react-app/src/components/Topics/Topic/Details/Messages/MessageContent/__tests__/MessageContent.spec.tsx b/kafka-ui-react-app/src/components/Topics/Topic/Details/Messages/MessageContent/__tests__/MessageContent.spec.tsx index ad0f65380b..2a085d97ce 100644 --- a/kafka-ui-react-app/src/components/Topics/Topic/Details/Messages/MessageContent/__tests__/MessageContent.spec.tsx +++ b/kafka-ui-react-app/src/components/Topics/Topic/Details/Messages/MessageContent/__tests__/MessageContent.spec.tsx @@ -15,7 +15,9 @@ const setupWrapper = (props?: Partial) => { { beforeEach(() => { render(setupWrapper()); }); + + describe('renders', () => { + it('key format in document', () => { + expect(screen.getByText('JSON')).toBeInTheDocument(); + }); + + it('content format in document', () => { + expect(screen.getByText('AVRO')).toBeInTheDocument(); + }); + }); + describe('when switched to display the key', () => { it('has a tab with is-active classname', () => { const keyTab = screen.getAllByText('Key');