Skip to content

Commit eb3c1ac

Browse files
authored
Merge pull request #5489 from marmelab/resource-context-scalar
Update the ResourceContext to store a scalar instead of an object
2 parents ef85fc1 + 3cd710f commit eb3c1ac

30 files changed

+32
-42
lines changed

packages/ra-core/src/controller/button/useDeleteWithConfirmController.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ const useDeleteWithConfirmController = (
7979
onSuccess,
8080
onFailure,
8181
} = props;
82-
const { resource } = useResourceContext(props);
82+
const resource = useResourceContext(props);
8383
const [open, setOpen] = useState(false);
8484
const notify = useNotify();
8585
const redirect = useRedirect();

packages/ra-core/src/controller/button/useDeleteWithUndoController.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ const useDeleteWithUndoController = (
5959
onSuccess,
6060
onFailure,
6161
} = props;
62-
const { resource } = useResourceContext(props);
62+
const resource = useResourceContext(props);
6363
const notify = useNotify();
6464
const redirect = useRedirect();
6565
const refresh = useRefresh();

packages/ra-core/src/controller/details/useCreateController.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ export const useCreateController = <
111111
transform,
112112
} = props;
113113

114-
const { resource } = useResourceContext(props);
114+
const resource = useResourceContext(props);
115115
const location = useLocation();
116116
const translate = useTranslate();
117117
const notify = useNotify();

packages/ra-core/src/controller/details/useEditController.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ export const useEditController = <RecordType extends Record = Record>(
105105
onFailure,
106106
transform,
107107
} = props;
108-
const { resource } = useResourceContext(props);
108+
const resource = useResourceContext(props);
109109
const translate = useTranslate();
110110
const notify = useNotify();
111111
const redirect = useRedirect();

