Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

housekeeping: prevent log warning for missing getComponent in production #5919

Merged
merged 7 commits into from
Apr 1, 2020
6 changes: 4 additions & 2 deletions src/core/json-schema-components.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,10 @@ export class JsonSchemaForm extends Component {
schema = schema.toJS()

let { type, format="" } = schema

let Comp = (format ? getComponent(`JsonSchema_${type}_${format}`) : getComponent(`JsonSchema_${type}`)) || getComponent("JsonSchema_string")
// In the json schema rendering code, we optimistically query our system for a number of components.
// If the component doesn't exist, we optionally suppress these warnings.
let getComponentSilently = (name) => getComponent(name, false, { failSilently: true })
let Comp = (format ? getComponentSilently(`JsonSchema_${type}_${format}`) : getComponentSilently(`JsonSchema_${type}`)) || getComponentSilently("JsonSchema_string")
return <Comp { ...this.props } errors={errors} fn={fn} getComponent={getComponent} value={value} onChange={onChange} schema={schema} disabled={disabled}/>
}

Expand Down
9 changes: 7 additions & 2 deletions src/core/plugins/view/root-injects.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -101,15 +101,20 @@ const wrapRender = (component) => {
}


export const getComponent = (getSystem, getStore, getComponents, componentName, container) => {
export const getComponent = (getSystem, getStore, getComponents, componentName, container, config = {}) => {

if(typeof componentName !== "string")
throw new TypeError("Need a string, to fetch a component. Was given a " + typeof componentName)

// getComponent has a config object as a third, optional parameter
// using the config object requires the presence of the second parameter, container
// e.g. getComponent("JsonSchema_string_whatever", false, { failSilently: true })
let component = getComponents(componentName)

if(!component) {
getSystem().log.warn("Could not find component", componentName)
if (!config.failSilently) {
getSystem().log.warn("Could not find component:", componentName)
}
return null
}

Expand Down