Skip to content
Snippets Groups Projects
Commit 65ffba34 authored by Tom Robinson's avatar Tom Robinson
Browse files

Add types to EntityObjectLoader

parent 103fea95
No related branches found
No related tags found
No related merge requests found
/* @flow weak */
/* @flow */
import React from "react";
import { connect } from "react-redux";
......@@ -6,6 +6,19 @@ import { connect } from "react-redux";
import entityType from "./EntityType";
import LoadingAndErrorWrapper from "metabase/components/LoadingAndErrorWrapper";
export type Props = {
entityType?: string,
loadingAndErrorWrapper: boolean,
children: (props: RenderProps) => ?React$Element<any>,
};
export type RenderProps = {
object: ?any,
loading: boolean,
error: ?any,
remove: () => Promise<void>,
};
@entityType()
@connect((state, { entityDef, entityId }) => ({
object: entityDef.selectors.getObject(state, { entityId }),
......@@ -13,23 +26,30 @@ import LoadingAndErrorWrapper from "metabase/components/LoadingAndErrorWrapper";
error: entityDef.selectors.getError(state, { entityId }),
}))
export default class EntitiesObjectLoader extends React.Component {
props: Props;
static defaultProps = {
loadingAndErrorWrapper: true,
};
componentWillMount() {
// $FlowFixMe: provided by @connect
const { entityId, fetch } = this.props;
fetch({ id: entityId });
}
componentWillReceiveProps({ entityId, fetch }) {
if (entityId !== this.props.entityId) {
fetch({ id: entityId });
componentWillReceiveProps(nextProps: Props) {
// $FlowFixMe: provided by @connect
if (nextProps.entityId !== this.props.entityId) {
nextProps.fetch({ id: nextProps.entityId });
}
}
renderChildren = () => {
// $FlowFixMe: provided by @connect
const { children, object, loading, error } = this.props;
return children({ object, loading, error, remove: this._remove });
};
render() {
// $FlowFixMe: provided by @connect
const { loading, error, loadingAndErrorWrapper } = this.props;
return loadingAndErrorWrapper ? (
<LoadingAndErrorWrapper
......@@ -43,7 +63,7 @@ export default class EntitiesObjectLoader extends React.Component {
}
_remove = () => {
const { object } = this.props;
return this.props.delete(object);
// $FlowFixMe: provided by @connect
return this.props.delete(this.props.object);
};
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment