diff --git a/library/src/containers/Messages/MessageExample.tsx b/library/src/containers/Messages/MessageExample.tsx index d2fcb7c63..37dc89016 100644 --- a/library/src/containers/Messages/MessageExample.tsx +++ b/library/src/containers/Messages/MessageExample.tsx @@ -54,7 +54,6 @@ export const Example: React.FunctionComponent = ({ const [expanded, setExpanded] = useState( config?.expand?.messageExamples ?? false, ); - useEffect(() => { setExpanded(config?.expand?.messageExamples ?? false); // eslint-disable-next-line react-hooks/exhaustive-deps diff --git a/library/src/helpers/__tests__/message.test.ts b/library/src/helpers/__tests__/message.test.ts index 55f5e960c..e3e61aa6c 100644 --- a/library/src/helpers/__tests__/message.test.ts +++ b/library/src/helpers/__tests__/message.test.ts @@ -21,6 +21,24 @@ describe('MessageHelpers', () => { b: 0, }); }); + + test('should generate example from multi-format schema', () => { + expect( + MessageHelpers.generateExample({ + schemaFormat: 'application/vnd.aai.asyncapi+json;version=3.0.0', + schema: { + type: 'object', + properties: { + userId: { type: 'string' }, + age: { type: 'integer' }, + }, + }, + }), + ).toEqual({ + userId: 'string', + age: 0, + }); + }); }); describe('.sanitizeExample', () => { diff --git a/library/src/helpers/message.ts b/library/src/helpers/message.ts index aa9bc487d..2501a310d 100644 --- a/library/src/helpers/message.ts +++ b/library/src/helpers/message.ts @@ -8,8 +8,16 @@ export class MessageHelpers { // eslint-disable-next-line @typescript-eslint/no-explicit-any static generateExample(schema: any, options: any = {}) { try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const resolvedSchema = + schema && + typeof schema === 'object' && + 'schemaFormat' in schema && + 'schema' in schema + ? (schema as { schema: unknown }).schema + : schema; // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument - return this.sanitizeExample(sample(schema, options)) || ''; + return this.sanitizeExample(sample(resolvedSchema, options)) || ''; } catch (e) { return ''; }