ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
75 lines • 3.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useBulkUpdateController = void 0;
const react_1 = require("react");
const useRefresh_1 = require("../../dataProvider/useRefresh.cjs");
const useListContext_1 = require("../list/useListContext.cjs");
const useNotify_1 = require("../../notification/useNotify.cjs");
const useResourceContext_1 = require("../../core/useResourceContext.cjs");
const useTranslate_1 = require("../../i18n/useTranslate.cjs");
const useUpdateMany_1 = require("../../dataProvider/useUpdateMany.cjs");
const useBulkUpdateController = (props) => {
const { onSuccess, onError, mutationMode = 'undoable', mutationOptions = {}, successMessage, } = props;
const { meta: mutationMeta, ...otherMutationOptions } = mutationOptions;
const resource = (0, useResourceContext_1.useResourceContext)(props);
const notify = (0, useNotify_1.useNotify)();
const refresh = (0, useRefresh_1.useRefresh)();
const translate = (0, useTranslate_1.useTranslate)();
const { selectedIds, onUnselectItems } = (0, useListContext_1.useListContext)();
const [updateMany, { isPending }] = (0, useUpdateMany_1.useUpdateMany)(resource, undefined, {
onSuccess: onSuccess ??
(() => {
notify(successMessage ??
`resources.${resource}.notifications.updated`, {
type: 'info',
messageArgs: {
smart_count: selectedIds.length,
_: translate('ra.notification.updated', {
smart_count: selectedIds.length,
}),
},
undoable: mutationMode === 'undoable',
});
onUnselectItems();
}),
onError: onError ??
((error) => {
notify(typeof error === 'string'
? error
: error?.message || 'ra.notification.http_error', {
type: 'error',
messageArgs: {
_: typeof error === 'string'
? error
: error?.message,
},
});
refresh();
}),
...otherMutationOptions,
});
const handleUpdate = (0, react_1.useCallback)((data) => {
updateMany(resource, {
data,
ids: selectedIds,
meta: mutationMeta,
}, {
mutationMode,
...otherMutationOptions,
});
}, [
updateMany,
mutationMeta,
mutationMode,
otherMutationOptions,
resource,
selectedIds,
]);
return (0, react_1.useMemo)(() => ({
isPending,
isLoading: isPending,
handleUpdate,
}), [isPending, handleUpdate]);
};
exports.useBulkUpdateController = useBulkUpdateController;
//# sourceMappingURL=useBulkUpdateController.js.map