From dbaab9e30611b5be1c32689c57264c203532e5a7 Mon Sep 17 00:00:00 2001 From: Shelby Sanders Date: Thu, 8 Oct 2020 13:44:56 -0700 Subject: [PATCH] Add showExtentions for Responses --- src/components/Responses/Response.tsx | 4 ++-- src/components/Responses/ResponseDetails.tsx | 4 +++- src/services/models/Response.ts | 11 ++++++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/components/Responses/Response.tsx b/src/components/Responses/Response.tsx index 58e0ae32..6d1e1a28 100644 --- a/src/components/Responses/Response.tsx +++ b/src/components/Responses/Response.tsx @@ -12,11 +12,11 @@ export class ResponseView extends React.Component<{ response: ResponseModel }> { }; render() { - const { headers, type, summary, description, code, expanded, content } = this.props.response; + const { extensions, headers, type, summary, description, code, expanded, content } = this.props.response; const mimes = content === undefined ? [] : content.mediaTypes.filter(mime => mime.schema !== undefined); - const empty = headers.length === 0 && mimes.length === 0 && !description; + const empty = Object.keys(extensions).length === 0 && headers.length === 0 && mimes.length === 0 && !description; return (
diff --git a/src/components/Responses/ResponseDetails.tsx b/src/components/Responses/ResponseDetails.tsx index 821fc2da..3794eba1 100644 --- a/src/components/Responses/ResponseDetails.tsx +++ b/src/components/Responses/ResponseDetails.tsx @@ -7,15 +7,17 @@ import { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel'; import { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch'; import { Schema } from '../Schema'; +import { Extensions } from '../Fields/Extensions'; import { Markdown } from '../Markdown/Markdown'; import { ResponseHeaders } from './ResponseHeaders'; export class ResponseDetails extends React.PureComponent<{ response: ResponseModel }> { render() { - const { description, headers, content } = this.props.response; + const { description, extensions, headers, content } = this.props.response; return ( <> {description && } + {({ schema }) => { diff --git a/src/services/models/Response.ts b/src/services/models/Response.ts index 3fc4d06c..acd10c0d 100644 --- a/src/services/models/Response.ts +++ b/src/services/models/Response.ts @@ -2,7 +2,10 @@ import { action, observable } from 'mobx'; import { OpenAPIResponse, Referenced } from '../../types'; -import { getStatusCodeType } from '../../utils'; +import { + getStatusCodeType, + extractExtensions +} from '../../utils'; import { OpenAPIParser } from '../OpenAPIParser'; import { RedocNormalizedOptions } from '../RedocNormalizedOptions'; import { FieldModel } from './Field'; @@ -19,6 +22,8 @@ export class ResponseModel { type: string; headers: FieldModel[] = []; + extensions: Record; + constructor( parser: OpenAPIParser, code: string, @@ -52,6 +57,10 @@ export class ResponseModel { return new FieldModel(parser, { ...header, name }, '', options); }); } + + if (options.showExtensions) { + this.extensions = extractExtensions(info, options.showExtensions); + } } @action