mirror of
https://github.com/strapi/strapi.git
synced 2025-09-25 16:29:34 +00:00
Add toast notification in case of error
Signed-off-by: soupette <cyril@strapi.io>
This commit is contained in:
parent
6f2dfac689
commit
5078b041e8
@ -6,7 +6,7 @@ import { Link } from '@strapi/parts/Link';
|
|||||||
|
|
||||||
const Notification = ({ dispatch, notification }) => {
|
const Notification = ({ dispatch, notification }) => {
|
||||||
const { formatMessage } = useIntl();
|
const { formatMessage } = useIntl();
|
||||||
const { message, link, type, id, onClose, timeout, blockTransition } = notification;
|
const { message, link, type, id, onClose, timeout, blockTransition, title } = notification;
|
||||||
|
|
||||||
const formattedMessage = msg => (typeof msg === 'string' ? msg : formatMessage(msg, msg.values));
|
const formattedMessage = msg => (typeof msg === 'string' ? msg : formatMessage(msg, msg.values));
|
||||||
const handleClose = useCallback(() => {
|
const handleClose = useCallback(() => {
|
||||||
@ -56,6 +56,10 @@ const Notification = ({ dispatch, notification }) => {
|
|||||||
variant = 'success';
|
variant = 'success';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (title) {
|
||||||
|
alertTitle = title;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Alert
|
<Alert
|
||||||
action={
|
action={
|
||||||
@ -93,6 +97,7 @@ Notification.defaultProps = {
|
|||||||
},
|
},
|
||||||
onClose: () => null,
|
onClose: () => null,
|
||||||
timeout: 2500,
|
timeout: 2500,
|
||||||
|
title: null,
|
||||||
blockTransition: false,
|
blockTransition: false,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@ -121,6 +126,7 @@ Notification.propTypes = {
|
|||||||
}),
|
}),
|
||||||
]).isRequired,
|
]).isRequired,
|
||||||
}),
|
}),
|
||||||
|
title: PropTypes.string,
|
||||||
type: PropTypes.string,
|
type: PropTypes.string,
|
||||||
onClose: PropTypes.func,
|
onClose: PropTypes.func,
|
||||||
timeout: PropTypes.number,
|
timeout: PropTypes.number,
|
||||||
|
@ -14,6 +14,7 @@ const notificationReducer = (state = initialState, action) =>
|
|||||||
draftState.notifications.push({
|
draftState.notifications.push({
|
||||||
// No action.config spread to limit the notification API and avoid customization
|
// No action.config spread to limit the notification API and avoid customization
|
||||||
id: state.notifId,
|
id: state.notifId,
|
||||||
|
title: action.config.title || null,
|
||||||
type: get(action, ['config', 'type'], 'success'),
|
type: get(action, ['config', 'type'], 'success'),
|
||||||
message: get(action, ['config', 'message'], {
|
message: get(action, ['config', 'message'], {
|
||||||
id: 'notification.success.saved',
|
id: 'notification.success.saved',
|
||||||
|
@ -30,6 +30,7 @@ describe('ADMIN | COMPONENTS | NOTIFICATIONS | reducer', () => {
|
|||||||
notifications: [
|
notifications: [
|
||||||
{
|
{
|
||||||
id: 0,
|
id: 0,
|
||||||
|
title: null,
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: { id: 'notification.message' },
|
message: { id: 'notification.message' },
|
||||||
link: null,
|
link: null,
|
||||||
|
@ -304,6 +304,13 @@ const EditViewDataManagerProvider = ({
|
|||||||
console.error(err);
|
console.error(err);
|
||||||
|
|
||||||
errors = getYupInnerErrors(err);
|
errors = getYupInnerErrors(err);
|
||||||
|
const firstError = Object.keys(errors)[0];
|
||||||
|
|
||||||
|
toggleNotification({
|
||||||
|
type: 'warning',
|
||||||
|
title: `${firstError}:`,
|
||||||
|
message: errors[firstError],
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch({
|
dispatch({
|
||||||
@ -311,7 +318,16 @@ const EditViewDataManagerProvider = ({
|
|||||||
errors,
|
errors,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
[createFormData, isCreatingEntry, modifiedData, onPost, onPut, trackerProperty, yupSchema]
|
[
|
||||||
|
createFormData,
|
||||||
|
isCreatingEntry,
|
||||||
|
modifiedData,
|
||||||
|
onPost,
|
||||||
|
onPut,
|
||||||
|
toggleNotification,
|
||||||
|
trackerProperty,
|
||||||
|
yupSchema,
|
||||||
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
const handlePublish = useCallback(async () => {
|
const handlePublish = useCallback(async () => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user