fix(serverVariables): refresh state on definition change (#7821)
* fix(serverVariables): refresh state on definition change * test(serverVariables): urls with server variables assertions
This commit is contained in:
@@ -31,22 +31,33 @@ export default class Servers extends React.Component {
|
||||
setServerVariableValue,
|
||||
getServerVariable
|
||||
} = nextProps
|
||||
|
||||
if (this.props.currentServer !== nextProps.currentServer || this.props.servers !== nextProps.servers) {
|
||||
// Server has changed, we may need to set default values
|
||||
let currentServerDefinition = servers
|
||||
.find(v => v.get("url") === nextProps.currentServer)
|
||||
|
||||
let prevServerDefinition = this.props.servers
|
||||
.find(v => v.get("url") === this.props.currentServer) || OrderedMap()
|
||||
|
||||
if(!currentServerDefinition) {
|
||||
return this.setServer(servers.first().get("url"))
|
||||
}
|
||||
|
||||
|
||||
let prevServerVariableDefs = prevServerDefinition.get("variables") || OrderedMap()
|
||||
let prevServerVariableDefaultKey = prevServerVariableDefs.find(v => v.get("default")) || OrderedMap()
|
||||
let prevServerVariableDefaultValue = prevServerVariableDefaultKey.get("default")
|
||||
|
||||
let currentServerVariableDefs = currentServerDefinition.get("variables") || OrderedMap()
|
||||
|
||||
let currentServerVariableDefaultKey = currentServerVariableDefs.find(v => v.get("default")) || OrderedMap()
|
||||
let currentServerVariableDefaultValue = currentServerVariableDefaultKey.get("default")
|
||||
|
||||
currentServerVariableDefs.map((val, key) => {
|
||||
let currentValue = getServerVariable(nextProps.currentServer, key)
|
||||
|
||||
// note: it is possible for both key/val to be the same across definitions,
|
||||
// but we will try to detect a change in default values between definitions
|
||||
// only set the default value if the user hasn't set one yet
|
||||
if(!currentValue) {
|
||||
// or if the definition appears to have changed
|
||||
if (!currentValue || prevServerVariableDefaultValue !== currentServerVariableDefaultValue) {
|
||||
setServerVariableValue({
|
||||
server: nextProps.currentServer,
|
||||
key,
|
||||
|
||||
Reference in New Issue
Block a user