@capillarytech/creatives-library 8.0.333 → 8.0.334

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/package.json +1 -1
  2. package/utils/tests/tagValidations.test.js +20 -0
  3. package/v2Components/CapTagList/index.js +28 -23
  4. package/v2Components/CapTagList/style.scss +29 -0
  5. package/v2Components/CapTagListWithInput/__tests__/CapTagListWithInput.test.js +63 -0
  6. package/v2Components/CapTagListWithInput/index.js +4 -0
  7. package/v2Components/CapWhatsappCTA/index.js +2 -0
  8. package/v2Components/FormBuilder/index.js +7 -0
  9. package/v2Components/HtmlEditor/HTMLEditor.js +6 -1
  10. package/v2Components/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +1 -0
  11. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +927 -2
  12. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +3 -0
  13. package/v2Containers/BeeEditor/index.js +3 -0
  14. package/v2Containers/CreativesContainer/SlideBoxContent.js +28 -1
  15. package/v2Containers/CreativesContainer/index.js +3 -0
  16. package/v2Containers/Email/index.js +1 -0
  17. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +6 -1
  18. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +3 -0
  19. package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +20 -2
  20. package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +16 -1
  21. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +3 -0
  22. package/v2Containers/EmailWrapper/index.js +4 -0
  23. package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +1 -0
  24. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +9 -0
  25. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +1 -0
  26. package/v2Containers/MobilePush/Create/index.js +2 -0
  27. package/v2Containers/MobilePush/Edit/index.js +2 -0
  28. package/v2Containers/MobilepushWrapper/index.js +3 -1
  29. package/v2Containers/Rcs/index.js +1 -0
  30. package/v2Containers/Sms/Create/index.js +2 -0
  31. package/v2Containers/Sms/Edit/index.js +2 -0
  32. package/v2Containers/SmsTrai/Edit/index.js +2 -0
  33. package/v2Containers/SmsWrapper/index.js +2 -0
  34. package/v2Containers/TagList/index.js +62 -5
  35. package/v2Containers/TagList/messages.js +4 -0
  36. package/v2Containers/TagList/tests/TagList.test.js +124 -20
  37. package/v2Containers/TagList/tests/mockdata.js +17 -0
  38. package/v2Containers/Viber/index.js +3 -0
  39. package/v2Containers/WebPush/Create/hooks/useTagManagement.js +0 -2
  40. package/v2Containers/WebPush/Create/index.js +9 -1
  41. package/v2Containers/Whatsapp/index.js +5 -0
  42. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +20 -0
  43. package/v2Containers/Zalo/index.js +2 -0
@@ -30,6 +30,7 @@ const SmsWrapper = (props) => {
30
30
  smsRegister,
31
31
  onShowTemplates,
32
32
  eventContextTags,
33
+ waitEventContextTags,
33
34
  showLiquidErrorInFooter,
34
35
  getLiquidTags,
35
36
  showTestAndPreviewSlidebox,
@@ -53,6 +54,7 @@ const SmsWrapper = (props) => {
53
54
  onPreviewContentClicked,
54
55
  onTestContentClicked,
55
56
  eventContextTags,
57
+ waitEventContextTags,
56
58
  showLiquidErrorInFooter,
57
59
  getLiquidTags,
58
60
  showTestAndPreviewSlidebox,
@@ -94,10 +94,28 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
94
94
  }
95
95
 
96
96
  componentDidUpdate(prevProps) {
97
- const { tags, injectedTags, selectedOfferDetails } = this.props;
98
- const { tags: prevTags, injectedTags: prevInjectedTags, selectedOfferDetails: prevSelectedOfferDetails } = prevProps;
99
-
100
- if (tags !== prevTags || injectedTags !== prevInjectedTags || selectedOfferDetails !== prevSelectedOfferDetails) {
97
+ const {
98
+ tags,
99
+ injectedTags,
100
+ selectedOfferDetails,
101
+ eventContextTags,
102
+ waitEventContextTags,
103
+ } = this.props;
104
+ const {
105
+ tags: prevTags,
106
+ injectedTags: prevInjectedTags,
107
+ selectedOfferDetails: prevSelectedOfferDetails,
108
+ eventContextTags: prevEventContextTags,
109
+ waitEventContextTags: prevWaitEventContextTags,
110
+ } = prevProps;
111
+
112
+ if (
113
+ tags !== prevTags
114
+ || injectedTags !== prevInjectedTags
115
+ || selectedOfferDetails !== prevSelectedOfferDetails
116
+ || !_.isEqual(eventContextTags, prevEventContextTags)
117
+ || !_.isEqual(waitEventContextTags, prevWaitEventContextTags)
118
+ ) {
101
119
  this.generateTags(this.props);
102
120
  }
103
121
  }
@@ -162,7 +180,7 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
162
180
  let injectedTags = {};
163
181
  const eventContextTagsObj = {};
164
182
 
165
- const {selectedOfferDetails, eventContextTags } = props;
183
+ const {selectedOfferDetails, eventContextTags, waitEventContextTags } = props;
166
184
  if (props.injectedTags && !_.isEmpty(props.injectedTags)) {
167
185
  const formattedInjectedTags = handleInjectedData(
168
186
  props.injectedTags,
@@ -214,6 +232,43 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
214
232
  };
215
233
  });
216
234
  }
