11import React from "react"
22import PropTypes from "prop-types"
33import { fromJS } from "immutable"
4- import { defaultStatusCode } from "core/utils"
4+ import { defaultStatusCode , getAcceptControllingResponse } from "core/utils"
55
66export default class Responses extends React . Component {
77
@@ -14,6 +14,7 @@ export default class Responses extends React.Component {
1414 getComponent : PropTypes . func . isRequired ,
1515 specSelectors : PropTypes . object . isRequired ,
1616 specActions : PropTypes . object . isRequired ,
17+ oas3Actions : PropTypes . object . isRequired ,
1718 pathMethod : PropTypes . array . isRequired ,
1819 displayRequestDuration : PropTypes . bool . isRequired ,
1920 fn : PropTypes . object . isRequired ,
@@ -29,8 +30,28 @@ export default class Responses extends React.Component {
2930
3031 onChangeProducesWrapper = ( val ) => this . props . specActions . changeProducesValue ( this . props . pathMethod , val )
3132
33+ onResponseContentTypeChange = ( { controlsAcceptHeader, value } ) => {
34+ const { oas3Actions, pathMethod } = this . props
35+ if ( controlsAcceptHeader ) {
36+ oas3Actions . setResponseContentType ( {
37+ value,
38+ pathMethod
39+ } )
40+ }
41+ }
42+
3243 render ( ) {
33- let { responses, request, tryItOutResponse, getComponent, getConfigs, specSelectors, fn, producesValue, displayRequestDuration } = this . props
44+ let {
45+ responses,
46+ request,
47+ tryItOutResponse,
48+ getComponent,
49+ getConfigs,
50+ specSelectors,
51+ fn,
52+ producesValue,
53+ displayRequestDuration
54+ } = this . props
3455 let defaultCode = defaultStatusCode ( responses )
3556
3657 const ContentType = getComponent ( "contentType" )
@@ -39,6 +60,11 @@ export default class Responses extends React.Component {
3960
4061 let produces = this . props . produces && this . props . produces . size ? this . props . produces : Responses . defaultProps . produces
4162
63+ const isSpecOAS3 = specSelectors . isOAS3 ( )
64+
65+ const acceptControllingResponse = isSpecOAS3 ?
66+ getAcceptControllingResponse ( responses ) : null
67+
4268 return (
4369 < div className = "responses-wrapper" >
4470 < div className = "opblock-section-header" >
@@ -78,7 +104,6 @@ export default class Responses extends React.Component {
78104 < tbody >
79105 {
80106 responses . entrySeq ( ) . map ( ( [ code , response ] ) => {
81-
82107 let className = tryItOutResponse && tryItOutResponse . get ( "status" ) == code ? "response_current" : ""
83108 return (
84109 < Response key = { code }
@@ -88,6 +113,8 @@ export default class Responses extends React.Component {
88113 code = { code }
89114 response = { response }
90115 specSelectors = { specSelectors }
116+ controlsAcceptHeader = { response === acceptControllingResponse }
117+ onContentTypeChange = { this . onResponseContentTypeChange }
91118 contentType = { producesValue }
92119 getComponent = { getComponent } />
93120 )
0 commit comments