From 1bca97acd0b57b028d8976de67899af015560bfc Mon Sep 17 00:00:00 2001 From: Sayali Joshi Date: Fri, 26 Jul 2024 19:49:32 +0530 Subject: [PATCH 1/8] Content mapper dropdown state change issue solved --- .../Common/SaveChangesModal/index.tsx | 3 + ui/src/components/ContentMapper/index.tsx | 29 +- .../HorizontalStepper/HorizontalStepper.tsx | 11 +- ui/src/pages/Migration/index.tsx | 250 +++++++++--------- 4 files changed, 140 insertions(+), 153 deletions(-) diff --git a/ui/src/components/Common/SaveChangesModal/index.tsx b/ui/src/components/Common/SaveChangesModal/index.tsx index 42207bde..e0b76001 100644 --- a/ui/src/components/Common/SaveChangesModal/index.tsx +++ b/ui/src/components/Common/SaveChangesModal/index.tsx @@ -14,6 +14,7 @@ interface Props { saveContentType: () => void; openContentType?: () => void; changeStep?: () => void; + dropdownStateChange: () => void; } const SaveChangesModal = (props: Props) => { @@ -37,6 +38,7 @@ const SaveChangesModal = (props: Props) => { )} diff --git a/ui/src/components/Modal/modal.interface.ts b/ui/src/components/Modal/modal.interface.ts index aeba5d27..113f4434 100644 --- a/ui/src/components/Modal/modal.interface.ts +++ b/ui/src/components/Modal/modal.interface.ts @@ -9,6 +9,7 @@ export interface ProjectModalProps { modalData: ModalType; selectedOrg: IDropDown; closeModal: () => void; + isOpen : (flag:boolean) => void; } export interface SettingsModalProps { selectedOrg: IDropDown; diff --git a/ui/src/components/Stepper/HorizontalStepper/HorizontalStepper.tsx b/ui/src/components/Stepper/HorizontalStepper/HorizontalStepper.tsx index 0ed4d023..901a13a9 100644 --- a/ui/src/components/Stepper/HorizontalStepper/HorizontalStepper.tsx +++ b/ui/src/components/Stepper/HorizontalStepper/HorizontalStepper.tsx @@ -8,6 +8,7 @@ import { useSelector } from 'react-redux'; import { RootState } from '../../../store'; import SaveChangesModal from '../../../components/Common/SaveChangesModal'; import { ModalObj } from '../../../components/Modal/modal.interface'; +import useBlockNavigation from '../../../hooks/userNavigation'; export enum StepStatus { ACTIVE = "ACTIVE", @@ -55,6 +56,7 @@ const HorizontalStepper = forwardRef( const handleSaveCT = props?.handleSaveCT const handleDropdownChange = props?.changeDropdownState; + useBlockNavigation(isModalOpen); useEffect(() => { const stepIndex = parseInt(stepId, 10) - 1; diff --git a/ui/src/hooks/userNavigation.tsx b/ui/src/hooks/userNavigation.tsx new file mode 100644 index 00000000..58e8bfef --- /dev/null +++ b/ui/src/hooks/userNavigation.tsx @@ -0,0 +1,39 @@ +import { useEffect, useRef } from 'react'; +import { useLocation, useNavigate } from 'react-router-dom'; + +const useBlockNavigation = (isModalOpen: boolean) => { + const location = useLocation(); + const navigate = useNavigate(); + const initialPathnameRef = useRef(location.pathname); + + useEffect(() => { + const handlePopState = (event: PopStateEvent) => { + if (isModalOpen) { + event.preventDefault(); + event.stopImmediatePropagation(); + window.history.replaceState(null, '', window.location.pathname); + navigate(location.pathname); + } + }; + + if (isModalOpen) { + initialPathnameRef.current = location.pathname; + window.history.pushState(null, '', window.location.pathname); + window.addEventListener('popstate', handlePopState); + } else { + window.removeEventListener('popstate', handlePopState); + } + + return () => { + window.removeEventListener('popstate', handlePopState); + }; + }, [isModalOpen, navigate, location.pathname]); + + useEffect(() => { + if (!isModalOpen) { + initialPathnameRef.current = location.pathname; + } + }, [isModalOpen, location.pathname]); +}; + +export default useBlockNavigation; diff --git a/ui/src/pages/Projects/index.tsx b/ui/src/pages/Projects/index.tsx index bfc9f6fc..2ba3960b 100644 --- a/ui/src/pages/Projects/index.tsx +++ b/ui/src/pages/Projects/index.tsx @@ -34,6 +34,7 @@ import { NO_PROJECTS, NO_PROJECTS_SEARCH } from '../../common/assets'; // styles import './index.scss'; import { getUserDetails } from '../../store/slice/authSlice'; +import useBlockNavigation from '../../hooks/userNavigation'; const Projects = () => { @@ -60,6 +61,7 @@ const Projects = () => { const [allProjects, setAllProjects] = useState([]); const [loadStatus, setLoadStatus] = useState(true); const [searchText, setSearchText] = useState(search); + const [isModalOpen, setIsModalOpen] = useState(false); useEffect(()=>{ dispatch(getUserDetails()); @@ -132,9 +134,11 @@ const Projects = () => { const onClose = () => { fetchProjects(); }; - + useBlockNavigation(isModalOpen) // Function for open modal const openModal = () => { + setIsModalOpen(true); + cbModal({ component: (props: ModalObj) => ( { createProjectModal && validateObject(createProjectModal) ? createProjectModal : {} } selectedOrg={selectedOrganisation} + isOpen={setIsModalOpen} {...props} /> ), diff --git a/uplaode-api/migration-sitecore/libs/reference.js b/uplaode-api/migration-sitecore/libs/reference.js index 898c560d..d4f3ba13 100644 --- a/uplaode-api/migration-sitecore/libs/reference.js +++ b/uplaode-api/migration-sitecore/libs/reference.js @@ -96,9 +96,9 @@ function ExtractRef() { otherCmsType: "reference", contentstackField: newKey, contentstackFieldUid: uidCorrector({ uid: newKey }), - ContentstackFieldType: "global_field", + ContentstackFieldType: "refernce", isDeleted: false, - backupFieldType: "global_field", + backupFieldType: "reference", refrenceTo: key, } contentType.fieldMapping.push(schemaObject) From d88d5e1420536ed07cdf64693827b3ac1f52bb08 Mon Sep 17 00:00:00 2001 From: Rohit Kini Date: Mon, 29 Jul 2024 16:39:54 +0530 Subject: [PATCH 3/8] added GCP region --- api/.DS_Store | Bin 6148 -> 6148 bytes api/src/config/dev.config.ts | 2 + api/src/config/index.ts | 2 + api/src/config/prod.config.ts | 2 + api/src/constants/index.ts | 2 +- ui/src/cmsData/region_login.json | 28 ++++++++ .../advanceProperties.interface.ts | 62 ++++++++++++++++++ .../components/Common/ProgressBar/index.tsx | 34 +++++++++- ui/src/pages/RegionalLogin/index.tsx | 3 + ui/src/utilities/constants.ts | 3 +- 10 files changed, 133 insertions(+), 5 deletions(-) diff --git a/api/.DS_Store b/api/.DS_Store index 43f2c4052f513e51b2e5a9c3e58d442f51e46402..ba02810f22caf9b652c17b46b2e3c44025051d84 100644 GIT binary patch delta 31 ncmZoMXfc@J&&a(oU^g=(_hcTH%*}$V-pr%$wOc{_+C=k-98@ diff --git a/api/src/config/dev.config.ts b/api/src/config/dev.config.ts index cdd2363d..64c42480 100644 --- a/api/src/config/dev.config.ts +++ b/api/src/config/dev.config.ts @@ -3,12 +3,14 @@ export const devConfig = { NA: "https://stag-api.csnonprod.com/v3", EU: "https://stag-eu-api.csnonprod.com/v3", AZURE_NA: "https://stag-azure-na-api.csnonprod.com/v3", + GCP_NA: "https://stag-gcp-na-api.csnonprod.com/v3", }, CS_URL: { NA: "https://app.contentstack.com/#!", EU: "https://eu-app.contentstack.com/#!", AZURE_NA: "https://azure-na-app.contentstack.com/#!", AZURE_EU: "https://azure-eu-app.contentstack.com/#!", + GCP_NA: "https://gcp-na-app.contentstack.com/#!", }, LOG_FILE_PATH: process.platform === "win32" ? ".\\combine.log" : "./combine.log", // Replace with the actual path to your log file diff --git a/api/src/config/index.ts b/api/src/config/index.ts index 11f43c75..12b3e538 100644 --- a/api/src/config/index.ts +++ b/api/src/config/index.ts @@ -25,12 +25,14 @@ export type ConfigType = { EU: string; AZURE_NA: string; AZURE_EU?: string; + GCP_NA?: string; }; CS_URL: { NA: string; EU: string; AZURE_NA: string; AZURE_EU?: string; + GCP_NA?: string; }; }; diff --git a/api/src/config/prod.config.ts b/api/src/config/prod.config.ts index 7a49fdbd..a873b12a 100644 --- a/api/src/config/prod.config.ts +++ b/api/src/config/prod.config.ts @@ -4,12 +4,14 @@ export const prodConfig = { EU: "https://eu-api.contentstack.com/v3", AZURE_NA: "https://azure-na-api.contentstack.com/v3", AZURE_EU: "https://azure-eu-api.contentstack.com/v3", + GCP_NA: "https://gcp-na-api.contentstack.com/v3", }, CS_URL: { NA: "https://app.contentstack.com/#!", EU: "https://eu-app.contentstack.com/#!", AZURE_NA: "https://azure-na-app.contentstack.com/#!", AZURE_EU: "https://azure-eu-app.contentstack.com/#!", + GCP_NA: "https://gcp-na-app.contentstack.com/#!", }, LOG_FILE_PATH: process.platform === "win32" ? ".\\combine.log" : "./combine.log", // Replace with the actual path to your log file diff --git a/api/src/constants/index.ts b/api/src/constants/index.ts index 19e712e4..b99b19b9 100644 --- a/api/src/constants/index.ts +++ b/api/src/constants/index.ts @@ -1,4 +1,4 @@ -export const CS_REGIONS = ["NA", "EU", "AZURE_NA", "AZURE_EU"]; +export const CS_REGIONS = ["NA", "EU", "AZURE_NA", "AZURE_EU", "GCP_NA"]; export const MODULES = [ "Project", "Migration", diff --git a/ui/src/cmsData/region_login.json b/ui/src/cmsData/region_login.json index 1d0ecbd4..02174531 100644 --- a/ui/src/cmsData/region_login.json +++ b/ui/src/cmsData/region_login.json @@ -95,6 +95,34 @@ "region_title": "Europe", "cta": { "title": "Continue", "url": "/login" }, "_metadata": { "uid": "cs7c90ee35480e165e" } + }, + { + "service_icon": { + "uid": "blt57dafa9c1472b46f", + "created_at": "2024-07-29T10:57:59.058Z", + "updated_at": "2024-07-29T10:57:59.058Z", + "created_by": "blt181afddb6080e3df", + "updated_by": "blt181afddb6080e3df", + "content_type": "image/svg+xml", + "file_size": "1622", + "tags": [], + "filename": "google-cloud_1.svg", + "url": "https://images.contentstack.io/v3/assets/bltd3620ec6418ad3ad/blt57dafa9c1472b46f/66a775b7d14106640a554ec7/google-cloud_1.svg", + "ACL": [], + "is_dir": false, + "parent_uid": null, + "_version": 1, + "title": "google-cloud_1.svg" + }, + "service_title": "Google Cloud Platform", + "region_title": "North America", + "cta": { + "title": "Continue", + "url": "/login" + }, + "_metadata": { + "uid": "cs14bce3c329a87986" + } } ], "tags": [], diff --git a/ui/src/components/AdvancePropertise/advanceProperties.interface.ts b/ui/src/components/AdvancePropertise/advanceProperties.interface.ts index 3c5be031..0e5a15db 100644 --- a/ui/src/components/AdvancePropertise/advanceProperties.interface.ts +++ b/ui/src/components/AdvancePropertise/advanceProperties.interface.ts @@ -149,20 +149,82 @@ export interface Props { handleToggle?: (field: string, value: boolean, checkBoxChanged: boolean) => void; } +/** + * Represents the state type for advanced properties. + */ export interface StateType { + /** + * The minimum number of characters allowed. + */ minChars?: string; + + /** + * The maximum number of characters allowed. + */ maxChars?: number; + + /** + * The minimum range allowed. + */ minRange?: number; + + /** + * The maximum range allowed. + */ maxRange?: number; + + /** + * The minimum size allowed. + */ minSize?: string; + + /** + * The maximum size allowed. + */ maxSize?: number; + + /** + * The default value. + */ defaultValue?: string; + + /** + * The validation regular expression. + */ validationRegex?: string; + + /** + * The title. + */ title?: string; + + /** + * The URL. + */ url?: string; + + /** + * Indicates if the field is mandatory. + */ mandatory?: boolean; + + /** + * Indicates if only images are allowed. + */ allowImagesOnly?: boolean; + + /** + * Indicates if the field is non-localizable. + */ nonLocalizable?: boolean; + + /** + * Indicates if the object should be embedded. + */ embedObject?: boolean; + + /** + * Indicates if the assets should be embedded. + */ embedAssests?: boolean; } \ No newline at end of file diff --git a/ui/src/components/Common/ProgressBar/index.tsx b/ui/src/components/Common/ProgressBar/index.tsx index f15ae7d4..47ecd2e1 100644 --- a/ui/src/components/Common/ProgressBar/index.tsx +++ b/ui/src/components/Common/ProgressBar/index.tsx @@ -2,28 +2,56 @@ import React from 'react' import './progressBar.scss' import cn from 'classnames' - +/** + * Props for the ProgressBar component. + */ type ProgressBarProps = { + /** + * The percentage value for the progress. + */ percentage: number + /** + * The color of the progress bar. + */ color?: string /** - * Height of the Progress bar in pixel + * The height of the progress bar in pixels. */ height?: number /** - * Border radius in pixel + * The border radius of the progress bar in pixels. */ borderRadius?: number + /** + * The type of progress bar. Can be 'bar' or 'circle'. + */ type?: 'bar' | 'circle', + /** + * The stroke width of the circle progress bar. + */ stroke?: number + /** + * The radius of the circle progress bar. + */ radius?: number | undefined + /** + * The background color of the circle progress bar. + */ bgColor?: string } +/** + * Interface for defining CSS styles. + */ type IStyle = { [key: string]: string } +/** + * A customizable progress bar component. + * @param props - The props for the ProgressBar component. + * @returns The rendered ProgressBar component. + */ const ProgressBar = (props: ProgressBarProps) => { const { percentage, color, height, borderRadius, type, radius, stroke, bgColor } = props diff --git a/ui/src/pages/RegionalLogin/index.tsx b/ui/src/pages/RegionalLogin/index.tsx index 2af72a93..0c4cd86a 100644 --- a/ui/src/pages/RegionalLogin/index.tsx +++ b/ui/src/pages/RegionalLogin/index.tsx @@ -48,6 +48,9 @@ const RegionalLogin = () => { case regionName === 'Europe' && serviceName === 'Microsoft Azure': loginUrl = `/login?region=${REGIONS.AZURE_EU}`; break; + case regionName === 'North America' && serviceName === 'Google Cloud Platform': + loginUrl = `/login?region=${REGIONS.GCP_NA}`; + break; default: loginUrl = `/login?region=${REGIONS.NA}`; break; diff --git a/ui/src/utilities/constants.ts b/ui/src/utilities/constants.ts index 98529d75..01cdf591 100644 --- a/ui/src/utilities/constants.ts +++ b/ui/src/utilities/constants.ts @@ -25,7 +25,8 @@ export const REGIONS = { NA: 'NA', AZURE_NA: 'AZURE_NA', EU: 'EU', - AZURE_EU: 'AZURE_EU' + AZURE_EU: 'AZURE_EU', + GCP_NA: 'GCP_NA', }; export const HEADERS = { From 7c4b5e5a8fb93d3301552d38fd92e3ea259862a8 Mon Sep 17 00:00:00 2001 From: Rohit Kini Date: Mon, 29 Jul 2024 16:45:17 +0530 Subject: [PATCH 4/8] added GCP region --- api/.DS_Store | Bin 6148 -> 0 bytes api/src/validators/index.ts | 2 +- api/src/validators/stack.validator.ts | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 api/.DS_Store diff --git a/api/.DS_Store b/api/.DS_Store deleted file mode 100644 index ba02810f22caf9b652c17b46b2e3c44025051d84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%Wl&^6ur{~ut{45sYu-*Sz=p)DOIJ4O$h0N1)B!J0#NXaVCs6JIB6D9q^!$7 z@C$7D68?o1oI5j-Vkbqc5JGdMJ7*sE%*`CfGae!mok{$Ns7XW)oUwiz#RlVX_BGow zJq@5xbEK40LM_Tju0`7ptAJJDUsHhJ-3CQ?UoR-6)%SPsJd;tF$q*5|Jv@cCekwza zw}hAi8pA_)K}jY4YbAagdxHcgp+0hPZGwFwp<)B?%SxU*G{pQ7oueEe{(;(ExZR>p z$SWx?&mit0^Xd%Sl^L$%eXj6!!5f)h8eyd==R(#5_%9BPV%WC~i*=IIipVoBOlb z;mPrVcjWu?18;V6=%fDlcs_TXyZ0YHIqRQi7rDHGA~1oILD`PMC9v9N&6mAVp2>WG z9**9D)`j{{=JWxo4}SNgOX@7=w)iIsm?z`#9$?KXU=^?mtSZ3!g9m498(e5qTL%ht z1pwC3tqgVkSYVE4ux)Um5hF06sX$E?=87RS9sQn(Ya3i>)N~T&@*zxSVQwfwWyk!U z3MbLlXiKYrRiLauO*fl-{-0id|1Xnl%PL?M_^%WY^=_}*!II3`y0$nzYd!dTI2*?; nG%5-Ta~!J*AI1A{Wf=3g0&E*xXhaXpeh4TTY+)7ns|x%As affix: affixValidator, affix_confirmation_validator: affixConfirmationValidator, fileformat_confirmation_validator: fileformatConfirmationValidator, - stack: stackValidator + stack: stackValidator, }; const validator = appValidators[route as keyof typeof appValidators]; diff --git a/api/src/validators/stack.validator.ts b/api/src/validators/stack.validator.ts index 9938217b..e5f10bf0 100644 --- a/api/src/validators/stack.validator.ts +++ b/api/src/validators/stack.validator.ts @@ -43,4 +43,4 @@ export default checkSchema({ bail: true, }, }, -}); \ No newline at end of file +}); From 69a0f37db94de00c2b7d97ff516d249fc2fce8f3 Mon Sep 17 00:00:00 2001 From: Rohit Kini Date: Mon, 29 Jul 2024 16:47:58 +0530 Subject: [PATCH 5/8] added GCP region --- api/src/validators/project.validator.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/api/src/validators/project.validator.ts b/api/src/validators/project.validator.ts index 2df47ac1..33da05d7 100644 --- a/api/src/validators/project.validator.ts +++ b/api/src/validators/project.validator.ts @@ -6,6 +6,7 @@ import { VALIDATION_ERRORS } from "../constants/index.js"; * * @returns {Object} The validation schema for the project data. */ + export default checkSchema({ name: { in: "body", From 005b2436c145c03814c2db5ab2b996acf375698f Mon Sep 17 00:00:00 2001 From: snehalsankhe Date: Mon, 29 Jul 2024 16:55:07 +0530 Subject: [PATCH 6/8] solved bugs on restesting --- api/src/validators/stack.validator.ts | 2 +- ui/src/cmsData/add_stack.json | 2 +- .../DestinationStack/Actions/LoadStacks.tsx | 59 ++++++++++++------- 3 files changed, 39 insertions(+), 24 deletions(-) diff --git a/api/src/validators/stack.validator.ts b/api/src/validators/stack.validator.ts index 9938217b..eadcc362 100644 --- a/api/src/validators/stack.validator.ts +++ b/api/src/validators/stack.validator.ts @@ -37,7 +37,7 @@ export default checkSchema({ isLength: { errorMessage: VALIDATION_ERRORS.LENGTH_LIMIT.replace("$", "Description"), options: { - min: 1, + min: 0, max: 512, }, bail: true, diff --git a/ui/src/cmsData/add_stack.json b/ui/src/cmsData/add_stack.json index 1c0c0206..77daf4fc 100644 --- a/ui/src/cmsData/add_stack.json +++ b/ui/src/cmsData/add_stack.json @@ -9,7 +9,7 @@ "secondary_cta": { "title": "Cancel" }, "stack_description": "Description", "stack_description_placeholder": "Enter a description", - "stack_locale_description": "Select a Language", + "stack_locale_description": "Select a language", "stack_locales": "Set Master Language", "stack_name": "Name", "stack_name_placeholder": "Enter stack Name", diff --git a/ui/src/components/DestinationStack/Actions/LoadStacks.tsx b/ui/src/components/DestinationStack/Actions/LoadStacks.tsx index b3d62546..19032ace 100644 --- a/ui/src/components/DestinationStack/Actions/LoadStacks.tsx +++ b/ui/src/components/DestinationStack/Actions/LoadStacks.tsx @@ -59,6 +59,7 @@ const LoadStacks = (props: LoadFileFormatProps) => { const [isError, setIsError] = useState(false); const [errorMessage, setErrorMessage] = useState(''); const { projectId = '' }: Params = useParams(); + const [placeholder, setPlaceholder] = useState('Select a stack'); // console.log("......newMigrationData",newMigrationData) const newMigrationDataRef = useRef(newMigrationData); @@ -75,12 +76,13 @@ const LoadStacks = (props: LoadFileFormatProps) => { const handleOnSave = async (data: Stack) => { if (isSaving) return false; setIsSaving(true); - + if (isEmptyString(data?.name) || isEmptyString(data?.locale)) { setIsSaving(false); return false; } - //Post data to backend + + // Post data to backend const resp = await createStacksInOrg(selectedOrganisation?.value, { ...data, master_locale: data?.locale @@ -88,10 +90,10 @@ const LoadStacks = (props: LoadFileFormatProps) => { setIsSaving(false); if (resp.status === 201) { - if ( newMigrationData?.destination_stack?.stackArray?.length > 0 ) { - //fetch all Stacks + if (newMigrationData?.destination_stack?.stackArray?.length > 0) { await fetchData(); } + const newCreatedStack: IDropDown = { label: resp?.data?.stack?.name, value: resp?.data?.stack?.api_key, @@ -100,43 +102,54 @@ const LoadStacks = (props: LoadFileFormatProps) => { created_at: resp?.data?.stack?.created_at, uid: resp?.data?.stack?.api_key }; - - setSelectedStack(newCreatedStack); - setAllStack((prevState) => [...prevState, newCreatedStack]); + + setSelectedStack(newCreatedStack); + + const updatedStackArray = [newCreatedStack, ...allStack]; + updatedStackArray.sort( + (a: IDropDown, b: IDropDown) => + new Date(b?.created_at)?.getTime() - new Date(a?.created_at)?.getTime() + ); + + setAllStack(updatedStackArray); + const newMigrationDataObj: INewMigration = { ...newMigrationData, destination_stack: { ...newMigrationData.destination_stack, selectedStack: newCreatedStack, - stackArray: allStack + stackArray: updatedStackArray } }; - - dispatch(updateNewMigrationData((newMigrationDataObj))); - - //API call for saving selected CMS + + // console.log("Updating newMigrationData:", newMigrationDataObj); + dispatch(updateNewMigrationData(newMigrationDataObj)); + + // API call for saving selected CMS if (resp?.data?.stack?.api_key) { updateDestinationStack(selectedOrganisation?.value, projectId, { stack_api_key: resp?.data?.stack?.api_key }); } - //call for Step Change - + + // call for Step Change props.handleStepChange(props?.currentStep, true); return true; } return false; }; + /**** ALL METHODS HERE ****/ //Handle Legacy cms selection const handleDropdownChange = (name: string) => (data: IDropDown) => { - const stackCleared = data?.value === '' || data?.value === null || data === null; + const stackCleared = data?.value === '' || data?.value === null || data === null || data === undefined; if (stackCleared === true) { setIsError(true); setErrorMessage("Please select a stack"); - } + setPlaceholder('Please select a stack'); + } if (name === 'stacks' && data?.value != '+ Create a new Stack') { setSelectedStack(() => ({ ...data })); @@ -144,11 +157,11 @@ const LoadStacks = (props: LoadFileFormatProps) => { ...newMigrationData, destination_stack: { ...newMigrationData?.destination_stack, - selectedStack: stackCleared ? DEFAULT_DROPDOWN : { ...data } + selectedStack: { ...data } } }; - dispatch(updateNewMigrationData((newMigrationDataObj))); + dispatch(updateNewMigrationData(newMigrationDataObj)); if (!stackCleared) { setIsError(false) if (props?.handleStepChange) { @@ -252,19 +265,21 @@ const LoadStacks = (props: LoadFileFormatProps) => {