@capillarytech/creatives-library 7.10.39 → 7.10.41

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 (38) hide show
  1. package/containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +0 -2
  2. package/containers/Email/index.js +2 -3
  3. package/index.js +6 -0
  4. package/package.json +1 -1
  5. package/routes.js +5 -0
  6. package/services/api.js +6 -1
  7. package/v2Components/TemplatePreview/_templatePreview.scss +7 -0
  8. package/v2Components/TemplatePreview/assets/images/whatsapp_mobile_android.svg +2041 -0
  9. package/v2Components/TemplatePreview/index.js +57 -3
  10. package/v2Components/TemplatePreview/messages.js +8 -0
  11. package/v2Containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +0 -2
  12. package/v2Containers/Assets/images/whatsappIllustration.png +0 -0
  13. package/v2Containers/CreativesContainer/SlideBoxContent.js +31 -2
  14. package/v2Containers/CreativesContainer/SlideBoxHeader.js +31 -3
  15. package/v2Containers/CreativesContainer/constants.js +1 -0
  16. package/v2Containers/CreativesContainer/messages.js +4 -0
  17. package/v2Containers/Email/index.js +1 -3
  18. package/v2Containers/Line/Container/index.js +1 -1
  19. package/v2Containers/Templates/_templates.scss +43 -0
  20. package/v2Containers/Templates/actions.js +18 -10
  21. package/v2Containers/Templates/constants.js +3 -1
  22. package/v2Containers/Templates/index.js +296 -44
  23. package/v2Containers/Templates/messages.js +32 -0
  24. package/v2Containers/Templates/reducer.js +3 -1
  25. package/v2Containers/TemplatesV2/index.js +2 -0
  26. package/v2Containers/TemplatesV2/messages.js +4 -0
  27. package/v2Containers/Whatsapp/actions.js +34 -0
  28. package/v2Containers/Whatsapp/constants.js +125 -0
  29. package/v2Containers/Whatsapp/index.js +831 -0
  30. package/v2Containers/Whatsapp/index.scss +56 -0
  31. package/v2Containers/Whatsapp/messages.js +221 -0
  32. package/v2Containers/Whatsapp/reducer.js +54 -0
  33. package/v2Containers/Whatsapp/sagas.js +77 -0
  34. package/v2Containers/Whatsapp/selectors.js +12 -0
  35. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +120831 -0
  36. package/v2Containers/Whatsapp/tests/index.test.js +132 -0
  37. package/v2Containers/Whatsapp/tests/mockData.js +10 -0
  38. package/v2Containers/Whatsapp/utils.js +106 -0
@@ -14,13 +14,17 @@ import {CapColumn, CapRow, CapHeading, CapIcon, CapButton, CapImage} from '@capi
14
14
  import './_templatePreview.scss';
15
15
  import {updateCharCount} from '../../utils/smsCharCountV2';
16
16
  import messages from './messages';
17
- import { WECHAT } from '../../v2Containers/CreativesContainer/constants';
17
+ import {
18
+ WECHAT,
19
+ WHATSAPP,
20
+ } from '../../v2Containers/CreativesContainer/constants';
18
21
  import Carousel from '../Carousel';
19
22
  import { VIBER, FACEBOOK } from '../../v2Containers/App/constants';
20
23
  const wechatBodyNew = require('./assets/images/wechat_mobile_android.svg');
21
24
  const smsMobileAndroid = require('./assets/images/sms_mobile_android.svg');
22
25
  const lineMobileAndroid = require('../../assets/line.png');
23
26
  const viberMobileAndroid = require('./assets/images/viberMobile.svg');
27
+ const whatsappMobileAndroid = require('./assets/images/whatsapp_mobile_android.svg');
24
28
 
25
29
  const lineImgPlaceholder = require('../../assets/line-image-placeholder.svg');
26
30
  const lineStickerPlaceholder = require('../../assets/smiley-placeholder.svg');
@@ -28,9 +32,10 @@ const lineVideoPlaceholder = require('../../assets/rich-video-placeholder.svg');
28
32
  const androidPushMessagePhone = require('./assets/images/androidPushMessage.svg');
29
33
  const iPhonePushMessagePhone = require('./assets/images/iPhonePushMessage.svg');
30
34
 
