Skip to content

Commit 4f06d9a

Browse files
joe-ayoub-segmentCopilotsayan-das-in
authored
STRATCONN-6743 - [Facebook CAPI] - refactor Actions part 2 (#3722)
* STRATCONN-6743 - [Facebook CAPI] - refactor for pageView Actions part 2 * Update packages/destination-actions/src/destinations/facebook-conversions-api/__tests__/addToCart2.test.ts Co-authored-by: Copilot <[email protected]> * Update packages/destination-actions/src/destinations/facebook-conversions-api/__tests__/initiateCheckout.test.ts Co-authored-by: Copilot <[email protected]> * Update packages/destination-actions/src/destinations/facebook-conversions-api/__tests__/initiateCheckout2.test.ts Co-authored-by: Copilot <[email protected]> * Update packages/destination-actions/src/destinations/facebook-conversions-api/__tests__/addToCart.test.ts Co-authored-by: Copilot <[email protected]> * Addressed copilot reviews --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Sayan Das <[email protected]> Co-authored-by: Sayan Das <[email protected]>
1 parent 05b7a23 commit 4f06d9a

13 files changed

Lines changed: 3646 additions & 3376 deletions

File tree

packages/destination-actions/src/destinations/facebook-conversions-api/__tests__/addToCart.test.ts

Lines changed: 1050 additions & 748 deletions
Large diffs are not rendered by default.

packages/destination-actions/src/destinations/facebook-conversions-api/__tests__/addToCart2.test.ts

Lines changed: 1094 additions & 791 deletions
Large diffs are not rendered by default.

packages/destination-actions/src/destinations/facebook-conversions-api/__tests__/custom.test.ts

Lines changed: 299 additions & 233 deletions
Large diffs are not rendered by default.

packages/destination-actions/src/destinations/facebook-conversions-api/__tests__/custom2.test.ts

Lines changed: 334 additions & 267 deletions
Large diffs are not rendered by default.

packages/destination-actions/src/destinations/facebook-conversions-api/__tests__/initiateCheckout.test.ts

Lines changed: 361 additions & 246 deletions
Large diffs are not rendered by default.

packages/destination-actions/src/destinations/facebook-conversions-api/__tests__/initiateCheckout2.test.ts

Lines changed: 425 additions & 287 deletions
Large diffs are not rendered by default.

packages/destination-actions/src/destinations/facebook-conversions-api/addToCart/index.ts

Lines changed: 11 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,25 @@
11
import { ActionDefinition, IntegrationError } from '@segment/actions-core'
22
import type { Settings } from '../generated-types'
33
import type { Payload } from './generated-types'
4-
import {
5-
content_ids,
6-
content_name,
7-
content_type,
8-
contents,
9-
validateContents,
10-
currency,
11-
value,
12-
action_source,
13-
event_time,
14-
event_source_url,
15-
event_id,
16-
custom_data,
17-
data_processing_options,
18-
data_processing_options_country,
19-
data_processing_options_state,
20-
dataProcessingOptions,
21-
test_event_code
22-
} from '../fb-capi-properties'
4+
import { validateContents, dataProcessingOptions } from '../fb-capi-properties'
235
import { CURRENCY_ISO_CODES } from '../constants'
24-
import { hash_user_data, user_data_field } from '../fb-capi-user-data'
6+
import { hash_user_data } from '../fb-capi-user-data'
257
import { get_api_version } from '../utils'
26-
import { generate_app_data, app_data_field } from '../fb-capi-app-data'
8+
import { generate_app_data } from '../fb-capi-app-data'
9+
import { addToCartFields } from '../shared/fields'
10+
import { send, getAddToCartEventData } from '../shared/functions'
11+
import { EventType, FEATURE_FLAG_ADD_TO_CART } from '../shared/constants'
2712

2813
const action: ActionDefinition<Settings, Payload> = {
2914
title: 'Add to Cart',
3015
description: 'Send event when a user adds a product to the shopping cart',
3116
defaultSubscription: 'type = "track" and event = "Product Added"',
32-
fields: {
33-
action_source: { ...action_source, required: true },
34-
event_time: { ...event_time, required: true },
35-
user_data: user_data_field,
36-
app_data_field: app_data_field,
37-
content_ids: content_ids,
38-
content_name: content_name,
39-
content_type: content_type,
40-
contents: {
41-
...contents,
42-
default: {
43-
// Segment Product Added is a single product event
44-
'@arrayPath': [
45-
'$.properties',
46-
{
47-
id: {
48-
'@path': '$.product_id'
49-
},
50-
quantity: {
51-
'@path': '$.quantity'
52-
},
53-
item_price: {
54-
'@path': '$.price'
55-
}
56-
}
57-
]
58-
}
59-
},
60-
currency: currency,
61-
event_id: event_id,
62-
event_source_url: event_source_url,
63-
value: { ...value, default: { '@path': '$.properties.price' } },
64-
custom_data: custom_data,
65-
data_processing_options: data_processing_options,
66-
data_processing_options_country: data_processing_options_country,
67-
data_processing_options_state: data_processing_options_state,
68-
test_event_code: test_event_code
69-
},
70-
17+
fields: addToCartFields,
7118
perform: (request, { payload, settings, features, statsContext }) => {
19+
if (features && features[FEATURE_FLAG_ADD_TO_CART]) {
20+
return send(request, payload, settings, getAddToCartEventData, EventType.AddToCart, features, statsContext)
21+
}
22+
7223
if (payload.currency && !CURRENCY_ISO_CODES.has(payload.currency)) {
7324
throw new IntegrationError(
7425
`${payload.currency} is not a valid currency code.`,

packages/destination-actions/src/destinations/facebook-conversions-api/addToCart2/index.ts

Lines changed: 11 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,14 @@
11
import { ActionDefinition, IntegrationError } from '@segment/actions-core'
22
import type { Settings } from '../generated-types'
33
import type { Payload } from './generated-types'
4-
import {
5-
content_ids,
6-
content_name,
7-
content_type,
8-
contents,
9-
validateContents,
10-
currency,
11-
value,
12-
action_source,
13-
event_time,
14-
event_source_url,
15-
event_id,
16-
custom_data,
17-
data_processing_options,
18-
data_processing_options_country,
19-
data_processing_options_state,
20-
dataProcessingOptions,
21-
test_event_code
22-
} from '../fb-capi-properties'
4+
import { validateContents, dataProcessingOptions } from '../fb-capi-properties'
235
import { CURRENCY_ISO_CODES } from '../constants'
24-
import { hash_user_data, user_data_field } from '../fb-capi-user-data'
6+
import { hash_user_data } from '../fb-capi-user-data'
257
import { get_api_version } from '../utils'
26-
import { generate_app_data, app_data_field } from '../fb-capi-app-data'
8+
import { generate_app_data } from '../fb-capi-app-data'
9+
import { addToCartFields } from '../shared/fields'
10+
import { send, getAddToCartEventData } from '../shared/functions'
11+
import { EventType, FEATURE_FLAG_ADD_TO_CART } from '../shared/constants'
2712

2813
const action: ActionDefinition<Settings, Payload> = {
2914
title: 'Add to Cart V2',
@@ -35,47 +20,14 @@ const action: ActionDefinition<Settings, Payload> = {
3520
default: 'add',
3621
choices: [{ label: 'Insert Records', value: 'add' }]
3722
},
38-
fields: {
39-
action_source: { ...action_source, required: true },
40-
event_time: { ...event_time, required: true },
41-
user_data: user_data_field,
42-
app_data_field: app_data_field,
43-
content_ids: content_ids,
44-
content_name: content_name,
45-
content_type: content_type,
46-
contents: {
47-
...contents,
48-
default: {
49-
// Segment Product Added is a single product event
50-
'@arrayPath': [
51-
'$.properties',
52-
{
53-
id: {
54-
'@path': '$.product_id'
55-
},
56-
quantity: {
57-
'@path': '$.quantity'
58-
},
59-
item_price: {
60-
'@path': '$.price'
61-
}
62-
}
63-
]
64-
}
65-
},
66-
currency: currency,
67-
event_id: event_id,
68-
event_source_url: event_source_url,
69-
value: { ...value, default: { '@path': '$.properties.price' } },
70-
custom_data: custom_data,
71-
data_processing_options: data_processing_options,
72-
data_processing_options_country: data_processing_options_country,
73-
data_processing_options_state: data_processing_options_state,
74-
test_event_code: test_event_code
75-
},
23+
fields: addToCartFields,
7624

7725
perform: (request, { payload, settings, features, statsContext, syncMode }) => {
7826
if (syncMode === 'add') {
27+
if (features && features[FEATURE_FLAG_ADD_TO_CART]) {
28+
return send(request, payload, settings, getAddToCartEventData, EventType.AddToCart, features, statsContext)
29+
}
30+
7931
if (payload.currency && !CURRENCY_ISO_CODES.has(payload.currency)) {
8032
throw new IntegrationError(
8133
`${payload.currency} is not a valid currency code.`,

0 commit comments

Comments
 (0)