1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import * as Sentry from '@sentry/react';
- import {ResponseMeta} from 'sentry/api';
- export default function handleXhrErrorResponse(message: string) {
- return (resp: ResponseMeta) => {
- if (!resp) {
- return;
- }
- if (!resp.responseJSON) {
- return;
- }
- const {responseJSON} = resp;
- // If this is a string then just capture it as error
- if (typeof responseJSON.detail === 'string') {
- Sentry.withScope(scope => {
- scope.setExtra('status', resp.status);
- scope.setExtra('detail', responseJSON.detail);
- Sentry.captureException(new Error(message));
- });
- return;
- }
- // Ignore sudo-required errors
- if (responseJSON.detail && responseJSON.detail.code === 'sudo-required') {
- return;
- }
- if (responseJSON.detail && typeof responseJSON.detail.message === 'string') {
- Sentry.withScope(scope => {
- scope.setExtra('status', resp.status);
- scope.setExtra('detail', responseJSON.detail);
- scope.setExtra('code', responseJSON.detail.code);
- Sentry.captureException(new Error(message));
- });
- return;
- }
- };
- }
|