@@ -233,18 +233,21 @@ export function sendRequest(queryObject, options) {
233
233
queryObject . requestParams . body = merge ( queryObject . requestParams . body , cloneQueryObj ) ;
234
234
235
235
if ( queryObject . live_preview && queryObject . live_preview . enable === true && queryObject . live_preview . live_preview && queryObject . live_preview . live_preview !== "init" ) {
236
- if ( queryObject . live_preview . content_type_uid === queryObject . content_type_uid ) {
237
- queryObject . requestParams . body = merge ( queryObject . requestParams . body , { live_preview : queryObject . live_preview . live_preview || "init" } ) ;
238
- cachePolicy = 2 ; // network else cache
239
- if ( queryObject . requestParams . body [ 'environment' ] ) {
240
- delete queryObject . requestParams . body [ 'environment' ] ;
241
- }
242
- if ( queryObject . requestParams . headers [ 'access_token' ] )
243
- delete queryObject . requestParams . headers [ 'access_token' ] ;
244
-
245
- queryObject . requestParams . headers [ 'authorization' ] = queryObject . live_preview . management_token
246
- } else if ( queryObject . live_preview . live_preview ) {
247
- cachePolicy = 1 ; // cache then network
236
+ queryObject . requestParams . body = merge ( queryObject . requestParams . body , { live_preview : queryObject . live_preview . live_preview || "init" } ) ;
237
+ cachePolicy = 2 ; // network else cache
238
+ if ( queryObject . requestParams . body [ 'environment' ] ) {
239
+ delete queryObject . requestParams . body [ 'environment' ] ;
240
+ }
241
+ if ( queryObject . requestParams . headers [ 'access_token' ] )
242
+ delete queryObject . requestParams . headers [ 'access_token' ] ;
243
+ delete queryObject . requestParams . headers [ 'authorization' ] ;
244
+ delete queryObject . requestParams . headers [ 'preview_token' ] ;
245
+
246
+ if ( queryObject . live_preview . preview_token ) {
247
+ queryObject . requestParams . headers [ 'preview_token' ] = queryObject . live_preview . preview_token ;
248
+ queryObject . requestParams . headers [ 'live_preview' ] = queryObject . live_preview . live_preview ;
249
+ } else if ( queryObject . live_preview . management_token ) {
250
+ queryObject . requestParams . headers [ 'authorization' ] = queryObject . live_preview . management_token ;
248
251
}
249
252
}
250
253
}
@@ -347,56 +350,10 @@ export function sendRequest(queryObject, options) {
347
350
if ( err || ! _data ) {
348
351
callback ( true , resolve , reject ) ;
349
352
} else {
350
- try {
351
-
352
- const doesQueryRequestForReferences =
353
- queryObject . _query &&
354
- Array . isArray (
355
- queryObject . _query . include
356
- ) &&
357
- queryObject . _query . include . length > 0 ;
358
-
359
- if ( doesQueryRequestForReferences ) {
360
- const referencesToBeResolved =
361
- queryObject . _query . include ;
362
-
363
- const referencesToBeResolvedMap =
364
- generateReferenceMap (
365
- referencesToBeResolved
366
- ) ;
367
-
368
- if ( isSingle ) {
369
- await updateLivePreviewReferenceEntry (
370
- referencesToBeResolvedMap ,
371
- _data . entry ,
372
- queryObject ,
373
- options
374
- ) ;
375
- } else {
376
- await Promise . all ( _data . entries . map ( async ( entry ) => {
377
- await updateLivePreviewReferenceEntry (
378
- referencesToBeResolvedMap ,
379
- entry ,
380
- queryObject ,
381
- options
382
-
383
- ) ;
384
- } ) )
385
- }
386
-
387
- }
388
- } catch ( error ) {
389
- }
390
- try {
391
- if ( ! tojson )
392
- _data =
393
- resultWrapper ( _data ) ;
394
- return resolve (
395
- spreadResult ( _data )
396
- ) ;
397
- } catch ( e ) {
398
- return reject ( e ) ;
353
+ if ( ! tojson ) {
354
+ _data = resultWrapper ( _data ) ;
399
355
}
356
+ return resolve ( spreadResult ( _data ) ) ;
400
357
}
401
358
} catch ( e ) {
402
359
return reject ( e ) ;
@@ -405,7 +362,7 @@ export function sendRequest(queryObject, options) {
405
362
} else {
406
363
callback ( true , resolve , reject ) ;
407
364
}
408
-
365
+
409
366
} ) ;
410
367
case 2 :
411
368
case 0 :
@@ -448,111 +405,3 @@ export function sendRequest(queryObject, options) {
448
405
} )
449
406
}
450
407
}
451
-
452
-
453
- function generateReferenceMap ( references ) {
454
- const map = { } ;
455
-
456
- function mapSingleReference ( reference ) {
457
- reference = reference . replace ( / [ \[ ] / gm, "." ) . replace ( / [ \] ] / gm, "" ) ; //to accept [index]
458
- let keys = reference . split ( "." ) ,
459
- last = keys . pop ( ) ;
460
-
461
- keys . reduce ( function ( o , k ) {
462
- return ( o [ k ] = o [ k ] || { } ) ;
463
- } , map ) [ last ] = { } ;
464
- }
465
-
466
- references . forEach ( function ( reference ) {
467
- mapSingleReference ( reference ) ;
468
- } ) ;
469
-
470
- return map ;
471
- } ;
472
-
473
- async function updateLivePreviewReferenceEntry ( referenceMap , entry , stack , options , handlerOptions ) {
474
- const { live_preview :livePreview , requestParams} = stack ;
475
- const { content_type_uid : livePreviewContentTypeUid , management_token } = livePreview ;
476
-
477
-
478
- async function findReferenceAndFetchEntry ( referenceMap , entry , setReference ) {
479
- if ( typeof entry === "undefined" )
480
- return ;
481
- if ( Array . isArray ( entry ) ) {
482
- await Promise . all ( entry . map ( ( subEntry , i ) => {
483
- const setReference = ( val ) => {
484
- entry [ i ] = val ;
485
- }
486
- return findReferenceAndFetchEntry ( referenceMap , subEntry , setReference )
487
- } ) ) ;
488
- } else {
489
- if ( entry . _content_type_uid === livePreviewContentTypeUid ) {
490
-
491
- try {
492
- stack . requestParams = JSON . parse ( JSON . stringify ( requestParams ) ) ;
493
-
494
- const includeReference = getIncludeParamForReference ( referenceMap )
495
- stack . requestParams . body . include = includeReference
496
- stack . requestParams . body . live_preview = livePreview . live_preview
497
- stack . requestParams . body . content_type_uid = livePreviewContentTypeUid
498
-
499
- const livePreviewUrl = livePreview . host . match (
500
- / ^ ( ( h t t p [ s ] ? ) : ( \/ \/ ) ? ) ? ( .+ ) $ /
501
- ) ;
502
-
503
- const livePreviewHost =
504
- ( livePreviewUrl [ 1 ] || "https://" ) + livePreviewUrl [ 4 ] ;
505
- const entryUid = entry . uid ;
506
-
507
- const url = `${ livePreviewHost } /v3/content_types/${ entry . _content_type_uid } /entries/${ entryUid } ` ;
508
- stack . requestParams . url = url
509
- stack . requestParams . method = "GET"
510
-
511
- delete stack . requestParams . headers . access_token
512
- stack . requestParams . headers . authorization = management_token
513
-
514
- const data = await Request ( stack , options ) ;
515
- data . entry . _content_type_uid = livePreviewContentTypeUid ;
516
- data . entry . uid = entryUid ;
517
- setReference ( data . entry ) ;
518
-
519
- } catch ( err ) {
520
- console . log ( "errror" , err )
521
- }
522
- } else {
523
-
524
- await Promise . all ( Object . entries ( referenceMap ) . map ( async function ( [
525
- currentRefFieldKey ,
526
- subReferenceMap ,
527
- ] ) {
528
- // recurse
529
- const setRef = ( val ) => {
530
- entry [ currentRefFieldKey ] = val ;
531
- }
532
- await findReferenceAndFetchEntry ( subReferenceMap , entry [ currentRefFieldKey ] , ( ) => { } ) ;
533
- } ) ) ;
534
- }
535
- }
536
- }
537
-
538
- await findReferenceAndFetchEntry ( referenceMap , entry , ( ) => { } ) ;
539
-
540
- }
541
-
542
- function getIncludeParamForReference ( referenceMap ) {
543
- const newRefences = [ ] ;
544
-
545
- function buildParamStringRecursively ( currentReferenceMap , includeParamTillNow ) {
546
- if ( Object . keys ( currentReferenceMap ) . length === 0 ) {
547
- newRefences . push ( includeParamTillNow . substring ( 1 ) ) ;
548
- } else {
549
-
550
- Object . entries ( currentReferenceMap ) . forEach ( ( [ referenceFieldKey , subReferenceMap ] ) => {
551
- buildParamStringRecursively ( subReferenceMap , [ includeParamTillNow , referenceFieldKey ] . join ( "." ) ) ;
552
- } ) ;
553
- }
554
- }
555
-
556
- buildParamStringRecursively ( referenceMap , "" ) ;
557
- return newRefences . filter ( ( currentReference ) => currentReference !== "" ) ;
558
- }
0 commit comments