@capillarytech/creatives-library 8.0.87-alpha.0 → 8.0.87-alpha.10

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.
package/initialState.js CHANGED
@@ -50,4 +50,5 @@ export default {
50
50
  facebook: {
51
51
 
52
52
  },
53
+ metaTagsStatus: '',
53
54
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capillarytech/creatives-library",
3
3
  "author": "meharaj",
4
- "version": "8.0.87-alpha.0",
4
+ "version": "8.0.87-alpha.10",
5
5
  "description": "Capillary creatives ui",
6
6
  "main": "./index.js",
7
7
  "module": "./index.es.js",
package/services/api.js CHANGED
@@ -569,4 +569,10 @@ export const getLiquidTags = (content) => {
569
569
  return request(url, getAPICallObject("POST", { content }, false, true));
570
570
  };
571
571
 
572
+ export const createCentralCommsMetaId = (payload) => {
573
+ console.log("createCentralCommsMetaId: API call: ", { payload });
574
+ const url = `${API_ENDPOINT}/common/createCentralCommsMetaId/TRANSACTION`;
575
+ return request(url, getAPICallObject('POST', payload));
576
+ };
577
+
572
578
  export {request, getAPICallObject};
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Transforms SMS data to the required payload format
3
+ * @param {Object} smsData - Current SMS data
4
+ * @param {Object} options - Additional options (ouId, sourceEntityId, etc.)
5
+ * @returns {Object} - Transformed SMS payload
6
+ */
7
+ export const transformSmsPayload = (smsData, options = {}) => {
8
+ const { channel, loyaltyMetaData = {} } = options;
9
+
10
+ const {
11
+ actionId,
12
+ actionName,
13
+ ouId,
14
+ clientName,
15
+ module,
16
+ metaId,
17
+ setMetaId = () => {},
18
+ transformedMessageDetails = {}
19
+ } = loyaltyMetaData;
20
+
21
+ const { smsDeliverySettings } = transformedMessageDetails;
22
+
23
+ return {
24
+ ouId: ouId || -1,
25
+ sourceEntityId: actionId,
26
+ channel: "SMS",
27
+ module,
28
+ smsMessageContent: {
29
+ channel: "SMS",
30
+ message: smsData.messageBody || ""
31
+ },
32
+ smsDeliverySettings: smsDeliverySettings || {},
33
+ executionParams: {},
34
+ clientName: clientName || "EMF"
35
+ };
36
+ };
37
+
38
+ /**
39
+ * Transforms Email data to the required payload format
40
+ * @param {Object} emailData - Current email data
41
+ * @param {Object} options - Additional options (ouId, sourceEntityId, etc.)
42
+ * @returns {Object} - Transformed Email payload
43
+ */
44
+ export const transformEmailPayload = (emailData, options = {}) => {
45
+ const { loyaltyMetaData = {} } = options;
46
+
47
+ const {
48
+ actionId,
49
+ actionName,
50
+ ouId,
51
+ clientName,
52
+ module,
53
+ metaId,
54
+ setMetaId = () => {},
55
+ transformedMessageDetails = {}
56
+ } = loyaltyMetaData;
57
+
58
+ const { emailDeliverySettings = {} } = transformedMessageDetails;
59
+
60
+ return {
61
+ ouId: ouId || -1,
62
+ sourceEntityId: actionId,
63
+ channel: "EMAIL",
64
+ module,
65
+ emailMessageContent: {
66
+ channel: "EMAIL",
67
+ messageBody: emailData.emailBody || "",
68
+ messageSubject: emailData.emailSubject || ""
69
+ },
70
+ emailDeliverySettings: emailDeliverySettings || {},
71
+ executionParams: {},
72
+ clientName: clientName || "EMF"
73
+ };
74
+ };
75
+
76
+ /**
77
+ * Transforms Mobile Push data to the required payload format
78
+ * @param {Object} mpushData - Current mobile push data
79
+ * @param {Object} options - Additional options (ouId, sourceEntityId, etc.)
80
+ * @returns {Object} - Transformed Mobile Push payload
81
+ */
82
+ export const transformMpushPayload = (mpushData, options = {}) => {
83
+ const { loyaltyMetaData = {} } = options;
84
+
85
+ const {
86
+ actionId,
87
+ actionName,
88
+ ouId,
89
+ clientName,
90
+ module,
91
+ metaId,
92
+ setMetaId = () => {},
93
+ transformedMessageDetails = {}
94
+ } = loyaltyMetaData;
95
+
96
+ const { mpushDeliverySettings = {} } = transformedMessageDetails;
97
+
98
+ // Set default values for androidContent if not provided
99
+ const androidContent = mpushData.androidContent || {};
100
+
101
+ // Set default values for iosContent if needed
102
+ const iosContent = mpushData.iosContent || {
103
+ type: androidContent.type || "TEXT",
104
+ deviceType: "IOS",
105
+ title: mpushData.messageSubject || "",
106
+ message: ""
107
+ };
108
+
109
+ return {
110
+ channel: "PUSH",
111
+ ouId: ouId || -1,
112
+ sourceEntityId: actionId,
113
+ clientName: clientName || "VENENO",
114
+ module,
115
+ mpushMessageContent: {
116
+ channel: "PUSH",
117
+ messageSubject: mpushData.messageSubject || "",
118
+ androidContent: {
119
+ type: androidContent.type || "TEXT",
120
+ deviceType: "ANDROID",
121
+ title: androidContent.title || "",
122
+ message: androidContent.message || "",
123
+ cta: {
124
+ type: "EXTERNAL_URL",
125
+ actionText: null,
126
+ templateCtaId: null,
127
+ actionLink: androidContent.cta?.actionLink || ""
128
+ },
129
+ expandableDetails: {
130
+ style: androidContent.expandableDetails?.style || "BIG_TEXT",
131
+ message: androidContent.expandableDetails?.message || "",
132
+ ctas: androidContent.expandableDetails?.ctas || [],
133
+ image: androidContent.expandableDetails?.image || "",
134
+ categoryId: androidContent.expandableDetails?.categoryId || ""
135
+ },
136
+ customProperties: androidContent.custom || {}
137
+ },
138
+ iosContent: {
139
+ type: iosContent.type || "TEXT",
140
+ deviceType: "IOS",
141
+ title: iosContent.title || "",
142
+ message: iosContent.message || "",
143
+ cta: {
144
+ type: "EXTERNAL_URL",
145
+ actionText: null,
146
+ templateCtaId: null,
147
+ actionLink: iosContent.cta?.actionLink || ""
148
+ },
149
+ expandableDetails: {
150
+ style: iosContent.expandableDetails?.style || "BIG_TEXT",
151
+ message: iosContent.expandableDetails?.message || "",
152
+ ctas: iosContent.expandableDetails?.ctas || [],
153
+ image: iosContent.expandableDetails?.image || "",
154
+ categoryId: iosContent.expandableDetails?.categoryId || ""
155
+ },
156
+ customProperties: iosContent.custom || {}
157
+ },
158
+ accountId: mpushData.accountId || 0
159
+ },
160
+ mpushDeliverySettings: mpushDeliverySettings || {
161
+ additionalSettings: {
162
+ useTinyUrl: false,
163
+ encryptUrl: false,
164
+ linkTrackingEnabled: false,
165
+ userSubscriptionDisabled: false
166
+ },
167
+ channelSettings: {
168
+ channel: "PUSH",
169
+ domainGatewayMapId: options.domainGatewayMapId || 1
170
+ }
171
+ }
172
+ };
173
+ };
174
+
175
+ /**
176
+ * General transformer function that handles different channel types
177
+ * @param {Object} data - The input data
178
+ * @param {Object} options - Additional options for transformation
179
+ * @returns {Object} - Transformed payload based on channel type
180
+ */
181
+ export const transformChannelPayload = (data, options = {}) => {
182
+ const channel = data.channel?.toUpperCase();
183
+
184
+ switch (channel) {
185
+ case "SMS":
186
+ return transformSmsPayload(data, options);
187
+ case "MOBILEPUSH":
188
+ return transformMpushPayload(data, options);
189
+ case "EMAIL":
190
+ return transformEmailPayload(data, options);
191
+ default:
192
+ return data; // Return unchanged for unsupported channels
193
+ }
194
+ };
@@ -44,7 +44,7 @@ import EDMEditor from "../Edmeditor";
44
44
  import BeeEditor from '../../v2Containers/BeeEditor';
45
45
  import CustomPopOver from '../CustomPopOver';
46
46
  import messages from './messages';
47
- import { makeSelectMetaEntities, selectCurrentOrgDetails, selectLiquidStateDetails } from "../../v2Containers/Cap/selectors";
47
+ import { makeSelectMetaEntities, selectCurrentOrgDetails, selectLiquidStateDetails, selectMetaTagsStatus } from "../../v2Containers/Cap/selectors";
48
48
  import * as actions from "../../v2Containers/Cap/actions";
49
49
  import './_formBuilder.scss';
50
50
  import {updateCharCount, checkUnicode} from "../../utils/smsCharCountV2";
@@ -59,6 +59,7 @@ import { CUSTOMER_BARCODE_TAG , COPY_OF, ENTRY_TRIGGER_TAG_REGEX} from '../../co
59
59
  import { hasLiquidSupportFeature, isEmailUnsubscribeTagMandatory } from '../../utils/common';
60
60
  import { isUrl } from '../../v2Containers/Line/Container/Wrapper/utils';
61
61
  import { bindActionCreators } from 'redux';
62
+ import { transformFormDataToAPIPayload } from './utils';
62
63
 
63
64
  const TabPane = Tabs.TabPane;
64
65
  const {Column} = Table;
@@ -1064,6 +1065,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
1064
1065
  };
