@@ -20,21 +20,34 @@ export function updateAssetURLForGQL(gqlResponse:any) {
2020function processEntry ( entry :any ) {
2121 for ( let field in entry ) {
2222 const fieldData = entry [ field ] ;
23- const rteField = findRTEField ( fieldData )
24- const edges = rteField ?. embedded_itemsConnection ?. edges ;
25- edges . forEach ( ( edge :any ) => {
26- const node = edge . node ;
27- if ( node ?. url && node ?. filename ) {
28-
29- if ( ! node ?. system ?. uid ) throw new Error ( 'Asset UID not found in the response' ) ;
30-
31- const correspondingAsset = rteField ?. json ?. children ?. find ( ( child :any ) => child . attrs [ 'asset-uid' ] === node . system . uid ) ;
32- correspondingAsset . attrs [ 'asset-link' ] = node . url ;
33- }
23+ if ( fieldData instanceof Array ) {
24+ fieldData . forEach ( ( data :any ) => {
25+ findRTEFieldAndUpdateURL ( data ) ;
3426 } ) ;
27+ } else if ( fieldData && typeof fieldData === 'object' ) {
28+ findRTEFieldAndUpdateURL ( fieldData ) ;
29+ }
3530 }
3631}
3732
33+ function findRTEFieldAndUpdateURL ( fieldData :any ) {
34+ const rteField = findRTEField ( fieldData ) ;
35+
36+ if ( ! rteField ) return ;
37+
38+ const edges = rteField ?. embedded_itemsConnection ?. edges ;
39+ edges . forEach ( ( edge :any ) => {
40+ const node = edge . node ;
41+ if ( node ?. url && node ?. filename ) {
42+
43+ if ( ! node ?. system ?. uid ) throw new Error ( 'Asset UID not found in the response' ) ;
44+
45+ const correspondingAsset = rteField ?. json ?. children ?. find ( ( child :any ) => child . attrs [ 'asset-uid' ] === node . system . uid ) ;
46+ correspondingAsset . attrs [ 'asset-link' ] = node . url ;
47+ }
48+ } ) ;
49+ }
50+
3851function findRTEField ( fieldData : any ) : any {
3952 if ( fieldData && fieldData . embedded_itemsConnection ) {
4053 return fieldData ;
0 commit comments