@@ -79,6 +79,9 @@ export class ExperienceSiteMigration extends BaseRelatedObjectMigration {
7979 Logger . logVerbose ( 'The namespace for expsites processing is ' + this . namespace ) ;
8080 for ( const directory of directoryMap . keys ( ) ) {
8181 const fileArray = directoryMap . get ( directory ) ;
82+ if ( ! fileArray ) {
83+ continue ;
84+ }
8285 for ( const file of fileArray ) {
8386 progressBar . update ( ++ progressCounter ) ;
8487 if ( file . ext !== '.json' ) {
@@ -124,7 +127,7 @@ export class ExperienceSiteMigration extends BaseRelatedObjectMigration {
124127 // TODO - undefined check here
125128 const experienceSiteParsedJSON = JSON . parse ( fileContent ) as ExpSitePageJson ;
126129 const normalizedOriginalFileContent = JSON . stringify ( experienceSiteParsedJSON , null , 2 ) ;
127- const regions : ExpSiteRegion [ ] = experienceSiteParsedJSON [ ' regions' ] ;
130+ const regions : ExpSiteRegion [ ] = experienceSiteParsedJSON . regions ;
128131
129132 // TODO - When will it be Flexcard
130133
@@ -142,35 +145,7 @@ export class ExperienceSiteMigration extends BaseRelatedObjectMigration {
142145 }
143146
144147 for ( const region of regions ) {
145- Logger . logVerbose ( this . messages . getMessage ( 'currentRegionOfExperienceSite' , [ JSON . stringify ( region ) ] ) ) ;
146-
147- const regionComponents : ExpSiteComponent [ ] = region [ 'components' ] ;
148-
149- if ( regionComponents === undefined ) {
150- continue ;
151- }
152-
153- if ( Array . isArray ( regionComponents ) ) {
154- for ( const component of regionComponents ) {
155- if ( component === undefined || component === null ) {
156- continue ;
157- }
158-
159- Logger . logVerbose ( this . messages . getMessage ( 'currentComponentOfExperienceSite' , [ JSON . stringify ( component ) ] ) ) ;
160-
161- if ( component . componentName === lookupComponentName ) {
162- Logger . logVerbose ( this . messages . getMessage ( 'omniWrapperFound' ) ) ;
163- experienceSiteAssessmentInfo . hasOmnistudioContent = true ;
164-
165- this . updateComponentAndItsAttributes (
166- component ,
167- component . componentAttributes ,
168- experienceSiteAssessmentInfo ,
169- storage
170- ) ;
171- }
172- }
173- }
148+ this . processRegion ( region , experienceSiteAssessmentInfo , storage , lookupComponentName ) ;
174149 }
175150
176151 Logger . logVerbose ( this . messages . getMessage ( 'printUpdatedObject' , [ JSON . stringify ( experienceSiteParsedJSON ) ] ) ) ;
@@ -193,6 +168,60 @@ export class ExperienceSiteMigration extends BaseRelatedObjectMigration {
193168 return experienceSiteAssessmentInfo ;
194169 }
195170
171+ private processRegion (
172+ region : ExpSiteRegion ,
173+ experienceSiteAssessmentInfo : ExperienceSiteAssessmentInfo ,
174+ storage : MigrationStorage ,
175+ lookupComponentName : string
176+ ) : void {
177+ Logger . logVerbose ( this . messages . getMessage ( 'currentRegionOfExperienceSite' , [ JSON . stringify ( region ) ] ) ) ;
178+
179+ const regionComponents : ExpSiteComponent [ ] = region . components ;
180+
181+ if ( regionComponents === undefined ) {
182+ return ;
183+ }
184+
185+ if ( Array . isArray ( regionComponents ) ) {
186+ for ( const component of regionComponents ) {
187+ this . processComponent ( component , experienceSiteAssessmentInfo , storage , lookupComponentName ) ;
188+ }
189+ }
190+ }
191+
192+ private processComponent (
193+ component : ExpSiteComponent ,
194+ experienceSiteAssessmentInfo : ExperienceSiteAssessmentInfo ,
195+ storage : MigrationStorage ,
196+ lookupComponentName : string
197+ ) : void {
198+ if ( component === undefined || component === null ) {
199+ return ;
200+ }
201+
202+ if ( component . componentName === lookupComponentName ) {
203+ Logger . logVerbose ( this . messages . getMessage ( 'omniWrapperFound' ) ) ;
204+ experienceSiteAssessmentInfo . hasOmnistudioContent = true ;
205+
206+ this . updateComponentAndItsAttributes (
207+ component ,
208+ component . componentAttributes ,
209+ experienceSiteAssessmentInfo ,
210+ storage
211+ ) ;
212+
213+ return ;
214+ }
215+
216+ const regionsInsideComponent : ExpSiteRegion [ ] = component . regions ;
217+
218+ if ( Array . isArray ( regionsInsideComponent ) ) {
219+ for ( const region of regionsInsideComponent ) {
220+ this . processRegion ( region , experienceSiteAssessmentInfo , storage , lookupComponentName ) ;
221+ }
222+ }
223+ }
224+
196225 private updateComponentAndItsAttributes (
197226 component : ExpSiteComponent ,
198227 currentAttribute : ExpSiteComponentAttributes ,
@@ -254,7 +283,7 @@ export class ExperienceSiteMigration extends BaseRelatedObjectMigration {
254283 ) : void {
255284 Logger . logVerbose ( this . messages . getMessage ( 'processingOmniscriptComponent' , [ JSON . stringify ( component ) ] ) ) ;
256285 // Use storage to find the updated properties
257- const targetDataFromStorage : OmniScriptStorage = storage . osStorage . get ( targetName . toLocaleLowerCase ( ) ) ;
286+ const targetDataFromStorage : OmniScriptStorage = storage . osStorage . get ( targetName . toLowerCase ( ) ) ;
258287 StorageUtil . printAssessmentStorage ( ) ;
259288 Logger . logVerbose ( this . messages . getMessage ( 'targetData' , [ JSON . stringify ( targetDataFromStorage ) ] ) ) ;
260289
@@ -267,9 +296,9 @@ export class ExperienceSiteMigration extends BaseRelatedObjectMigration {
267296 // Preserve the layout value before clearing
268297 const originalLayout = currentAttribute [ 'layout' ] ;
269298
270- // define an array and delete those keys
271- // Clear existing properties and set new ones
272- Object . keys ( currentAttribute ) . forEach ( ( key ) => delete currentAttribute [ key ] ) ;
299+ // Clear existing properties more safely - preserve any properties we don't want to delete
300+ const keysToDelete = [ 'layout' , 'params' , 'standAlone' , 'target' ] ;
301+ keysToDelete . forEach ( ( key ) => delete currentAttribute [ key ] ) ;
273302
274303 currentAttribute [ 'direction' ] = 'ltr' ;
275304 currentAttribute [ 'display' ] = 'Display button to open Omniscript' ;
0 commit comments