From 490ab5eab102af5282dd23a4b5b98508d29fae1b Mon Sep 17 00:00:00 2001 From: deo002 Date: Thu, 12 Jun 2025 13:20:53 +0530 Subject: [PATCH 1/2] feat(license-upload): Add params to license upload request --- .../components/LicenseAdministration.tsx | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/src/app/[locale]/admin/licenses/components/LicenseAdministration.tsx b/src/app/[locale]/admin/licenses/components/LicenseAdministration.tsx index 59f92ca3b..fbb79d2e4 100644 --- a/src/app/[locale]/admin/licenses/components/LicenseAdministration.tsx +++ b/src/app/[locale]/admin/licenses/components/LicenseAdministration.tsx @@ -9,7 +9,7 @@ 'use client' -import { HttpStatus } from '@/object-types' +import { ErrorDetails, HttpStatus } from '@/object-types' import DownloadService from '@/services/download.service' import MessageService from '@/services/message.service' import { ApiUtils } from '@/utils' @@ -22,6 +22,9 @@ export default function LicenseAdministration(): ReactNode { const t = useTranslations('default') const file = useRef(undefined) const [deleteAllLicenseInformationModal, showDeleteAllLicenseInformationModal] = useState(false) + const [overwriteIfExternalIdMatches, setOverwriteIfExternalIdMatches] = useState(false) + const [overwriteIfIdMatchesEvenWithoutExternalIdMatch, setOverwriteIfIdMatchesEvenWithoutExternalIdMatch] = + useState(false) const handleFileChange = (e: React.ChangeEvent) => { const files = e.currentTarget.files @@ -44,18 +47,25 @@ export default function LicenseAdministration(): ReactNode { if (!session) { return signOut() } - const response = await ApiUtils.POST('licenses/upload', formData, session.user.access_token) - if (response.status === HttpStatus.UNAUTHORIZED) { - await signOut() - } else if (response.status === HttpStatus.OK) { + const response = await ApiUtils.POST( + `licenses/upload?overwriteIfExternalIdMatches=${ + overwriteIfExternalIdMatches + }&overwriteIfIdMatchesEvenWithoutExternalIdMatch=${overwriteIfIdMatchesEvenWithoutExternalIdMatch}`, + formData, + session.user.access_token, + ) + if (response.status === HttpStatus.OK) { MessageService.success(t('Licenses uploaded successfully')) } else { - const data = (await response.json()) as object - console.log(data) - MessageService.error(t('Something went wrong')) + const err = (await response.json()) as ErrorDetails + throw new Error(err.message) } - } catch (err) { - console.error(err) + } catch (error) { + if (error instanceof DOMException && error.name === 'AbortError') { + return + } + const message = error instanceof Error ? error.message : String(error) + MessageService.error(message) } } @@ -64,8 +74,12 @@ export default function LicenseAdministration(): ReactNode { const session = await getSession() if (!session) return signOut() DownloadService.download('licenses/downloadLicenses', session, `LicensesBackup.lics`) - } catch (e) { - console.error(e) + } catch (error) { + if (error instanceof DOMException && error.name === 'AbortError') { + return + } + const message = error instanceof Error ? error.message : String(error) + MessageService.error(message) } } @@ -81,9 +95,7 @@ export default function LicenseAdministration(): ReactNode { @@ -124,6 +136,8 @@ export default function LicenseAdministration(): ReactNode { type='checkbox' className='form-check-input' name='overWriteIfExternalIdsMatch' + checked={overwriteIfExternalIdMatches} + onChange={() => setOverwriteIfExternalIdMatches(!overwriteIfExternalIdMatches)} />