From e50ec1f8bcb801a3b9559f652340ca0d7d84bba1 Mon Sep 17 00:00:00 2001 From: Belinda Marion Kobusingye <46527380+Codebmk@users.noreply.github.com> Date: Tue, 10 Dec 2024 13:50:57 +0300 Subject: [PATCH 1/2] proper error handling for data export --- .../src/views/pages/ExportData/index.js | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/netmanager/src/views/pages/ExportData/index.js b/netmanager/src/views/pages/ExportData/index.js index 5b2b8c4f88..baa1807c1f 100644 --- a/netmanager/src/views/pages/ExportData/index.js +++ b/netmanager/src/views/pages/ExportData/index.js @@ -417,22 +417,25 @@ const ExportData = (props) => { try { const response = await downloadDataApi(body); + console.log(response); + // Handle successful response let filename = `airquality-data.${fileType.value}`; // Check if response has data - if (response && response.data) { + if (response) { + if (fileType.value === 'csv') { + if (typeof response !== 'string') { + throw new Error('Invalid CSV data format.'); + } + exportData(response, filename, 'text/csv;charset=utf-8;'); + } + if (fileType.value === 'json') { const jsonString = JSON.stringify(response.data); exportData(jsonString, filename, 'application/json'); } - if (fileType.value === 'csv') { - // Convert JSON data to CSV using Papa Parse - const csvData = Papa.unparse(response.data); - exportData(csvData, filename, 'text/csv;charset=utf-8;'); - } - dispatch( updateMainAlert({ message: 'Air quality data download successful', @@ -467,7 +470,10 @@ const ExportData = (props) => { ); return; } - errorMessage = err.response.data.message; + errorMessage = + typeof err.response.data.message === 'string' + ? err.response.data.message + : 'An error occurred while downloading data'; } } else if (err.request) { // Request made but no response @@ -530,7 +536,7 @@ const ExportData = (props) => { startDateTime: roundToStartOfDay(new Date(startDate).toISOString()), endDateTime: roundToEndOfDay(new Date(endDate).toISOString()), sites: sitesList, - devices: getValues(selectedDevices), + device_names: getValues(selectedDevices), airqlouds: getValues(selectedAirqlouds), network: activeNetwork.net_name, datatype: dataType.value, From c98379138c5dcaf200f74d40e6fc84d3dc51f7b5 Mon Sep 17 00:00:00 2001 From: Belinda Marion Kobusingye <46527380+Codebmk@users.noreply.github.com> Date: Tue, 10 Dec 2024 13:52:08 +0300 Subject: [PATCH 2/2] Update index.js --- netmanager/src/views/pages/ExportData/index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/netmanager/src/views/pages/ExportData/index.js b/netmanager/src/views/pages/ExportData/index.js index baa1807c1f..f54ef534f5 100644 --- a/netmanager/src/views/pages/ExportData/index.js +++ b/netmanager/src/views/pages/ExportData/index.js @@ -417,8 +417,6 @@ const ExportData = (props) => { try { const response = await downloadDataApi(body); - console.log(response); - // Handle successful response let filename = `airquality-data.${fileType.value}`;