235
+ // Wait event context tags should be displayed in the Add Labels when node is next to Event based wait node.
236
+ if (waitEventContextTags && Object.keys(waitEventContextTags)?.length) {
237
+
238
+ Object.keys(waitEventContextTags).forEach((blockId) => {
239
+ const WAIT_EVENT_HEADER_MSG_LABEL = `${waitEventContextTags[blockId].eventName} (${waitEventContextTags[blockId].blockName})`;
240
+ eventContextTagsObj[blockId] = {
241
+ "name": WAIT_EVENT_HEADER_MSG_LABEL,
242
+ "desc": WAIT_EVENT_HEADER_MSG_LABEL,
243
+ "resolved": true,
244
+ 'tag-header': true,
245
+ "subtags": {},
246
+ };
247
+
248
+ waitEventContextTags?.[blockId]?.tags?.forEach((tag) => {
249
+ const {
250
+ tagName, label, profileId, profileName, blockName, eventName
251
+ } = tag || {};
252
+ if (!profileId || !tagName || !label || !profileName) return;
253
+ // Initializing the tags profile if it doesn't exist
254
+ if (!eventContextTagsObj?.[blockId]?.subtags?.[profileId]) {
255
+ eventContextTagsObj[blockId].subtags[profileId] = {
256
+ "name": profileName,
257
+ "desc": profileName,
258
+ "resolved": true,
259
+ 'tag-header': true,
260
+ "subtags": {},
261
+ };
262
+ }
263
+ // Adding the current tag to the profile group
264
+ eventContextTagsObj[blockId].subtags[profileId].subtags[tagName] = {
265
+ name: label,
266
+ desc: label,
267
+ resolved: true,
268
+ };
269
+ });
270
+ });
271
+ }
217
272
  this.setState({tags: _.merge( {}, tags, injectedTags, eventContextTagsObj )});
218
273
  }
219
274
 
@@ -432,6 +487,7 @@ TagList.defaultProps = {
432
487
  isNewVersionFlow: false,
433
488
  userLocale: 'en',
434
489
  eventContextTags: [],
490
+ waitEventContextTags: {},
435
491
  };
436
492
 
