Skip to content

Commit

Permalink
Merge pull request #5728 from marmelab/Fix-EditGuesser
Browse files Browse the repository at this point in the history
Fix EditGuesser is broken
  • Loading branch information
djhi authored Jan 4, 2021
2 parents 726be45 + 444931b commit 24c6d68
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
4 changes: 2 additions & 2 deletions packages/ra-core/src/core/useResourceContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { ResourceContext, ResourceContextValue } from './ResourceContext';
export const useResourceContext = <
ResourceInformationsType extends Partial<{ resource: string }>
>(
props: ResourceInformationsType
props?: ResourceInformationsType
): ResourceContextValue => {
const context = useContext(ResourceContext);

Expand All @@ -29,7 +29,7 @@ export const useResourceContext = <
// );
}
// Ignored because resource is often optional (as it is injected) in components which passes the props to this hook
return props.resource;
return props && props.resource;
}

return context;
Expand Down
17 changes: 13 additions & 4 deletions packages/ra-ui-materialui/src/detail/EditGuesser.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,19 @@ import { useEffect, useState } from 'react';
import inflection from 'inflection';
import {
useEditController,
EditContextProvider,
InferredElement,
useResourceContext,
useEditContext,
getElementsFromRecords,
} from 'ra-core';

import { EditView } from './EditView';
import editFieldTypes from './editFieldTypes';

const EditViewGuesser = props => {
const { record, resource } = props;
const resource = useResourceContext();
const { record } = useEditContext();
const [inferredChild, setInferredChild] = useState(null);
useEffect(() => {
if (record && !inferredChild) {
Expand Down Expand Up @@ -47,8 +51,13 @@ ${inferredChild.getRepresentation()}

EditViewGuesser.propTypes = EditView.propTypes;

const EditGuesser = props => (
<EditViewGuesser {...props} {...useEditController(props)} />
);
const EditGuesser = props => {
const controllerProps = useEditController(props);
return (
<EditContextProvider value={controllerProps}>
<EditViewGuesser {...props} />
</EditContextProvider>
);
};

export default EditGuesser;

0 comments on commit 24c6d68

Please sign in to comment.