@@ -182,8 +182,11 @@ export function toJSONwithObjects(object, className) {
182
182
}
183
183
toJSON [ key ] = val . _toFullJSON ( ) ;
184
184
}
185
+ // Preserve original object's className if no override className is provided
185
186
if ( className ) {
186
187
toJSON . className = className ;
188
+ } else if ( object . className && ! toJSON . className ) {
189
+ toJSON . className = object . className ;
187
190
}
188
191
return toJSON ;
189
192
}
@@ -437,72 +440,91 @@ function logTriggerErrorBeforeHook(triggerType, className, input, auth, error, l
437
440
export function maybeRunAfterFindTrigger (
438
441
triggerType ,
439
442
auth ,
440
- className ,
441
- objects ,
443
+ classNameQuery ,
444
+ objectsInput ,
442
445
config ,
443
446
query ,
444
447
context
445
448
) {
446
449
return new Promise ( ( resolve , reject ) => {
447
- const trigger = getTrigger ( className , triggerType , config . applicationId ) ;
450
+ const trigger = getTrigger ( classNameQuery , triggerType , config . applicationId ) ;
451
+
448
452
if ( ! trigger ) {
449
- return resolve ( ) ;
453
+ if ( objectsInput && objectsInput . length > 0 && objectsInput [ 0 ] instanceof Parse . Object ) {
454
+ return resolve ( objectsInput . map ( obj => toJSONwithObjects ( obj ) ) ) ;
455
+ }
456
+ return resolve ( objectsInput || [ ] ) ;
450
457
}
458
+
451
459
const request = getRequestObject ( triggerType , auth , null , null , config , context ) ;
452
- if ( query ) {
460
+ if ( query instanceof Parse . Query ) {
453
461
request . query = query ;
462
+ } else if ( typeof query === 'object' && query !== null ) {
463
+ const parseQueryInstance = new Parse . Query ( classNameQuery ) ;
464
+ if ( query . where ) {
465
+ parseQueryInstance . withJSON ( query ) ;
466
+ } else {
467
+ parseQueryInstance . withJSON ( { where : query } ) ;
468
+ }
469
+ request . query = parseQueryInstance ;
470
+ } else {
471
+ request . query = new Parse . Query ( classNameQuery ) ;
454
472
}
473
+
455
474
const { success, error } = getResponseObject (
456
475
request ,
457
- object => {
458
- resolve ( object ) ;
476
+ processedObjectsJSON => {
477
+ resolve ( processedObjectsJSON ) ;
459
478
} ,
460
- error => {
461
- reject ( error ) ;
479
+ errorData => {
480
+ reject ( errorData ) ;
462
481
}
463
482
) ;
464
483
logTriggerSuccessBeforeHook (
465
484
triggerType ,
466
- className ,
467
- 'AfterFind' ,
468
- JSON . stringify ( objects ) ,
485
+ classNameQuery ,
486
+ 'AfterFind Input (Pre-Transform)' ,
487
+ JSON . stringify (
488
+ objectsInput . map ( o => ( o instanceof Parse . Object ? o . id + ':' + o . className : o ) )
489
+ ) ,
469
490
auth ,
470
491
config . logLevels . triggerBeforeSuccess
471
492
) ;
472
- request . objects = objects . map ( object => {
473
- //setting the class name to transform into parse object
474
- object . className = className ;
475
- if ( object instanceof Parse . Object ) {
476
- return object ;
493
+ request . objects = objectsInput . map ( currentObject => {
494
+ if ( currentObject instanceof Parse . Object ) {
495
+ return currentObject ;
477
496
}
478
- return Parse . Object . fromJSON ( object ) ;
497
+ // Preserve the original className if it exists, otherwise use the query className
498
+ const originalClassName = currentObject . className || classNameQuery ;
499
+ const tempObjectWithClassName = { ...currentObject , className : originalClassName } ;
500
+ return Parse . Object . fromJSON ( tempObjectWithClassName ) ;
479
501
} ) ;
480
502
return Promise . resolve ( )
481
503
. then ( ( ) => {
482
- return maybeRunValidator ( request , `${ triggerType } .${ className } ` , auth ) ;
504
+ return maybeRunValidator ( request , `${ triggerType } .${ classNameQuery } ` , auth ) ;
483
505
} )
484
506
. then ( ( ) => {
485
507
if ( request . skipWithMasterKey ) {
486
508
return request . objects ;
487
509
}
488
- const response = trigger ( request ) ;
489
- if ( response && typeof response . then === 'function' ) {
490
- return response . then ( results => {
510
+ const responseFromTrigger = trigger ( request ) ;
511
+ if ( responseFromTrigger && typeof responseFromTrigger . then === 'function' ) {
512
+ return responseFromTrigger . then ( results => {
491
513
return results ;
492
514
} ) ;
493
515
}
494
- return response ;
516
+ return responseFromTrigger ;
495
517
} )
496
518
. then ( success , error ) ;
497
- } ) . then ( results => {
519
+ } ) . then ( resultsAsJSON => {
498
520
logTriggerAfterHook (
499
521
triggerType ,
500
- className ,
501
- JSON . stringify ( results ) ,
522
+ classNameQuery ,
523
+ JSON . stringify ( resultsAsJSON ) ,
502
524
auth ,
503
525
config . logLevels . triggerAfter
504
526
) ;
505
- return results ;
527
+ return resultsAsJSON ;
506
528
} ) ;
507
529
}
508
530
0 commit comments