31
- import { CAP_COLOR_03, CAP_WHITE, FONT_COLOR_01, CAP_G08, CAP_G06, CAP_G15, CAP_PURPLE01, CAP_G16 } from '@capillarytech/cap-ui-library/styled/variables';
35
+ import { CAP_COLOR_03, CAP_WHITE, FONT_COLOR_01, CAP_G08, CAP_G06, CAP_G15, CAP_PURPLE01, CAP_G16, CAP_SPACE_08 } from '@capillarytech/cap-ui-library/styled/variables';
32
36
  import { TEMPLATE, IMAGE_CAROUSEL, IMAGE, STICKER, TEXT, IMAGE_MAP, VIDEO } from '../../v2Containers/Line/Container/constants';
33
37
  import CapFacebookPreview from '../../v2Containers/CapFacebookPreview';
38
+ import { getWhatsappStatusContainer } from '../../v2Containers/Whatsapp/utils';
34
39
 
35
40
  class TemplatePreview extends React.Component { // eslint-disable-line react/prefer-stateless-function
36
41
  onPreviewContentClicked = (channel) => {
@@ -132,7 +137,8 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
132
137
 
133
138
  render() {
134
139
  let content = channel && channel.toLowerCase() === 'sms' ? [this.props.content] : this.props.content;
135
- const { channel, showTestAndPreviewIcon, module, viberBrandName, viberAccountName } = this.props;
140
+ const { channel, showTestAndPreviewIcon, module, viberBrandName, viberAccountName, whatsappAccountName, intl, templateData } = this.props;
141
+ const { formatMessage } = intl;
136
142
  const { buttonText, imageURL, messageContent: viberMessageContent } = content || {};
137
143
  let smsDetails = {};
138
144
  // let smsText = '';
@@ -187,6 +193,13 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
187
193
  'background-color': CAP_G15,
188
194
  'width': '81%',
189
195
  };
196
+ const whatsappSectionStyle = {
197
+ "padding": '3.5px 0 0',
198
+ 'border-radius': '6px',
199
+ 'background-color': CAP_G15,
200
+ 'width': '88%',
201
+ 'left': '10%',
202
+ };
190
203
  const getVideoContent = ({
191
204
  video,
192
205
  actionUrl,
@@ -271,6 +284,17 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
271
284
  {smsDetails.optoutUrlPresent && <CapHeading type="h6">
272
285
  <FormattedMessage {...messages.optoutCharactersTotal} values={{optoutUrlLength: smsDetails.optouturlLength}} />
273
286
  </CapHeading>}
287
+ {channel && channel.toLowerCase() === WHATSAPP.toLowerCase() ? (
288
+ <>
289
+ {getWhatsappStatusContainer(templateData)}
290
+ <CapHeading type="h3" style={{ marginTop: '12px' }}>
291
+ <FormattedMessage {...messages.whatsappCharactersTotal} values={{charCount: content?.templateMsg?.length}} />
292
+ </CapHeading>
293
+ <CapHeading type="h6">
294
+ <FormattedMessage {...messages.whatsappUnsubscribeLength} />
295
+ </CapHeading>
296
+ </>
297
+ ) : null}
274
298
  </CapColumn>}
275
299
  <CapColumn span={this.props.showCount ? 8 : 24}>
276
300
  {showTestAndPreview && (
@@ -638,6 +662,36 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
638
662
  </div>
639
663
  ) : ''
640
664
  }
665
+ {channel && channel?.toUpperCase() === WHATSAPP ? (
666
+ <div className="shell-v2 align-center" id="sms-preview">
667
+ <CapImage
668
+ className="preview-image"
669
+ src={whatsappMobileAndroid}
670
+ alt={formatMessage(messages.previewGenerated)}
671
+ />
672
+ <div className='whatsapp-brand-name'>{whatsappAccountName || ""}</div>
673
+ <div
674
+ className="msgContainer"
675
+ style={{
676
+ maxHeight: 292,
677
+ marginLeft: 28,
678
+ }}
679
+ >
680
+ <div
681
+ className="message-pop align-left"
682
+ style={whatsappSectionStyle}>
683
+ <p
684
+ style={{
685
+ "color": CAP_G16,
686
+ "margin": '1.5px 6px 1px 7px',
687
+ }}>{content?.templateMsg || ''}
688
+ </p>
689
+ <div style={{ paddingBottom: CAP_SPACE_08 }}></div>
690
+ </div>
691
+ </div>
692
+ </div>
693
+ ) : ('')
694
+ }
641
695
  {channel && channel.toLowerCase() === FACEBOOK && (
642
696
  <div style={{position: 'absolute', left: '80%'}} id="facebook-preview">
643
697
  <CapFacebookPreview
@@ -22,10 +22,18 @@ export default defineMessages({
22
22
  id: 'creatives.componentsV2.TemplatePreview.charactersTotal',
23
23
  defaultMessage: "{smsCount} SMS ({charCount} characters)",
24
24
  },
25
+ whatsappCharactersTotal: {
26
+ id: 'creatives.componentsV2.TemplatePreview.whatsappCharactersTotal',
27
+ defaultMessage: "{charCount} characters",
28
+ },
25
29
  optoutCharactersTotal: {
26
30
  id: 'app.components.TemplatePreview.optoutCharactersTotal',
27
31
  defaultMessage: "Includes optout tag ({optoutUrlLength} characters)",
28
32
  },
33
+ whatsappUnsubscribeLength: {
34
+ id: 'app.components.TemplatePreview.whatsappUnsubscribeLength',
35
+ defaultMessage: "Includes 36 characters of (Click {{unsubscribe}} to unsubscribe)",
36
+ },
29
37
  smsFormatType: {
30
38
  id: 'creatives.componentsV2.TemplatePreview.smsFormatType',
31
39
  defaultMessage: 'Message has unicode characters',
@@ -1,5 +1,3 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
1
  exports[`galleryReducer Initial State should match snapshot returns the initial state 1`] = `
4
2
  Object {
5
3
  "assetList": Array [],
@@ -21,6 +21,8 @@ import * as constants from './constants';
21
21
  import LineContainer from '../Line/Container';
22
22
  import FTP from '../FTP';
23
23
  import Viber from '../Viber';
24
+ import Whatsapp from '../Whatsapp';
25
+ import { getWhatsappContent } from '../Whatsapp/utils';
24
26
  import * as commonUtil from '../../utils/common';
25
27
  const CreativesWrapper = styled.div`
26
28
  .ant-popover,
@@ -172,7 +174,7 @@ function SlideBoxContent(props) {
172
174
 
173
175
  const isCreateSms = slidBoxContent === 'createTemplate' && channel === constants.SMS;
174
176
  const isCreateFacebook = slidBoxContent === 'createTemplate' && channel === constants.FACEBOOK;
175
-
177
+ const isCreateWhatsapp = slidBoxContent === 'createTemplate' && channel === constants.WHATSAPP;
176
178
  const isCreateMPush = slidBoxContent === 'createTemplate' && channel === constants.MOBILE_PUSH;
177
179
  const isCreateCallTask = slidBoxContent === 'createTemplate' && channel === constants.CALL_TASK;
178
180
  let isEditSms = false;
@@ -185,6 +187,7 @@ function SlideBoxContent(props) {
185
187
  let isEditMPush = false;
186
188
  let isEditFacebook = false;
187
189
  let isEditFTP = false;
190
+ let isEditWhatsapp = false;
188
191
  const isEmailCreate = slidBoxContent === 'createTemplate' && channel === constants.EMAIL;
189
192
  if (templateData && channel) {
190
193
  channel = templateData.type;// for edit mode with template data
@@ -194,7 +197,8 @@ function SlideBoxContent(props) {
194
197
  isEditEmailWithId = slidBoxContent === 'editTemplate' && channel === constants.EMAIL && templateData._id;
195
198
  isEmailEditWithContent = slidBoxContent === 'editTemplate' && channel === constants.EMAIL && !templateData._id;
196
199
  isEditFacebook = slidBoxContent === 'editTemplate' && channel === constants.FACEBOOK;
197
- isPreview = slidBoxContent === 'preview' && (channel === constants.SMS || channel === constants.LINE || channel === constants.VIBER || channel === constants.FACEBOOK);
200
+ isEditWhatsapp = slidBoxContent === 'editTemplate' && channel === constants.WHATSAPP;
201
+ isPreview = slidBoxContent === 'preview' && (channel === constants.SMS || channel === constants.LINE || channel === constants.VIBER || channel === constants.FACEBOOK || channel === constants.WHATSAPP);
198
202
  isEmailPreview = slidBoxContent === 'preview' && channel === constants.EMAIL;
199
203
  isMpushPreview = slidBoxContent === 'preview' && channel === constants.MOBILE_PUSH;
200
204
  isEditFTP = slidBoxContent === 'editTemplate' && [constants.NO_COMMUNICATION, constants.FTP].includes(channel);
@@ -321,6 +325,11 @@ function SlideBoxContent(props) {
321
325
  };
322
326
  return fbContent;
323
327
  }
328
+ case constants.WHATSAPP: {
329
+ return {
330
+ templateMsg: getWhatsappContent(templateDataObject),
331
+ };
332
+ }
324
333
  default:
325
334
  return get(templateDataObject, `versions.base.content`);
326
335
  }
@@ -362,6 +371,7 @@ function SlideBoxContent(props) {
362
371
  content={getChannelPreviewContent(templateData)}
363
372
  viberBrandName={selectedAccount || ""}
364
373
  viberAccountName={(selectedAccount || "")[0]}
374
+ whatsappAccountName={selectedAccount}
365
375
  unicodeEnabled={get(templateData, `versions.base['unicode-validity']`)}
366
376
  channel={(templateData.type || '').toLowerCase()}
367
377
  charCounterEnabled={channel === constants.SMS}
@@ -678,6 +688,25 @@ function SlideBoxContent(props) {
678
688
  templateData={templateData}
679
689
  createNew/> }
680
690
 
691
+ {isCreateWhatsapp && (<Whatsapp
692
+ isFullMode={isFullMode}
693
+ onCreateComplete={onCreateComplete}
694
+ handleClose={handleClose}/>
695
+ )}
696
+
697
+ {isEditWhatsapp && (<Whatsapp
698
+ isFullMode={isFullMode}
699
+ templateData={templateData}
700
+ params={{
701
+ id: templateData._id,
702
+ }}
703
+ location={{
704
+ pathname: `/whatsapp/edit`,
705
+ query,
706
+ search: '',
707
+ }}/>
708
+ )}
709
+
681
710
  </CreativesWrapper>
682
711
  );
683
712
  }
@@ -5,9 +5,18 @@ import { CapHeader, CapIcons, CapLabel, CapSteps } from '@capillarytech/cap-ui-l
5
5
  import moment from 'moment';
6
6
  import PropTypes from 'prop-types';
7
7
  import messages from './messages';
8
+ import whatsppMsg from '../Whatsapp/messages';
8
9
  import { MAP_TEMPLATE } from '../WeChat/Wrapper/constants';
9
10
  import { NO_COMMUNICATION, FTP } from '../App/constants';
10
11
  import { isTraiDLTEnable } from '../../utils/common';
12
+ import { formatString } from '../../utils/Formatter';
13
+ import {
14
+ CAP_SPACE_12,
15
+ } from '@capillarytech/cap-ui-library/styled/variables';
16
+ const { CapLabelInline } = CapLabel;
17
+ const StyledLabel = styled(CapLabelInline)`
18
+ margin-right: ${CAP_SPACE_12};
19
+ `;
11
20
  const PrefixWrapper = styled.div`
12
21
  margin-right: 16px;
13
22
  `;
@@ -19,17 +28,23 @@ function getChannelLabel(channel = '') {
19
28
  wechat: 'Wechat',
20
29
  no_communication: 'NO_COMMUNICATION',
21
30
  ftp: 'FTP',
31
+ whatsapp: 'WhatsApp template',
22
32
  };
23
33
  return labels[channel.toLowerCase()];
24
34
  }
25
-
26
-
35
+ const renderWhatsappData = (type, value) => (
36
+ <StyledLabel type={type}>
37
+ {value}
38
+ </StyledLabel>
39
+ )
27
40
  function SlideBoxHeader(props) {
28
41
  const { slidBoxContent, templateData, onShowTemplates, creativesMode, isFullMode, showPrefix, shouldShowTemplateName, channel, templateNameRenderProp, weChatTemplateType, onWeChatMaptemplateStepChange, weChatMaptemplateStep, templateStep, smsRegister } = props;
29
42
  const showTemplateNameHeader = isFullMode && shouldShowTemplateName;
30
43
  const mapTemplateCreate = !showTemplateNameHeader && slidBoxContent === 'createTemplate' && weChatTemplateType === MAP_TEMPLATE && templateStep !== 'modeSelection';
31
44
  const isTraiDlt = isTraiDLTEnable(isFullMode, smsRegister);
32
45
  const showCreateTraiSMSHeader = isTraiDlt && channel.toLowerCase() === "sms";
46
+ const isWhatsappEdit = channel.toLowerCase() === 'whatsapp' && slidBoxContent === 'editTemplate';
47
+ const whatsappOverview = isWhatsappEdit && isFullMode;
33
48
 
34
49
  return (
35
50
  <div key="creatives-container-slidebox-header-content">
@@ -57,7 +72,20 @@ function SlideBoxHeader(props) {
57
72
  )}
58
73
  {!showTemplateNameHeader && slidBoxContent === 'editTemplate' && (
59
74
  <CapHeader
60
- title={<FormattedMessage {...messages.editMessageContent} values={{channel: getChannelLabel(channel)}}/>}
75
+ title={<FormattedMessage {...(whatsappOverview ? messages.whatsappOverview : messages.editMessageContent)} values={{channel: getChannelLabel(channel)}}/>}
76
+ description={
77
+ isWhatsappEdit && (
78
+ <>
79
+ {renderWhatsappData("label1", <FormattedMessage {...whatsppMsg.templateNameLabel} />)}
80
+ {renderWhatsappData("label2", templateData?.whatsappTemplateName)}
81
+ {renderWhatsappData("label3", <FormattedMessage {...whatsppMsg.labelSeperator} />)}
82
+ {renderWhatsappData("label1", <FormattedMessage {...whatsppMsg.templateCategoryLabel} />)}
83
+ {renderWhatsappData("label2", formatString(templateData?.whatsappTemplateCategory))}
84
+ {renderWhatsappData("label3", <FormattedMessage {...whatsppMsg.labelSeperator} />)}
85
+ {renderWhatsappData("label1", <FormattedMessage {...whatsppMsg.languageLabel} />)}
86
+ {renderWhatsappData("label2", <FormattedMessage {...whatsppMsg.templateLanguageEnglish} />)}
87
+ </>)
88
+ }
61
89
  prefix={creativesMode !== 'edit' && !isFullMode && showPrefix &&
62
90
  <PrefixWrapper>
63
91
  <CapIcons.backIcon onClick={onShowTemplates} />
@@ -16,6 +16,7 @@ export const FACEBOOK = "FACEBOOK";
16
16
  export const FTP = "FTP";
17
17
  export const NO_COMMUNICATION = "NO_COMMUNICATION";
18
18
  export const VIBER = "VIBER";
19
+ export const WHATSAPP = "WHATSAPP";
19
20
 
20
21
  export const SHOW_CONTANER_LOADER = "app/CreativesContainer/SHOW_CONTANER_LOADER";
21
22
  export const HIDE_CONTAINER_LOADER = "app/CreativesContainer/HIDE_CONTAINER_LOADER";
@@ -306,4 +306,8 @@ export default defineMessages({
306
306
  id: `${scope}.UploadSMStemplates`,
307
307
  defaultMessage: `Upload SMS templates`,
308
308
  },
309
+ "whatsappOverview": {
310
+ id: `${scope}.whatsappOverview`,
311
+ defaultMessage: `WhatsApp template overview`,
312
+ },
309
313
  });
@@ -2179,9 +2179,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
2179
2179
  } else {
2180
2180
  this.setState({injectedTags: data.tags});
2181
2181
  }
2182
- if (data.tags) {
2183
- this.props.globalActions.setInjectedTags(data.tags);
2184
- }
2182
+ this.props.globalActions.setInjectedTags(data.tags);
2185
2183
  }
2186
2184
 
2187
2185
  startLoading = (ifEdit) => {
@@ -83,7 +83,7 @@ export const LineContainer = ({
83
83
 
84
84
  const onAccountSelect = (account) => {
85
85
  const { value } = account.target;
86
- templateActions.setLineAccount(Templates.weCrmAccounts.find((item) => item.name === value));
86
+ templateActions.setChannelAccount(LINE, Templates.weCrmAccounts.find((item) => item.name === value));
87
87
  updateSelectedAccount(value);
88
88
  updateAccountSelectFlow(false);
89
89
  createNew();
@@ -499,3 +499,46 @@
499
499
  box-shadow: none;
500
500
  }
501
501
  }
502
+
503
+ .whatsapp-filters {
504
+ display: flex;
505
+ width: 100%;
506
+ padding-left: 8px;
507
+ padding-bottom: 16px;
508
+ .cap-select-filter-v2 {
509
+ margin: 0 8px;
510
+ }
511
+ }
512
+
513
+ .selected-whatsapp-filters {
514
+ margin-top: -16px;
515
+
516
+ .cap-tag-v2{
517
+ font-size: 12px;
518
+ color: $CAP_G04;
519
+ }
520
+
521
+ .ant-anchor-link-title {
522
+ font-size: 12px;
523
+ }
524
+ }
525
+
526
+ .whatsapp-card-title {
527
+
528
+ .whatsapp-status-container {
529
+ margin-top: 12px;
530
+ width: 150%;
531
+ height: 20px;
532
+
533
+ .cap-colored-tag-v2 {
534
+ font-weight: normal;
535
+ }
536
+ }
537
+ }
538
+
539
+ .whatsapp-illustration-desc {
540
+ font-size: 14px;
541
+ color: rgba(0, 0, 0, 0.87);
542
+ margin: 8px 0;
543
+ white-space: pre-wrap;
544
+ }
@@ -5,9 +5,9 @@
5
5
  */
6
6
 
7
7
  import * as types from './constants';
8
+ import { LINE, WHATSAPP } from '../CreativesContainer/constants';
8
9
 
9
10
  export function getAllTemplates(channel, queryParams) {
10
- //
11
11
  return {
12
12
  type: types.GET_ALL_TEMPLATES_REQUEST, channel, queryParams,
13
13
  };
@@ -26,7 +26,6 @@ export function resetAccount() {
26
26
  }
27
27
 
28
28
  export function deleteTemplate(channel, id) {
29
-
30
29
  return {
31
30
  type: types.DELETE_TEMPLATE_REQUEST, channel, id,
32
31
  };
@@ -51,18 +50,29 @@ export function getAccountsSettings() {
51
50
  }
52
51
 
53
52
  export function setWeChatAccount(weChatAccount) {
54
-
55
53
  return {
56
54
  type: types.SET_WECHAT_ACCOUNT,
57
55
  weChatAccount,
58
56
  };
59
57
  }
60
58
 
61
- export function setLineAccount(lineAccount) {
62
- return {
63
- type: types.SET_LINE_ACCOUNT,
64
- lineAccount,
65
- };
59
+ export function setChannelAccount(channel, account) {
60
+ switch (channel) {
61
+ case LINE: {
62
+ return {
63
+ type: types.SET_LINE_ACCOUNT,
64
+ account,
65
+ };
66
+ }
67
+ case WHATSAPP: {
68
+ return {
69
+ type: types.SET_WHATSAPP_ACCOUNT,
70
+ account,
71
+ };
72
+ }
73
+ default:
74
+ return {};
75
+ }
66
76
  }
67
77
 
68
78
  export function setViberAccount(viberAccount) {
@@ -114,7 +124,6 @@ export function setBEETemplate(template) {
114
124
  };
115
125
  }
116
126
  export function getTemplateDetails(id, channel) {
117
-
118
127
  return {
119
128
  type: types.GET_TEMPLATE_DETAILS_REQUEST,
120
129
  id,
@@ -129,7 +138,6 @@ export function resetTemplateData() {
129
138
  }
130
139
 
131
140
  export function resetUploadData() {
132
-
133
141
  return {
134
142
  type: types.RESET_UPLOAD_DATA,
135
143
  };
@@ -45,7 +45,7 @@ export const CLEAR_TEMPLATE_STORE_DATA = "app/v2Containers/Templates/CLEAR_TEMPL
45
45
  export const SET_LINE_ACCOUNT = "app/v2Containers/Templates/SET_LINE_ACCOUNT";
46
46
  export const SET_VIBER_ACCOUNT = "app/v2Containers/Templates/SET_VIBER_ACCOUNT";
47
47
  export const SET_FACEBOOK_ACCOUNT = "app/v2Containers/Templates/SET_FACEBOOK_ACCOUNT";
48
-
48
+ export const SET_WHATSAPP_ACCOUNT = "app/v2Containers/Templates/SET_WHATSAPP_ACCOUNT";
49
49
 
50
50
  export const GET_DEAFULT_BEE_TEMPLATES_REQUEST = 'app/v2Containers/Templates/GET_DEAFULT_BEE_TEMPLATES_REQUEST';
51
51
  export const GET_DEAFULT_BEE_TEMPLATES_SUCCESS = 'app/v2Containers/Templates/GET_DEAFULT_BEE_TEMPLATES_SUCCESS';
@@ -57,3 +57,5 @@ export const GET_ORG_LEVEL_CAMPAIGN_SETTINGS_SUCCESS =
57
57
  'app/v2Containers/Templates/GET_ORG_LEVEL_CAMPAIGN_SETTINGS_SUCCESS';
58
58
  export const GET_ORG_LEVEL_CAMPAIGN_SETTINGS_FAILURE =
59
59
  'app/v2Containers/Templates/GET_ORG_LEVEL_CAMPAIGN_SETTINGS_FAILURE';
60
+
61
+ export const MAX_WHATSAPP_TEMPLATES = 250;