@@ -2,23 +2,23 @@ import { showError } from '@Common/Helper'
2
2
import { ToastBody } from '@Common/ToastBody'
3
3
import { useState } from 'react'
4
4
import { toast } from 'react-toastify'
5
+ import { API_STATUS_CODES } from '@Common/Constants'
5
6
import { getDownloadResponse } from './service'
6
-
7
- export interface HandleDownloadProps {
8
- downloadUrl : string
9
- showFilePreparingToast ?: boolean
10
- fileName ?: string
11
- }
7
+ import { HandleDownloadProps } from './types'
12
8
13
9
const useDownload = ( ) => {
14
10
const [ isDownloading , setIsDownloading ] = useState < boolean > ( false )
15
11
16
- /*
17
- downloadUrl: API url for downloading file
18
- showFilePreparingToast: Show toast 'Preparing file for download'
19
- fileName: fileName of the downloaded file
20
- */
21
- const handleDownload = async ( { downloadUrl, showFilePreparingToast = false , fileName = 'file.tgz' } ) => {
12
+ /**
13
+ * @param downloadUrl - API url for downloading file
14
+ * @param filterType - Show toast 'Preparing file for download'
15
+ * @param query - fileName of the downloaded file
16
+ */
17
+ const handleDownload = async ( {
18
+ downloadUrl,
19
+ showFilePreparingToast = false ,
20
+ fileName = 'file.tgz' ,
21
+ } : HandleDownloadProps ) => {
22
22
setIsDownloading ( true )
23
23
if ( showFilePreparingToast ) {
24
24
toast . info (
@@ -30,7 +30,7 @@ const useDownload = () => {
30
30
}
31
31
try {
32
32
const response = await getDownloadResponse ( downloadUrl )
33
- if ( response . status === 200 ) {
33
+ if ( response . status === API_STATUS_CODES . OK ) {
34
34
const data = await ( response as any ) . blob ( )
35
35
36
36
// Create a new URL object
@@ -55,11 +55,12 @@ const useDownload = () => {
55
55
56
56
toast . success ( 'Downloaded Successfully' )
57
57
} else {
58
- const error = ( await response . json ( ) ) . errors [ 0 ] . userMessage
59
- showError ( error )
58
+ const jsonResponse = await response ?. json ( )
59
+ const error = jsonResponse . errors [ 0 ] . userMessage || jsonResponse . errors [ 0 ] . internalMessage
60
+ showError ( new Error ( error ) )
60
61
}
61
62
} catch ( error ) {
62
- toast . error ( error )
63
+ showError ( error )
63
64
} finally {
64
65
setIsDownloading ( false )
65
66
}
0 commit comments