7
7
JSONLikeObject ,
8
8
HTTPError ,
9
9
MultiStatusResponse ,
10
- ErrorCodes
10
+ ErrorCodes ,
11
+ StatsContext
11
12
} from '@segment/actions-core'
12
13
import { API_URL , REVISION_DATE } from './config'
13
14
import { Settings } from './generated-types'
@@ -519,7 +520,11 @@ async function updateMultiStatusWithKlaviyoErrors(
519
520
} )
520
521
}
521
522
522
- export async function removeBulkProfilesFromList ( request : RequestClient , payloads : RemoveProfilePayload [ ] ) {
523
+ export async function removeBulkProfilesFromList (
524
+ request : RequestClient ,
525
+ payloads : RemoveProfilePayload [ ] ,
526
+ statsContext ?: StatsContext
527
+ ) {
523
528
const multiStatusResponse = new MultiStatusResponse ( )
524
529
525
530
const { filteredPayloads, validPayloadIndicesBitmap } = validateAndPrepareRemoveBulkProfilePayloads (
@@ -535,6 +540,13 @@ export async function removeBulkProfilesFromList(request: RequestClient, payload
535
540
const externalIds = extractField ( filteredPayloads , 'external_id' )
536
541
const phoneNumbers = extractField ( filteredPayloads , 'phone_number' )
537
542
543
+ if ( statsContext ) {
544
+ const { tags, statsClient } = statsContext
545
+ const set = new Set ( )
546
+ filteredPayloads . forEach ( ( x ) => set . add ( x . list_id ) )
547
+ statsClient . histogram ( 'actions-klaviyo.remove_profile_from_list.unique_list_id' , set . size , tags )
548
+ }
549
+
538
550
const listId = filteredPayloads [ 0 ] ?. list_id as string
539
551
540
552
try {
@@ -666,7 +678,11 @@ function validateAndPrepareBatchedProfileImportPayloads(
666
678
return { filteredPayloads, validPayloadIndicesBitmap }
667
679
}
668
680
669
- export async function sendBatchedProfileImportJobRequest ( request : RequestClient , payloads : AddProfileToListPayload [ ] ) {
681
+ export async function sendBatchedProfileImportJobRequest (
682
+ request : RequestClient ,
683
+ payloads : AddProfileToListPayload [ ] ,
684
+ statsContext ?: StatsContext
685
+ ) {
670
686
const multiStatusResponse = new MultiStatusResponse ( )
671
687
const { filteredPayloads, validPayloadIndicesBitmap } = validateAndPrepareBatchedProfileImportPayloads (
672
688
payloads ,
@@ -676,6 +692,13 @@ export async function sendBatchedProfileImportJobRequest(request: RequestClient,
676
692
if ( ! filteredPayloads . length ) {
677
693
return multiStatusResponse
678
694
}
695
+
696
+ if ( statsContext ) {
697
+ const { tags, statsClient } = statsContext
698
+ const set = new Set ( )
699
+ filteredPayloads . forEach ( ( x ) => set . add ( x . list_id ) )
700
+ statsClient . histogram ( 'actions-klaviyo.add_profile_to_list.unique_list_id' , set . size , tags )
701
+ }
679
702
const importJobPayload = constructBulkProfileImportPayload (
680
703
filteredPayloads as unknown as KlaviyoProfile [ ] ,
681
704
payloads [ 0 ] ?. list_id
0 commit comments