25
common/resources/client/utils/http/show-http-error-toast.ts
Executable file
25
common/resources/client/utils/http/show-http-error-toast.ts
Executable file
@@ -0,0 +1,25 @@
|
||||
import {toast} from '../../ui/toast/toast';
|
||||
import {getAxiosErrorMessage} from './get-axios-error-message';
|
||||
import {message} from '../../i18n/message';
|
||||
import {ToastOptions} from '@common/ui/toast/toast-store';
|
||||
import axios from 'axios';
|
||||
import {openDialog} from '@common/ui/overlays/store/dialog-store';
|
||||
import {IgnitionErrorDialog} from '@common/utils/http/ignition-error-dialog/ignition-error-dialog';
|
||||
|
||||
const defaultErrorMessage = message('There was an issue. Please try again.');
|
||||
|
||||
export function showHttpErrorToast(
|
||||
err: unknown,
|
||||
defaultMessage = defaultErrorMessage,
|
||||
field?: string | null,
|
||||
toastOptions?: ToastOptions,
|
||||
) {
|
||||
if (axios.isAxiosError(err) && err.response?.data?.ignitionTrace) {
|
||||
openDialog(IgnitionErrorDialog, {error: err.response.data});
|
||||
} else {
|
||||
toast.danger(getAxiosErrorMessage(err, field) || defaultMessage, {
|
||||
action: (err as any).response?.data?.action,
|
||||
...toastOptions,
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user