diff --git a/packages/@uppy/utils/src/isNetworkError.test.ts b/packages/@uppy/utils/src/isNetworkError.test.ts index bfe755d1a..a1a2e8868 100644 --- a/packages/@uppy/utils/src/isNetworkError.test.ts +++ b/packages/@uppy/utils/src/isNetworkError.test.ts @@ -9,12 +9,6 @@ describe('isNetworkError', () => { status: 0, } as any as XMLHttpRequest - const xhrNetworkError2Mock = { - readyState: 2, - responseText: '', - status: 300, - } as any as XMLHttpRequest - const xhrRegularErrorMock = { readyState: 4, responseText: 'Failed', @@ -27,9 +21,15 @@ describe('isNetworkError', () => { status: 200, } as any as XMLHttpRequest + const xhrIncompleteRequestMock = { + readyState: 2, + responseText: '', + status: 0, + } as any as XMLHttpRequest + expect(isNetworkError(xhrNetworkErrorMock)).toEqual(true) - expect(isNetworkError(xhrNetworkError2Mock)).toEqual(true) expect(isNetworkError(xhrRegularErrorMock)).toEqual(false) expect(isNetworkError(xhrNetworkSuccessMock)).toEqual(false) + expect(isNetworkError(xhrIncompleteRequestMock)).toEqual(false) }) }) diff --git a/packages/@uppy/utils/src/isNetworkError.ts b/packages/@uppy/utils/src/isNetworkError.ts index bc806c203..9bce2e3fd 100644 --- a/packages/@uppy/utils/src/isNetworkError.ts +++ b/packages/@uppy/utils/src/isNetworkError.ts @@ -1,8 +1,7 @@ function isNetworkError(xhr?: XMLHttpRequest): boolean { - if (!xhr) { - return false - } - return (xhr.readyState !== 0 && xhr.readyState !== 4) || xhr.status === 0 + if (!xhr) return false + // finished but status is 0 — usually indicates a network/CORS/file error + return xhr.readyState === 4 && xhr.status === 0 } export default isNetworkError