packages/ra-core/src/controller/details/useShowController.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export const useShowController = <RecordType extends Record = Record>(
5959
): ShowControllerProps<RecordType> => {
6060
useCheckMinimumRequiredProps('Show', ['basePath', 'resource'], props);
6161
const { basePath, hasCreate, hasEdit, hasList, hasShow, id } = props;
62-
const { resource } = useResourceContext(props);
62+
const resource = useResourceContext(props);
6363
const translate = useTranslate();
6464
const notify = useNotify();
6565
const redirect = useRedirect();

packages/ra-core/src/controller/field/useReferenceArrayFieldController.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ const useReferenceArrayFieldController = (
6363
sort: initialSort = defaultSort,
6464
source,
6565
} = props;
66-
const { resource } = useResourceContext(props);
66+
const resource = useResourceContext(props);
6767
const notify = useNotify();
6868
const ids = get(record, source) || [];
6969
const { data, error, loading, loaded } = useGetMany(reference, ids, {

packages/ra-core/src/controller/field/useReferenceManyFieldController.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ const useReferenceManyFieldController = (
8080
perPage: initialPerPage,
8181
sort: initialSort = { field: 'id', order: 'DESC' },
8282
} = props;
83-
const { resource } = useResourceContext(props);
83+
const resource = useResourceContext(props);
8484
const notify = useNotify();
8585

8686
// pagination logic

packages/ra-core/src/controller/input/useGetMatchingReferences.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export default (
4848
sort,
4949
id,
5050
} = props;
51-
const { resource } = useResourceContext(props);
51+
const resource = useResourceContext(props);
5252
const dispatch = useDispatch();
5353

5454
useDeepCompareEffect(() => {

packages/ra-core/src/controller/input/useReferenceArrayInputController.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const useReferenceArrayInputController = (
5050
reference,
5151
source,
5252
} = props;
53-
const { resource } = useResourceContext(props);
53+
const resource = useResourceContext(props);
5454
const translate = useTranslate();
5555

5656
// We store the current input value in a ref so that we are able to fetch

packages/ra-core/src/controller/input/useReferenceInputController.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export const useReferenceInputController = (
7676
sort: sortOverride,
7777
source,
7878
} = props;
79-
const { resource } = useResourceContext(props);
79+
const resource = useResourceContext(props);
8080
const translate = useTranslate();
8181

8282
// pagination logic

packages/ra-core/src/controller/useListController.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ const useListController = <RecordType extends Record = Record>(
118118
filter,
119119
debounce = 500,
120120
} = props;
121-
const { resource } = useResourceContext(props);
121+
const resource = useResourceContext(props);
122122

123123
if (filter && isValidElement(filter)) {
124124
throw new Error(

packages/ra-core/src/core/Resource.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ const ResourceRoutes: FunctionComponent<ResourceProps> = ({
7171
}
7272

7373
return (
74-
<ResourceContextProvider value={resourceData}>
74+
<ResourceContextProvider value={name}>
7575
<Switch>
7676
{create && (
7777
<Route

packages/ra-core/src/core/ResourceContext.ts

+2-8
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { createContext } from 'react';
1010
* import { useResource, useTranslate } from 'ra-core';
1111
*
1212
* const MyCustomEditTitle = props => {
13-
* const { name } = useResource(props);
13+
* const name = useResource(props);
1414
*
1515
* return (
1616
* <h1>{translate(`${name}.name`)}</h1>
@@ -19,10 +19,4 @@ import { createContext } from 'react';
1919
*/
2020
export const ResourceContext = createContext<ResourceContextValue>(undefined);
2121

22-
export interface ResourceContextValue {
23-
resource: string;
24-
hasList: boolean;
25-
hasEdit: boolean;
26-
hasShow: boolean;
27-
hasCreate: boolean;
28-
}
22+
export type ResourceContextValue = string;

packages/ra-core/src/core/useResourceContext.ts

+3-6
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@ import { ResourceContext, ResourceContextValue } from './ResourceContext';
1010
* @returns {ResourceContextValue} The resource
1111
*/
1212
export const useResourceContext = <
13-
ResourceInformationsType extends Partial<
14-
ResourceContextValue
15-
> = ResourceContextValue
13+
ResourceInformationsType extends Partial<{ resource: string }>
1614
>(
1715
props: ResourceInformationsType
1816
): ResourceContextValue => {
1917
const context = useContext(ResourceContext);
2018

21-
if (!context || !context.resource) {
19+
if (!context) {
2220
/**
2321
* The element isn't inside a <ResourceContextProvider>
2422
*
@@ -30,8 +28,7 @@ export const useResourceContext = <
3028
);
3129
}
3230
// Ignored because resource is often optional (as it is injected) in components which passes the props to this hook
33-
// @ts-ignore
34-
return props;
31+
return props.resource;
3532
}
3633

3734
return context;

packages/ra-core/src/core/useResourceDefinition.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { useResourceContext } from './useResourceContext';
77
* Hook which returns the definition of the requested resource
88
*/
99
export const useResourceDefinition = (props): ResourceDefinition => {
10-
const { resource } = useResourceContext(props);
10+
const resource = useResourceContext(props);
1111
const resources = useSelector(getResources);
1212

1313
return resources.find(r => r?.name === resource) || props;

packages/ra-ui-materialui/src/button/BulkDeleteWithConfirmButton.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ const BulkDeleteWithConfirmButton: FC<BulkDeleteWithConfirmButtonProps> = props
5555
const unselectAll = useUnselectAll();
5656
const refresh = useRefresh();
5757
const translate = useTranslate();
58-
const { resource } = useResourceContext(props);
58+
const resource = useResourceContext(props);
5959
const [deleteMany, { loading }] = useDeleteMany(resource, selectedIds, {
6060
action: CRUD_DELETE_MANY,
6161
onSuccess: () => {

packages/ra-ui-materialui/src/button/BulkDeleteWithUndoButton.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ const BulkDeleteWithUndoButton: FC<BulkDeleteWithUndoButtonProps> = props => {
4646
const notify = useNotify();
4747
const unselectAll = useUnselectAll();
4848
const refresh = useRefresh();
49-
const { resource } = useResourceContext(props);
49+
const resource = useResourceContext(props);
5050
const [deleteMany, { loading }] = useDeleteMany(resource, selectedIds, {
5151
action: CRUD_DELETE_MANY,
5252
onSuccess: () => {

packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ const DeleteWithConfirmButton: FC<DeleteWithConfirmButtonProps> = props => {
5656
onSuccess,
5757
onFailure,
5858
});
59-
const { resource } = useResourceContext(props);
59+
const resource = useResourceContext(props);
6060

6161
return (
6262
<Fragment>

packages/ra-ui-materialui/src/button/DeleteWithUndoButton.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const DeleteWithUndoButton: FC<DeleteWithUndoButtonProps> = props => {
3131
...rest
3232
} = props;
3333
const classes = useStyles(props);
34-
const { resource } = useResourceContext(props);
34+
const resource = useResourceContext(props);
3535
const { loading, handleDelete } = useDeleteWithUndoController({
3636
record,
3737
resource,

packages/ra-ui-materialui/src/button/ExportButton.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const ExportButton: FunctionComponent<ExportButtonProps> = props => {
3030
exporter: exporterFromContext,
3131
total,
3232
} = useListContext(props);
33-
const { resource } = useResourceContext(props);
33+
const resource = useResourceContext(props);
3434
const exporter = customExporter || exporterFromContext;
3535
const dataProvider = useDataProvider();
3636
const notify = useNotify();

packages/ra-ui-materialui/src/detail/ShowView.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
ShowControllerProps,
99
useResourceDefinition,
1010
useShowContext,
11-
useResourceContext,
1211
} from 'ra-core';
1312

1413
import DefaultActions from './ShowActions';

packages/ra-ui-materialui/src/list/BulkDeleteAction.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { crudDeleteMany, startUndoable, useResourceContext } from 'ra-core';
88
*/
99
const BulkDeleteAction = props => {
1010
const dispatch = useDispatch();
11-
const { resource } = useResourceContext(props);
11+
const resource = useResourceContext(props);
1212

1313
useEffect(() => {
1414
if (process.env.NODE_ENV !== 'production') {

packages/ra-ui-materialui/src/list/Empty.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const useStyles = makeStyles(
3434

3535
const Empty: FC<EmptyProps> = props => {
3636
const { basePath } = useListContext(props);
37-
const { resource } = useResourceContext(props);
37+
const resource = useResourceContext(props);
3838
const classes = useStyles(props);
3939
const translate = useTranslate();
4040

packages/ra-ui-materialui/src/list/ListActions.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ const ListActions: FC<ListActionsProps> = props => {
2626
showFilter,
2727
total,
2828
} = useListContext(props);
29-
const { resource } = useResourceContext(rest);
29+
const resource = useResourceContext(rest);
3030
const { hasCreate } = useResourceDefinition(rest);
3131
return useMemo(
3232
() => (

packages/ra-ui-materialui/src/list/ListGuesser.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ const ListGuesser: FC<ListProps> = props => {
4444

4545
const ListViewGuesser: FC<ListViewProps> = props => {
4646
const { ids, data } = props;
47-
const { resource } = useResourceContext(props);
47+
const resource = useResourceContext(props);
4848
const [inferredChild, setInferredChild] = useState(null);
4949
useEffect(() => {
5050
if (ids.length > 0 && data && !inferredChild) {

packages/ra-ui-materialui/src/list/SingleFieldList.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ const SingleFieldList: FC<SingleFieldListProps> = props => {
7676
...rest
7777
} = props;
7878
const { ids, data, loaded, basePath } = useListContext(props);
79-
const { resource } = useResourceContext(props);
79+
const resource = useResourceContext(props);
8080

8181
const classes = useStyles(props);
8282

packages/ra-ui-materialui/src/list/datagrid/DatagridHeaderCell.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export const DatagridHeaderCell = (
4141
isSorting,
4242
...rest
4343
} = props;
44-
const { resource } = useResourceContext(props);
44+
const resource = useResourceContext(props);
4545
const classes = useStyles(props);
4646
const translate = useTranslate();
4747

packages/ra-ui-materialui/src/list/datagrid/DatagridRow.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ const DatagridRow: FC<DatagridRowProps> = React.forwardRef((props, ref) => {
5959
selectable,
6060
...rest
6161
} = props;
62-
const { resource } = useResourceContext(props);
62+
const resource = useResourceContext(props);
6363
const [expanded, toggleExpanded] = useExpanded(resource, id);
6464
const [nbColumns, setNbColumns] = useState(
6565
computeNbColumns(expand, children, hasBulkActions)

packages/ra-ui-materialui/src/list/filter/FilterButtonMenuItem.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { FieldTitle, useResourceContext } from 'ra-core';
77
const FilterButtonMenuItem = forwardRef<any, FilterButtonMenuItemProps>(
88
(props, ref) => {
99
const { filter, onShow } = props;
10-
const { resource } = useResourceContext(props);
10+
const resource = useResourceContext(props);
1111
const handleShow = useCallback(() => {
1212
onShow({
1313
source: filter.props.source,

packages/ra-ui-materialui/src/list/filter/FilterFormInput.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const useStyles = makeStyles(
2323

2424
const FilterFormInput = props => {
2525
const { filterElement, handleHide, variant, margin } = props;
26-
const { resource } = useResourceContext(props);
26+
const resource = useResourceContext(props);
2727
const translate = useTranslate();
2828
const classes = useStyles(props);
2929
return (

0 commit comments

Comments
 (0)