437
493
  TagList.propTypes = {
@@ -452,6 +508,7 @@ TagList.propTypes = {
452
508
  disabled: PropTypes.bool,
453
509
  fetchingSchemaError: PropTypes.bool,
454
510
  eventContextTags: PropTypes.array,
511
+ waitEventContextTags: PropTypes.object,
455
512
  popoverPlacement: PropTypes.string,
456
513
  // message to show when Add Label button is disabled (e.g. personalization restriction)
457
514
  disableTooltipMsg: PropTypes.string,
@@ -19,4 +19,8 @@ export default defineMessages({
19
19
  id: `${scope}.personalizationNotSupportedAnonymous`,
20
20
  defaultMessage: 'Personalization tags are not supported for anonymous customers',
21
21
  },
22
+ waitEvent: {
23
+ id: `${scope}.waitEvent`,
24
+ defaultMessage: 'Wait Event',
25
+ },
22
26
  });
@@ -5,28 +5,34 @@ import { initialReducer } from '../../../initialReducer';
5
5
  import { injectIntl } from "react-intl";
6
6
  import { fireEvent } from "@testing-library/react";
7
7
  import { TagList } from '../index';
8
- import { TagListData, eventContextTags } from './mockdata';
8
+ import { TagListData, eventContextTags, waitEventContextTags } from './mockdata';
9
+ import { OfferTag, badgesTags, offer } from '../../../utils/tests/common.mockdata';
10
+ import * as commonUtils from "../../../utils/common";
9
11
  import { Provider } from 'react-redux';
10
12
  import { screen, render } from '../../../utils/test-utils';
11
13
  import history from '../../../utils/history';
12
14
  const { getByText, queryByText } = screen;
13
15
 
16
+ const buildProps = (props = {}) => ({
17
+ ...TagListData,
18
+ onTagSelect: jest.fn(),
19
+ ...props,
20
+ });
14
21
 
15
- const initializeTagList = (props) => {
22
+ const initializeTagList = (props = {}) => {
16
23
  const store = configureStore({}, initialReducer, history);
17
24
  const Component = injectIntl(TagList);
18
-
19
- const propsObj = {
20
- ...TagListData,
21
- onTagSelect: jest.fn(),
22
- ...props,
25
+ const propsObj = buildProps(props);
26
+ return {
27
+ ...render(
28
+ <Provider store={store}>
29
+ <Component {...propsObj} />
30
+ </Provider>
31
+ ),
32
+ store,
33
+ Component,
34
+ propsObj,
23
35
  };
24
-
25
- return render(
26
- <Provider store={store}>
27
- <Component {...propsObj} />
28
- </Provider>
29
- );
30
36
  };
31
37
 
32
38
  const addLabelBtnAssertion = () => {
@@ -41,19 +47,117 @@ describe("TagList test : UNIT", () => {
41
47
  addLabelBtnAssertion();
42
48
  });
43
49
 
44
- it('should render event context tags correctly from generateTags and show tags under profile', () => {
45
- initializeTagList({eventContextTags});
50
+ it('should render event context tag section from generateTags', () => {
51
+ initializeTagList({ eventContextTags, moduleFilterEnabled: false });
46
52
  addLabelBtnAssertion();
47
53
  const EVENT_CONTEXT_TAG_HEADER = getByText(/Entry event/i);
48
54
  expect(EVENT_CONTEXT_TAG_HEADER).toBeInTheDocument();
49
- fireEvent.click(EVENT_CONTEXT_TAG_HEADER);
50
- // Customer profile tags
51
- const CUSTOMER_PROFILE = getByText(/Current Customer/i);
52
- fireEvent.click(CUSTOMER_PROFILE);
53
- expect(getByText(/lifetimePurchases/i)).toBeInTheDocument();
54
55
 
55
56
  // Behavioural event profile tags should not be visible as label and profile name is not present
56
57
  const BEHAVIOURAL_EVENT_PROFILE = queryByText(/Behavioural event/i);
57
58
  expect(BEHAVIOURAL_EVENT_PROFILE).not.toBeInTheDocument();
58
59
  });
60
+
61
+ it('should render wait event context section when waitEventContextTags is provided', () => {
62
+ initializeTagList({ waitEventContextTags, moduleFilterEnabled: false });
63
+ addLabelBtnAssertion();
64
+ const WAIT_EVENT_HEADER = getByText(/Order Placed \(Wait Block\)/i);
65
+ expect(WAIT_EVENT_HEADER).toBeInTheDocument();
66
+ });
67
+
68
+ it('should merge empty waitEventContextTags with entry event tags', () => {
69
+ initializeTagList({ eventContextTags, waitEventContextTags: {}, moduleFilterEnabled: false });
70
+ addLabelBtnAssertion();
71
+ expect(getByText(/Entry event/i)).toBeInTheDocument();
72
+ });
73
+
74
+ it('calls parent onContextChange with Outbound when tags and injectedTags are empty on popover open', () => {
75
+ const onContextChange = jest.fn();
76
+ initializeTagList({
77
+ tags: [],
78
+ injectedTags: {},
79
+ onContextChange,
80
+ onTagSelect: jest.fn(),
81
+ });
82
+ // Default fetch is triggered when the Add Label popover opens (not on mount)
83
+ addLabelBtnAssertion();
84
+ expect(onContextChange).toHaveBeenCalledWith('Outbound');
85
+ });
86
+
87
+ it('applies fetchingSchemaError from props via componentWillReceiveProps', () => {
88
+ const { rerender, Component, propsObj, store } = initializeTagList({ fetchingSchemaError: false });
89
+ addLabelBtnAssertion();
90
+ rerender(
91
+ <Provider store={store}>
92
+ <Component {...propsObj} fetchingSchemaError />
93
+ </Provider>
94
+ );
95
+ expect(screen.getByText(/add label/i)).toBeInTheDocument();
96
+ });
97
+
98
+ it('disables Add label when restrictPersonalization is true', () => {
99
+ initializeTagList({
100
+ restrictPersonalization: true,
101
+ disabled: false,
102
+ moduleFilterEnabled: false,
103
+ });
104
+ const btn = screen.getByText(/add label/i).closest('button');
105
+ expect(btn).toBeDisabled();
106
+ });
107
+
108
+ it('calls transformCouponTags when selectedOfferDetails and coupon tags are present', () => {
109
+ const spy = jest.spyOn(TagList.prototype, 'transformCouponTags');
110
+ initializeTagList({
111
+ tags: OfferTag,
112
+ injectedTags: {},
113
+ selectedOfferDetails: [{ id: 'c1', couponName: 'Promo Coupon', couponSeriesId: 'c1' }],
114
+ moduleFilterEnabled: false,
115
+ });
116
+ expect(spy).toHaveBeenCalled();
117
+ spy.mockRestore();
118
+ });
119
+
120
+ it('calls transformBadgeTags from common when badge offer and Badge tags are present', () => {
121
+ const spy = jest.spyOn(commonUtils, 'transformBadgeTags');
122
+ initializeTagList({
123
+ tags: badgesTags,
124
+ injectedTags: {},
125
+ selectedOfferDetails: offer,
126
+ moduleFilterEnabled: false,
127
+ });
128
+ expect(spy).toHaveBeenCalled();
129
+ spy.mockRestore();
130
+ });
131
+
132
+ it('unmounts without throwing', () => {
133
+ const { unmount } = initializeTagList();
134
+ expect(() => unmount()).not.toThrow();
135
+ });
136
+
137
+ it('regenerates tags when props.tags change (componentDidUpdate)', () => {
138
+ const { rerender, Component, store } = initializeTagList({ tags: TagListData.tags });
139
+ const extra = [
140
+ ...TagListData.tags,
141
+ {
142
+ _id: 'extra-tag',
143
+ type: 'TAG',
144
+ definition: {
145
+ label: { en: 'Extra' },
146
+ value: 'extra_value',
147
+ subtags: [],
148
+ 'tag-header': false,
149
+ supportedModules: [{ context: 'default', layout: 'sms', mandatory: false }],
150
+ },
151
+ scope: { tag: 'STANDARD', orgId: -1, verticals: [] },
152
+ isActive: true,
153
+ },
154
+ ];
155
+ rerender(
156
+ <Provider store={store}>
157
+ <Component {...buildProps({ tags: extra })} />
158
+ </Provider>
159
+ );
160
+ addLabelBtnAssertion();
161
+ expect(screen.getByText(/add label/i)).toBeInTheDocument();
162
+ });
59
163
  });
@@ -149,3 +149,20 @@ export const eventContextTags = [
149
149
  "isDynamicFact": false
150
150
  }
151
151
  ];
152
+
153
+ export const waitEventContextTags = {
154
+ block1: {
155
+ eventName: 'Order Placed',
156
+ blockName: 'Wait Block',
157
+ tags: [
158
+ {
159
+ tagName: 'waitEvent.orderId',
160
+ label: 'Order ID',
161
+ profileId: 'ORDER_PROFILE',
162
+ profileName: 'Order Profile',
163
+ blockName: 'Wait Block',
164
+ eventName: 'Order Placed',
165
+ },
166
+ ],
167
+ },
168
+ };
@@ -82,6 +82,7 @@ export const Viber = (props) => {
82
82
  viberData = {},
83
83
  selectedOfferDetails = [],
84
84
  eventContextTags,
85
+ waitEventContextTags,
85
86
  // TestAndPreviewSlidebox props
86
87
  showTestAndPreviewSlidebox: propsShowTestAndPreviewSlidebox,
87
88
  handleTestAndPreview: propsHandleTestAndPreview,
@@ -287,6 +288,7 @@ export const Viber = (props) => {
287
288
  userLocale={localStorage.getItem("jlocale") || "en"}
288
289
  selectedOfferDetails={selectedOfferDetails}
289
290
  eventContextTags={eventContextTags}
291
+ waitEventContextTags={waitEventContextTags}
290
292
  />
291
293
  </CapColumn>
292
294
  <div className="viber-textarea-wrapper">
@@ -592,6 +594,7 @@ export const Viber = (props) => {
592
594
  userLocale={localStorage.getItem("jlocale") || "en"}
593
595
  selectedOfferDetails={selectedOfferDetails}
594
596
  eventContextTags={eventContextTags}
597
+ waitEventContextTags={waitEventContextTags}
595
598
  />
596
599
  <CapColumn className="cta-actions">
597
600
  <CapButton
@@ -22,8 +22,6 @@ export const useTagManagement = ({
22
22
  metaEntities,
23
23
  getDefaultTags,
24
24
  supportedTags = EMPTY_ARRAY,
25
- injectedTags,
26
- eventContextTags = EMPTY_ARRAY,
27
25
  }) => {
28
26
  const [tags, setTags] = useState([]);
29
27
  const tagFetchKeyRef = useRef(null);
@@ -84,6 +84,7 @@ const MemoizedTagList = memo(({
84
84
  injectedTags,
85
85
  selectedOfferDetails,
86
86
  eventContextTags,
87
+ waitEventContextTags,
87
88
  forwardedTags,
88
89
  onTagSelect,
89
90
  restrictPersonalization = false,
@@ -99,6 +100,7 @@ const MemoizedTagList = memo(({
99
100
  injectedTags={injectedTags}
100
101
  selectedOfferDetails={selectedOfferDetails}
101
102
  eventContextTags={eventContextTags}
103
+ waitEventContextTags={waitEventContextTags}
102
104
  forwardedTags={forwardedTags}
103
105
  onTagSelect={onTagSelect}
104
106
  restrictPersonalization={restrictPersonalization}
@@ -116,6 +118,7 @@ const MemoizedTagList = memo(({
116
118
  && prevProps.injectedTags === nextProps.injectedTags
117
119
  && prevProps.selectedOfferDetails === nextProps.selectedOfferDetails
118
120
  && prevProps.eventContextTags === nextProps.eventContextTags
121
+ && prevProps.waitEventContextTags === nextProps.waitEventContextTags
119
122
  && prevProps.forwardedTags === nextProps.forwardedTags
120
123
  && prevProps.onTagSelect === nextProps.onTagSelect
121
124
  && prevProps.restrictPersonalization === nextProps.restrictPersonalization
@@ -152,6 +155,7 @@ const WebPushCreate = ({
152
155
  forwardedTags,
153
156
  selectedOfferDetails = [],
154
157
  eventContextTags = [],
158
+ waitEventContextTags = {},
155
159
  templateActions: templateActionsProps,
156
160
  Templates,
157
161
  restrictPersonalization = false,
@@ -232,6 +236,7 @@ const WebPushCreate = ({
232
236
  supportedTags: memoizedSupportedTags,
233
237
  injectedTags,
234
238
  eventContextTags,
239
+ waitEventContextTags,
235
240
  });
236
241
  const { tags, handleOnTagsContextChange, validationConfig } = tagState;
237
242
  const { weCrmAccounts } = Templates;
@@ -837,12 +842,13 @@ const WebPushCreate = ({
837
842
  injectedTags,
838
843
  selectedOfferDetails,
839
844
  eventContextTags,
845
+ waitEventContextTags,
840
846
  forwardedTags,
841
847
  restrictPersonalization,
842
848
  disabled: restrictPersonalization,
843
849
  disableTooltipMsg: restrictPersonalization ? formatMessage(messages.personalizationNotSupportedAnonymous) : undefined,
844
850
  }),
845
- [tags, injectedTags, selectedOfferDetails, eventContextTags, forwardedTags, restrictPersonalization, formatMessage],
851
+ [tags, injectedTags, selectedOfferDetails, eventContextTags, waitEventContextTags, forwardedTags, restrictPersonalization, formatMessage],
846
852
  );
847
853
 
848
854
  // Memoized TagList components with optimized props
@@ -1083,6 +1089,7 @@ WebPushCreate.propTypes = {
1083
1089
  forwardedTags: PropTypes.object,
1084
1090
  selectedOfferDetails: PropTypes.array,
1085
1091
  eventContextTags: PropTypes.array,
1092
+ waitEventContextTags: PropTypes.object,
1086
1093
  templateActions: PropTypes.object,
1087
1094
  restrictPersonalization: PropTypes.bool,
1088
1095
  };
@@ -1111,6 +1118,7 @@ WebPushCreate.defaultProps = {
1111
1118
  forwardedTags: {},
1112
1119
  selectedOfferDetails: [],
1113
1120
  eventContextTags: [],
1121
+ waitEventContextTags: {},
1114
1122
  templateActions: {},
1115
1123
  Templates: {},
1116
1124
  restrictPersonalization: false,
@@ -180,6 +180,7 @@ export const Whatsapp = (props) => {
180
180
  getFormData,
181
181
  selectedOfferDetails,
182
182
  eventContextTags,
183
+ waitEventContextTags = {},
183
184
  metaDataStatus = "",
184
185
  showTestAndPreviewSlidebox: propsShowTestAndPreviewSlidebox,
185
186
  handleTestAndPreview: propsHandleTestAndPreview,
@@ -950,6 +951,7 @@ const isAuthenticationTemplate = isEqual(templateCategory, WHATSAPP_CATEGORIES.a
950
951
  injectedTags={injectedTags || {}}
951
952
  selectedOfferDetails={selectedOfferDetails}
952
953
  eventContextTags={eventContextTags}
954
+ waitEventContextTags={waitEventContextTags}
953
955
  />
954
956
  )}
955
957
  </>
@@ -1951,6 +1953,7 @@ const isAuthenticationTemplate = isEqual(templateCategory, WHATSAPP_CATEGORIES.a
1951
1953
  injectedTags={injectedTags || {}}
1952
1954
  selectedOfferDetails={selectedOfferDetails}
1953
1955
  eventContextTags={eventContextTags}
1956
+ waitEventContextTags={waitEventContextTags}
1954
1957
  />
1955
1958
  )
1956
1959
  : !isAuthenticationTemplate && (
@@ -2757,6 +2760,7 @@ const isAuthenticationTemplate = isEqual(templateCategory, WHATSAPP_CATEGORIES.a
2757
2760
  injectedTags={injectedTags || {}}
2758
2761
  selectedOfferDetails={selectedOfferDetails}
2759
2762
  eventContextTags={eventContextTags}
2763
+ waitEventContextTags={waitEventContextTags}
2760
2764
  />
2761
2765
  )
2762
2766
  }
@@ -2875,6 +2879,7 @@ const isAuthenticationTemplate = isEqual(templateCategory, WHATSAPP_CATEGORIES.a
2875
2879
  injectedTags={injectedTags || {}}
2876
2880
  selectedOfferDetails={selectedOfferDetails}
2877
2881
  eventContextTags={eventContextTags}
2882
+ waitEventContextTags={waitEventContextTags}
2878
2883
  />
2879
2884
  )}
2880
2885
  {isBtnTypeQuickReply && (
@@ -258543,6 +258543,7 @@ Click {{3}} to unsubscribe'",
258543
258543
  onContextChange={[Function]}
258544
258544
  onTagSelect={[Function]}
258545
258545
  tags={Array []}
258546
+ waitEventContextTags={Object {}}
258546
258547
  />
258547
258548
  }
258548
258549
  title={
@@ -258595,6 +258596,7 @@ Click {{3}} to unsubscribe'",
258595
258596
  onContextChange={[Function]}
258596
258597
  onTagSelect={[Function]}
258597
258598
  tags={Array []}
258599
+ waitEventContextTags={Object {}}
258598
258600
  >
258599
258601
  <div
258600
258602
  className="tag-mock"
@@ -258612,6 +258614,7 @@ Click {{3}} to unsubscribe'",
258612
258614
  onContextChange={[Function]}
258613
258615
  onTagSelect={[Function]}
258614
258616
  tags={Array []}
258617
+ waitEventContextTags={Object {}}
258615
258618
  >
258616
258619
  TagList
258617
258620
  </div>
@@ -260161,6 +260164,7 @@ T&C'
260161
260164
  key=".2"
260162
260165
  tags={Array []}
260163
260166
  updateHandler={[Function]}
260167
+ waitEventContextTags={Object {}}
260164
260168
  >
260165
260169
  <CapWhatsappCTA
260166
260170
  ctaData={
@@ -262436,6 +262440,7 @@ new message content.",
262436
262440
  isEditFlow={true}
262437
262441
  tags={Array []}
262438
262442
  updateHandler={[Function]}
262443
+ waitEventContextTags={Object {}}
262439
262444
  >
262440
262445
  <CapRow
262441
262446
  align="middle"
@@ -311074,6 +311079,7 @@ Click {{3}} to unsubscribe'",
311074
311079
  onContextChange={[Function]}
311075
311080
  onTagSelect={[Function]}
311076
311081
  tags={Array []}
311082
+ waitEventContextTags={Object {}}
311077
311083
  />
311078
311084
  }
311079
311085
  title={
@@ -311126,6 +311132,7 @@ Click {{3}} to unsubscribe'",
311126
311132
  onContextChange={[Function]}
311127
311133
  onTagSelect={[Function]}
311128
311134
  tags={Array []}
311135
+ waitEventContextTags={Object {}}
311129
311136
  >
311130
311137
  <div
311131
311138
  className="tag-mock"
@@ -311143,6 +311150,7 @@ Click {{3}} to unsubscribe'",
311143
311150
  onContextChange={[Function]}
311144
311151
  onTagSelect={[Function]}
311145
311152
  tags={Array []}
311153
+ waitEventContextTags={Object {}}
311146
311154
  >
311147
311155
  TagList
311148
311156
  </div>
@@ -312692,6 +312700,7 @@ T&C'
312692
312700
  key=".2"
312693
312701
  tags={Array []}
312694
312702
  updateHandler={[Function]}
312703
+ waitEventContextTags={Object {}}
312695
312704
  >
312696
312705
  <CapWhatsappCTA
312697
312706
  ctaData={
@@ -314967,6 +314976,7 @@ new message content.",
314967
314976
  isEditFlow={true}
314968
314977
  tags={Array []}
314969
314978
  updateHandler={[Function]}
314979
+ waitEventContextTags={Object {}}
314970
314980
  >
314971
314981
  <CapRow
314972
314982
  align="middle"
@@ -337743,6 +337753,7 @@ Click {{unsubscribe}} to unsubscribe",
337743
337753
  onContextChange={[Function]}
337744
337754
  onTagSelect={[Function]}
337745
337755
  tags={Array []}
337756
+ waitEventContextTags={Object {}}
337746
337757
  />
337747
337758
  }
337748
337759
  title={
@@ -337795,6 +337806,7 @@ Click {{unsubscribe}} to unsubscribe",
337795
337806
  onContextChange={[Function]}
337796
337807
  onTagSelect={[Function]}
337797
337808
  tags={Array []}
337809
+ waitEventContextTags={Object {}}
337798
337810
  >
337799
337811
  <div
337800
337812
  className="tag-mock"
@@ -337812,6 +337824,7 @@ Click {{unsubscribe}} to unsubscribe",
337812
337824
  onContextChange={[Function]}
337813
337825
  onTagSelect={[Function]}
337814
337826
  tags={Array []}
337827
+ waitEventContextTags={Object {}}
337815
337828
  >
337816
337829
  TagList
337817
337830
  </div>
@@ -339224,6 +339237,7 @@ Click {{unsubscribe}} to unsubscribe",
339224
339237
  key=".2"
339225
339238
  tags={Array []}
339226
339239
  updateHandler={[Function]}
339240
+ waitEventContextTags={Object {}}
339227
339241
  >
339228
339242
  <CapWhatsappCTA
339229
339243
  ctaData={
@@ -341499,6 +341513,7 @@ new message content.",
341499
341513
  isEditFlow={true}
341500
341514
  tags={Array []}
341501
341515
  updateHandler={[Function]}
341516
+ waitEventContextTags={Object {}}
341502
341517
  >
341503
341518
  <CapRow
341504
341519
  align="middle"
@@ -363096,6 +363111,7 @@ new message content.",
363096
363111
  onContextChange={[Function]}
363097
363112
  onTagSelect={[Function]}
363098
363113
  tags={Array []}
363114
+ waitEventContextTags={Object {}}
363099
363115
  />
363100
363116
  }
363101
363117
  title={
@@ -363148,6 +363164,7 @@ new message content.",
363148
363164
  onContextChange={[Function]}
363149
363165
  onTagSelect={[Function]}
363150
363166
  tags={Array []}
363167
+ waitEventContextTags={Object {}}
363151
363168
  >
363152
363169
  <div
363153
363170
  className="tag-mock"
@@ -363165,6 +363182,7 @@ new message content.",
363165
363182
  onContextChange={[Function]}
363166
363183
  onTagSelect={[Function]}
363167
363184
  tags={Array []}
363185
+ waitEventContextTags={Object {}}
363168
363186
  >
363169
363187
  TagList
363170
363188
  </div>
@@ -364576,6 +364594,7 @@ new message content.",
364576
364594
  key=".2"
364577
364595
  tags={Array []}
364578
364596
  updateHandler={[Function]}
364597
+ waitEventContextTags={Object {}}
364579
364598
  >
364580
364599
  <CapWhatsappCTA
364581
364600
  ctaData={
@@ -366842,6 +366861,7 @@ new message content.",
366842
366861
  isEditFlow={true}
366843
366862
  tags={Array []}
366844
366863
  updateHandler={[Function]}
366864
+ waitEventContextTags={Object {}}
366845
366865
  >
366846
366866
  <CapRow
366847
366867
  align="middle"
@@ -76,6 +76,7 @@ export const Zalo = (props) => {
76
76
  selectedOfferDetails,
77
77
  hostName: zaloHostName = '',
78
78
  eventContextTags,
79
+ waitEventContextTags,
79
80
  metaDataStatus = "",
80
81
  // TestAndPreviewSlidebox props
81
82
  showTestAndPreviewSlidebox: propsShowTestAndPreviewSlidebox,
@@ -519,6 +520,7 @@ export const Zalo = (props) => {
519
520
  injectedTags={injectedTags || {}}
520
521
  selectedOfferDetails={selectedOfferDetails}
521
522
  eventContextTags={eventContextTags}
523
+ waitEventContextTags={waitEventContextTags}
522
524
  />
523
525
  }
524
526
  />