1065
1066
  handleLiquidTemplateSubmit =(templateContent) => {
1066
1067
  if(templateContent){this.setState((prevState) => {
1068
+ console.log('**** handleLiquidTemplateSubmit: ', { prevState, templateContent });
1067
1069
  return {
1068
1070
  formData: {
1069
1071
  ...prevState?.formData,
@@ -1082,6 +1084,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
1082
1084
  }
1083
1085
  });}
1084
1086
  }
1087
+
1085
1088
  saveForm(saveForm) {
1086
1089
  if (this.props.isNewVersionFlow && !saveForm) {
1087
1090
  this.props.getValidationData();
@@ -3793,7 +3796,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3793
3796
 
3794
3797
 
3795
3798
  return (
3796
- <CapSpin spinning={Boolean(this.liquidFlow && this.props.liquidExtractionInProgress)} tip={this.props.intl.formatMessage(messages.liquidSpinText)} >
3799
+ <CapSpin spinning={Boolean((this.liquidFlow && this.props.liquidExtractionInProgress) || this.props.metaIdStatus === 'REQUEST')} tip={this.props.intl.formatMessage(messages.liquidSpinText)} >
3797
3800
  <CapRow>
3798
3801
  {this.props.schema && this.renderForm()}
3799
3802
  <SlideBox
@@ -3827,6 +3830,7 @@ FormBuilder.defaultProps = {
3827
3830
  isNewVersionFlow: false,
3828
3831
  userLocale: localStorage.getItem('jlocale') || 'en',
3829
3832
  showLiquidErrorInFooter: () => {},
3833
+ metaIdStatus: false,
3830
3834
  };
3831
3835
 
3832
3836
  FormBuilder.propTypes = {
@@ -3875,11 +3879,13 @@ FormBuilder.propTypes = {
3875
3879
  currentOrgDetails: PropTypes.object,
3876
3880
  liquidExtractionInProgress: PropTypes.bool,
3877
3881
  showLiquidErrorInFooter: PropTypes.func,
3882
+ loyaltyMetaData: PropTypes.object
3878
3883
  };
3879
3884
 
3880
3885
  const mapStateToProps = createStructuredSelector({
3881
3886
  currentOrgDetails: selectCurrentOrgDetails(),
3882
3887
  liquidExtractionInProgress: selectLiquidStateDetails(),
3888
+ metaIdStatus: selectMetaTagsStatus(),
3883
3889
  metaEntities: makeSelectMetaEntities(),
3884
3890
  });
3885
3891
 
@@ -0,0 +1,152 @@
1
+ import {
2
+ SMS,
3
+ MOBILE_PUSH,
4
+ EMAIL
5
+ } from "../../v2Containers/CreativesContainer/constants";
6
+
7
+ /**
8
+ * Transform form data to API payload format
9
+ * @param {object} formData - The form data from the UI
10
+ * @param {string} channel - The communication channel (EMAIL, SMS, WECHAT, MOBILE_PUSH)
11
+ * @param {object} params - Additional parameters like sourceEntityId, ouId, etc.
12
+ * @returns {object} - The formatted API payload
13
+ */
14
+ export const transformFormDataToAPIPayload = (
15
+ formData,
16
+ loyaltyMetaData = {}
17
+ ) => {
18
+ console.log("**** # transformDataToAPIPyaload: ", {
19
+ formData,
20
+ loyaltyMetaData
21
+ });
22
+ const {
23
+ actionId,
24
+ actionName,
25
+ ouId,
26
+ clientName,
27
+ module,
28
+ metaId,
29
+ setMetaId = () => {},
30
+ channel,
31
+ transformedMessageDetails
32
+ } = loyaltyMetaData;
33
+
34
+ const { emailDeliverySettings } = transformedMessageDetails;
35
+ const upperCaseChannel = channel.toUpperCase();
36
+
37
+ // Base response structure
38
+ const response = {
39
+ ouId: ouId || -1,
40
+ sourceEntityId: actionId,
41
+ channel: upperCaseChannel || this.props.schema.channel.toUpperCase(),
42
+ module,
43
+ executionParams: {},
44
+ clientName: clientName || "EMF"
45
+ };
46
+
47
+ switch (upperCaseChannel) {
48
+ case EMAIL: {
49
+ const subject = formData["template-subject"] || "";
50
+ const htmlContent = formData?.base?.en?.["template-content"] || "";
51
+
52
+ return {
53
+ ...response,
54
+ emailDeliverySettings: emailDeliverySettings || {},
55
+ emailMessageContent: {
56
+ channel: EMAIL,
57
+ messageBody: htmlContent,
58
+ messageSubject: subject
59
+ }
60
+ };
61
+ }
62
+
63
+ case SMS: {
64
+ // Extract SMS content from formData
65
+ const smsContent = formData["sms-editor"] || "";
66
+ const templateId = formData.template_id || "";
67
+ const templateName = formData.template_name || "";
68
+ const header = formData.header || "";
69
+ const varMapped = formData["var-mapped"] || {};
70
+
71
+ return {
72
+ ...response,
73
+ smsDeliverySettings: {
74
+ additionalSettings: {
75
+ skipRateLimit: false
76
+ },
77
+ channelSettings: {
78
+ channel: SMS,
79
+ senderId: header || ""
80
+ }
81
+ },
82
+ smsMessageContent: {
83
+ channel: SMS,
84
+ messageBody: smsContent,
85
+ templateId,
86
+ templateName,
87
+ varMapped
88
+ }
89
+ };
90
+ }
91
+
92
+ case MOBILE_PUSH: {
93
+ // Extract Mobile Push content
94
+ const androidContent = formData.ANDROID || {};
95
+ const iosContent = formData.IOS || {};
96
+
97
+ return {
98
+ ...response,
99
+ mobilePushDeliverySettings: {
100
+ additionalSettings: {
101
+ skipRateLimit: false
102
+ },
103
+ channelSettings: {
104
+ channel: MOBILE_PUSH
105
+ }
106
+ },
107
+ mobilePushMessageContent: {
108
+ channel: MOBILE_PUSH,
109
+ androidContent: {
110
+ title: androidContent.title || "",
111
+ body: androidContent.message || "",
112
+ type: androidContent.type || "TEXT",
113
+ custom: androidContent.custom || {}
114
+ },
115
+ iosContent: {
116
+ title: iosContent.title || "",
117
+ body: iosContent.message || "",
118
+ type: iosContent.type || "TEXT",
119
+ custom: iosContent.custom || {}
120
+ }
121
+ }
122
+ };
123
+ }
124
+
125
+ // case WECHAT: {
126
+ // // Extract WeChat content
127
+ // const wechatContent = formData.content || {};
128
+
129
+ // return {
130
+ // ...response,
131
+ // wechatDeliverySettings: {
132
+ // additionalSettings: {
133
+ // skipRateLimit: false
134
+ // },
135
+ // channelSettings: {
136
+ // channel: WECHAT
137
+ // }
138
+ // },
139
+ // wechatMessageContent: {
140
+ // channel: WECHAT,
141
+ // messageBody: wechatContent.body || "",
142
+ // templateId: wechatContent.templateId || "",
143
+ // templateName: wechatContent.templateName || "",
144
+ // varMapped: wechatContent.varMapped || {}
145
+ // }
146
+ // };
147
+ // }
148
+
149
+ default:
150
+ return response;
151
+ }
152
+ };
@@ -85,3 +85,12 @@ export const getLiquidTags = (data,callback) => {
85
85
  callback,
86
86
  };
87
87
  };
88
+
89
+ export const createCentralCommsMetaId = (data, callback) => {
90
+ console.log("createCentralCommsMetaId action", data, callback);
91
+ return {
92
+ type: types.CREATE_CENTRAL_COMMS_META_ID_REQUEST,
93
+ data,
94
+ callback,
95
+ };
96
+ };
@@ -63,3 +63,7 @@ export const DEFAULT_MODULE = 'creatives';
63
63
  export const GET_LIQUID_TAGS_FAILURE = 'cap/GET_LIQUID_TAGS_FAILURE_V2';
64
64
  export const GET_LIQUID_TAGS_REQUEST = 'cap/GET_LIQUID_TAGS_REQUEST_V2';
65
65
  export const GET_LIQUID_TAGS_SUCCESS = 'cap/GET_LIQUID_TAGS_SUCCESS_V2';
66
+
67
+ export const CREATE_CENTRAL_COMMS_META_ID_FAILURE = 'cap/CREATE_CENTRAL_COMMS_META_ID_FAILURE_V2';
68
+ export const CREATE_CENTRAL_COMMS_META_ID_REQUEST = 'cap/CREATE_CENTRAL_COMMS_META_ID_REQUEST_V2';
69
+ export const CREATE_CENTRAL_COMMS_META_ID_SUCCESS = 'cap/CREATE_CENTRAL_COMMS_META_ID_SUCCESS_V2';
@@ -199,6 +199,12 @@ function capReducer(state = fromJS(initialState.cap), action) {
199
199
  return state
200
200
  .set('demoVideoAndLinkJSONStatus', types.FAILURE)
201
201
  .set('demoVideoAndLinkJSONError', action?.error);
202
+ case types.CREATE_CENTRAL_COMMS_META_ID_REQUEST:
203
+ return state.set('metaTagsStatus', types.REQUEST);
204
+ case types.CREATE_CENTRAL_COMMS_META_ID_SUCCESS:
205
+ return state.set('metaTagsStatus', types.SUCCESS);
206
+ case types.CREATE_CENTRAL_COMMS_META_ID_FAILURE:
207
+ return state.set('metaTagsStatus', types.FAILURE);
202
208
  default:
203
209
  return state;
204
210
  }
@@ -186,6 +186,24 @@ const getTopbarData = (parentModule) => {
186
186
  }
187
187
  };
188
188
 
189
+ export function* createCentralCommsMetaId(action) {
190
+ try {
191
+ console.log("createCentralCommsMetaId saga", action);
192
+ const result = yield call(Api.createCentralCommsMetaId, action?.data);
193
+ console.log("createCentralCommsMetaId saga result", result);
194
+ if (result) {
195
+ if (action?.callback) {
196
+ yield call(action?.callback, result);
197
+ }
198
+ yield put({ type: types.CREATE_CENTRAL_COMMS_META_ID_SUCCESS, result });
199
+ } else {
200
+ yield put({ type: types.CREATE_CENTRAL_COMMS_META_ID_FAILURE });
201
+ }
202
+ } catch (error) {
203
+ yield put({ type: types.CREATE_CENTRAL_COMMS_META_ID_FAILURE, error });
204
+ }
205
+ }
206
+
189
207
  function* getTopbarMenuData(params) {
190
208
  const {parentModule} = params;
191
209
  try {
@@ -225,6 +243,10 @@ export function* watchLiquidEntity() {
225
243
  yield takeLatest(types.GET_LIQUID_TAGS_REQUEST, getLiquidTags);
226
244
  }
227
245
 
246
+ export function* watchMetaId() {
247
+ yield takeLatest(types.CREATE_CENTRAL_COMMS_META_ID_REQUEST, createCentralCommsMetaId);
248
+ }
249
+
228
250
  function* watchForOrgChange() {
229
251
  yield takeLatest(types.SWITCH_ORG_REQUEST, switchOrg);
230
252
  }
@@ -257,6 +279,7 @@ export default [
257
279
  watchGetTopbarMenuData,
258
280
  watchForGetVideosConfig,
259
281
  watchLiquidEntity,
282
+ watchMetaId,
260
283
  ];
261
284
 
262
285
 
@@ -268,6 +291,7 @@ export function* capSagaForFetchSchemaForEntity() {
268
291
  export function* capSagaLiquidEntity() {
269
292
  yield all([
270
293
  watchLiquidEntity(),
294
+ watchMetaId(),
271
295
  ]);
272
296
  };
273
297
 
@@ -279,5 +303,6 @@ export function* v2CapSagas() {
279
303
  watchForFetchUserInfo(),
280
304
  watchGetTopbarMenuData(),
281
305
  watchForGetVideosConfig(),
306
+ watchMetaId(),
282
307
  ]);
283
308
  }
@@ -72,6 +72,11 @@ const selectLiquidStateDetails = () => createSelector(
72
72
  (globalState) => globalState.get('fetchingLiquidTags')
73
73
  );
74
74
 
75
+ const selectMetaTagsStatus = () => createSelector(
76
+ selectCapDomain,
77
+ (globalState) => globalState.get('metaTagsStatus')
78
+ );
79
+
75
80
  const makeSelectFetchingSchema = () => createSelector(
76
81
  selectCapDomain,
77
82
  (globalState) => globalState.get('fetchingSchema')
@@ -113,4 +118,5 @@ export {
113
118
  makeSelectFetchingSchemaError,
114
119
  makeSelectDemoVideoAndLink,
115
120
  selectLiquidStateDetails,
121
+ selectMetaTagsStatus,
116
122
  };
@@ -158,6 +158,7 @@ export function SlideBoxContent(props) {
158
158
  hostName = '',
159
159
  eventContextTags,
160
160
  isLoyaltyModule,
161
+ loyaltyMetaData = {},
161
162
  } = props;
162
163
  const type = (messageDetails.type || '').toLowerCase(); // type is context in get tags values : outbound | dvs | referral | loyalty | coupons
163
164
  const query = { type: !isFullMode && 'embedded', module: isFullMode ? 'default' : 'library', isEditFromCampaigns: (templateData || {}).isEditFromCampaigns};
@@ -514,6 +515,8 @@ export function SlideBoxContent(props) {
514
515
  onCreateComplete={onCreateComplete}
515
516
  smsRegister={smsRegister}
516
517
  eventContextTags={eventContextTags}
518
+ loyaltyMetaData={loyaltyMetaData}
519
+ messageDetails={messageDetails}
517
520
  />
518
521
  )}
519
522
  {isEditFTP && (
@@ -582,6 +585,8 @@ export function SlideBoxContent(props) {
582
585
  smsRegister={smsRegister}
583
586
  onShowTemplates={onShowTemplates}
584
587
  eventContextTags={eventContextTags}
588
+ loyaltyMetaData={loyaltyMetaData}
589
+ messageDetails={messageDetails}
585
590
  />
586
591
  )}
587
592
 
@@ -615,6 +620,8 @@ export function SlideBoxContent(props) {
615
620
  showLiquidErrorInFooter={showLiquidErrorInFooter}
616
621
  eventContextTags={eventContextTags}
617
622
  isLoyaltyModule={isLoyaltyModule}
623
+ loyaltyMetaData={loyaltyMetaData}
624
+ messageDetails={messageDetails}
618
625
  />
619
626
  )}
620
627
  {(isEditEmailWithId || isEmailEditWithContent) && (
@@ -645,6 +652,8 @@ export function SlideBoxContent(props) {
645
652
  showLiquidErrorInFooter={showLiquidErrorInFooter}
646
653
  eventContextTags={eventContextTags}
647
654
  isLoyaltyModule={isLoyaltyModule}
655
+ loyaltyMetaData={loyaltyMetaData}
656
+ messageDetails={messageDetails}
648
657
  />
649
658
  )}
650
659
  {isEditMPush &&
@@ -671,6 +680,8 @@ export function SlideBoxContent(props) {
671
680
  hideTestAndPreviewBtn={hideTestAndPreviewBtn}
672
681
  creativesMode={creativesMode}
673
682
  eventContextTags={eventContextTags}
683
+ loyaltyMetaData={loyaltyMetaData}
684
+ messageDetails={messageDetails}
674
685
  />
675
686
  }
676
687
  {isCreateMPush &&
@@ -700,6 +711,8 @@ export function SlideBoxContent(props) {
700
711
  hideTestAndPreviewBtn={hideTestAndPreviewBtn}
701
712
  onTestContentClicked={onTestContentClicked}
702
713
  eventContextTags={eventContextTags}
714
+ loyaltyMetaData={loyaltyMetaData}
715
+ messageDetails={messageDetails}
703
716
  />
704
717
  }
705
718
  {