Closed babkenhovhannisyan closed 1 year ago
import { toast } from 'react-toastify';
import _get from 'lodash/get';
import './notify.scss';
const defaultErrorMessage = 'Something went wrong';
const defaultSuccessMessage = 'Success';
export const getAxiosErrorMessage = (axiosError) => {
const err = _get(axiosError, 'response.data');
switch (true) {
case _get(err, 'isMessageError', true /* TODO .........*/): {
return _get(err, 'message', defaultErrorMessage);
}
default: {
return defaultErrorMessage;
}
}
};
// override and define some interface
const notify = {
...toast,
error(errorNode = defaultErrorMessage, options) {
const toastId = _get(options, 'toastId');
let errorMessage = errorNode;
if (_get(errorNode, 'isAxiosError')) {
errorMessage = getAxiosErrorMessage(errorNode);
}
if (toast.isActive(toastId)) {
toast.dismiss(toastId);
}
return toast.error(errorMessage, { ...options, autoClose: 3000, className: 'errorToaster' });
},
success(successMessage = defaultSuccessMessage, options) {
const toastId = _get(options, 'toastId');
if (toast.isActive(toastId)) {
toast.dismiss(toastId);
}
return toast.success(successMessage, { ...options, autoClose: 3000, className: 'successToaster' });
},
};
export { notify };
Among the priorities are to figure out either to create a custom Notification Service or to use the existing npm package. Define the main problems that Notifications Service will solve.