@capillarytech/creatives-library 3.9.20 → 3.10.0

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 (83) hide show
  1. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +7 -7
  2. package/components/TemplatePreview/_templatePreview.scss +20 -287
  3. package/components/TemplatePreview/index.js +31 -203
  4. package/components/TemplatePreview/messages.js +0 -21
  5. package/containers/Assets/Gallery/index.js +59 -53
  6. package/index.js +0 -6
  7. package/package.json +1 -1
  8. package/routes.js +0 -5
  9. package/services/getSchema.js +1 -4
  10. package/translations/en.json +1 -29
  11. package/translations/zh.json +1 -29
  12. package/v2Components/FormBuilder/index.js +37 -188
  13. package/v2Components/FormBuilder/messages.js +0 -16
  14. package/v2Components/MobilePushPreviewV2/index.js +32 -40
  15. package/v2Components/MobilePushPreviewV2/messages.js +8 -0
  16. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +0 -64
  17. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +18 -100
  18. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +0 -12
  19. package/v2Components/TemplatePreview/_templatePreview.scss +4 -24
  20. package/v2Components/TemplatePreview/index.js +23 -159
  21. package/v2Components/TemplatePreview/messages.js +0 -8
  22. package/v2Containers/Assets/Gallery/index.js +29 -41
  23. package/v2Containers/CreativesContainer/SlideBoxContent.js +4 -87
  24. package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -1
  25. package/v2Containers/CreativesContainer/index.js +2 -58
  26. package/v2Containers/CreativesContainer/messages.js +2 -2
  27. package/v2Containers/Email/_email.scss +1 -7
  28. package/v2Containers/Email/index.js +14 -40
  29. package/v2Containers/Email/messages.js +0 -4
  30. package/v2Containers/EmailWrapper/index.js +5 -7
  31. package/v2Containers/Line/Create/_lineCreate.scss +19 -40
  32. package/v2Containers/Line/Create/actions.js +9 -13
  33. package/v2Containers/Line/Create/index.js +237 -498
  34. package/v2Containers/Line/Create/messages.js +2 -42
  35. package/v2Containers/Line/Create/sagas.js +4 -10
  36. package/v2Containers/Line/Create/selectors.js +9 -3
  37. package/v2Containers/MobilePush/Create/index.js +0 -5
  38. package/v2Containers/MobilePush/Edit/index.js +0 -5
  39. package/v2Containers/MobilepushWrapper/index.js +1 -4
  40. package/v2Containers/Sms/Create/index.js +1 -2
  41. package/v2Containers/Sms/Edit/index.js +0 -2
  42. package/v2Containers/Templates/_templates.scss +1 -24
  43. package/v2Containers/Templates/actions.js +0 -7
  44. package/v2Containers/Templates/constants.js +0 -2
  45. package/v2Containers/Templates/index.js +15 -118
  46. package/v2Containers/Templates/messages.js +0 -8
  47. package/v2Containers/Templates/reducer.js +0 -2
  48. package/v2Containers/TemplatesV2/index.js +4 -5
  49. package/v2Containers/TemplatesV2/messages.js +0 -4
  50. package/assets/IPad.js +0 -23
  51. package/assets/index.js +0 -1
  52. package/assets/lineImageTemplate.png +0 -0
  53. package/components/TemplatePreview/assets/images/HomeScreenAndroid.js +0 -53
  54. package/components/TemplatePreview/assets/images/SmsMobileAndroid.js +0 -52
  55. package/components/TemplatePreview/assets/images/SmsMobileIos.js +0 -71
  56. package/components/TemplatePreview/assets/images/UserIcon.js +0 -24
  57. package/components/TemplatePreview/assets/images/WechatMobileAndroid.js +0 -53
  58. package/components/TemplatePreview/assets/images/home-screen-android.svg +0 -21
  59. package/components/TemplatePreview/assets/images/home-screen-ios.svg +0 -16
  60. package/components/TemplatePreview/assets/images/sms_mobile_android.svg +0 -22
  61. package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +0 -16
  62. package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +0 -20
  63. package/v2Components/TemplatePreview/assets/images/HomeScreenAndroid.js +0 -53
  64. package/v2Components/TemplatePreview/assets/images/SmsMobileAndroid.js +0 -52
  65. package/v2Components/TemplatePreview/assets/images/UserIcon.js +0 -24
  66. package/v2Components/TemplatePreview/assets/images/WechatHomeScreenAndroid.js +0 -74
  67. package/v2Components/TemplatePreview/assets/images/WechatMobileAndroid.js +0 -53
  68. package/v2Components/TemplatePreview/assets/images/home-screen-android.svg +0 -21
  69. package/v2Components/TemplatePreview/assets/images/home-screen-ios.svg +0 -16
  70. package/v2Components/TemplatePreview/assets/images/sms_mobile_android.svg +0 -22
  71. package/v2Components/TemplatePreview/assets/images/wechat-home-screen-android.svg +0 -21
  72. package/v2Components/TemplatePreview/assets/images/wechat_mobile_android.svg +0 -20
  73. package/v2Containers/Assets/images/CalltaskIllustration.js +0 -71
  74. package/v2Containers/Assets/images/EmailIllustration.js +0 -87
  75. package/v2Containers/Assets/images/ImageGalleryIllustration.js +0 -60
  76. package/v2Containers/Assets/images/PushIllustration.js +0 -60
  77. package/v2Containers/Assets/images/SmsIllustration.js +0 -191
  78. package/v2Containers/Assets/images/WechatIllustration.js +0 -90
  79. package/v2Containers/Assets/images/index.js +0 -6
  80. package/v2Containers/Line/Create/initialSchema.js +0 -378
  81. package/v2Containers/Line/CreateWrapper/constants.js +0 -2
  82. package/v2Containers/Line/CreateWrapper/index.js +0 -117
  83. package/v2Containers/Line/CreateWrapper/messages.js +0 -55
@@ -10,114 +10,17 @@ import React from 'react';
10
10
  import _ from 'lodash';
11
11
  import { injectIntl, FormattedMessage, intlShape } from 'react-intl';
12
12
  // import styled from 'styled-components';
13
- import {CapColumn, CapRow, CapHeading, CapIcon, CapButton, CapImage} from '@capillarytech/cap-ui-library';
13
+ import {CapColumn, CapRow, CapHeading} from '@capillarytech/cap-ui-library';
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';
18
- const wechatBodyNew = require('./assets/images/wechat_mobile_android.svg');
19
- const smsMobileAndroid = require('./assets/images/sms_mobile_android.svg');
17
+ const smsIcon = require('./assets/images/user-icon.svg');
18
+ const wechatBody = require('./assets/images/WECHAT_5x.png');
19
+ const smsBody = require('./assets/images/mobile.svg');
20
20
  const androidPushMessagePhone = require('./assets/images/androidPushMessage.svg');
21
21
  const iPhonePushMessagePhone = require('./assets/images/iPhonePushMessage.svg');
22
22
 
23
23
  class TemplatePreview extends React.Component { // eslint-disable-line react/prefer-stateless-function
24
- onPreviewContentClicked = (channel) => {
25
- const IOSContent = (this.props.templateDataRaw && this.props.templateDataRaw.versions.base.IOS) ||
26
- ((this.props.device === 'iphone' || this.props.device === 'ios') && this.props.content);
27
- const ANDROIDContent = (this.props.templateDataRaw && this.props.templateDataRaw.versions.base.ANDROID) ||
28
- (this.props.device === 'android' && this.props.content);
29
- const mobilePushPreviewContent = [];
30
- if (this.props.channel === 'MOBILEPUSH') {
31
- const previewObj = {
32
- channel: this.props.channel,
33
- accountId: this.props.templateDataRaw && this.props.templateDataRaw.definition.accountId,
34
- messageSubject: this.props.templateDataRaw && this.props.templateDataRaw.name,
35
- id: 'message_content_id_1',
36
- };
37
- if (IOSContent) {
38
- previewObj.iosContent = {
39
- title: IOSContent.title || IOSContent.header,
40
- message: IOSContent.message || IOSContent.bodyText,
41
- deviceType: "IOS",
42
- expandableDetails: IOSContent.expandableDetails ||
43
- {
44
- style: "BIG_PICTURE",
45
- image: this.props.content.bodyImage,
46
- message: this.props.content.bodyText,
47
- },
48
- };
49
- }
50
- if (ANDROIDContent) {
51
- previewObj.androidContent = {
52
- title: ANDROIDContent.title || ANDROIDContent.header,
53
- message: ANDROIDContent.message || ANDROIDContent.bodyText,
54
- deviceType: "ANDROID",
55
- expandableDetails: ANDROIDContent.expandableDetails ||
56
- {
57
- style: "BIG_PICTURE",
58
- image: this.props.content.bodyImage,
59
- message: this.props.content.bodyText,
60
- },
61
- };
62
- }
63
- mobilePushPreviewContent.push(previewObj);
64
- }
65
- const previewContent = this.props.channel === 'MOBILEPUSH' ? mobilePushPreviewContent : this.props.content;
66
- const params = {
67
- content: previewContent,
68
- channel,
69
- };
70
- this.props.onPreviewContentClicked(params);
71
- };
72
-
73
- onTestContentClicked = (channel) => {
74
- let mobilePushPreviewContent = {};
75
- const IOSContent = (this.props.templateDataRaw && this.props.templateDataRaw.versions.base.IOS) ||
76
- ((this.props.device === 'iphone' || this.props.device === 'ios') && this.props.content);
77
- const ANDROIDContent = (this.props.templateDataRaw && this.props.templateDataRaw.versions.base.ANDROID) ||
78
- (this.props.device === 'android' && this.props.content);
79
- if (this.props.channel === 'MOBILEPUSH') {
80
- mobilePushPreviewContent = {
81
- channel: this.props.channel,
82
- accountId: this.props.templateDataRaw && this.props.templateDataRaw.definition.accountId,
83
- messageSubject: this.props.templateDataRaw && this.props.templateDataRaw.name,
84
- id: 'message_content_id_1',
85
- };
86
- if (ANDROIDContent) {
87
- mobilePushPreviewContent.androidContent = {
88
- title: ANDROIDContent.title || ANDROIDContent.header,
89
- message: ANDROIDContent.message || ANDROIDContent.bodyText,
90
- deviceType: "ANDROID",
91
- expandableDetails: ANDROIDContent.expandableDetails ||
92
- {
93
- style: "BIG_PICTURE",
94
- image: this.props.content.bodyImage,
95
- message: this.props.content.bodyText,
96
- },
97
- };
98
- }
99
- if (IOSContent) {
100
- mobilePushPreviewContent.iosContent = {
101
- title: IOSContent.title || IOSContent.header,
102
- message: IOSContent.message || IOSContent.bodyText,
103
- deviceType: "IOS",
104
- expandableDetails: IOSContent.expandableDetails ||
105
- {
106
- style: "BIG_PICTURE",
107
- image: this.props.content.bodyImage,
108
- message: this.props.content.bodyText,
109
- },
110
- };
111
- }
112
- }
113
- const previewContent = this.props.channel === 'MOBILEPUSH' ? mobilePushPreviewContent : this.props.content;
114
- const params = {
115
- content: previewContent,
116
- channel,
117
- };
118
- this.props.onTestContentClicked(params);
119
- };
120
-
121
24
  render() {
122
25
  let content = channel && channel.toLowerCase() === 'sms' ? [this.props.content] : this.props.content;
123
26
  const channel = this.props.channel;
@@ -161,43 +64,16 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
161
64
  </CapHeading>}
162
65
  </CapColumn>}
163
66
  <CapColumn span={this.props.showCount ? 8 : 24}>
164
- {this.props.showTestAndPreviewIcon && this.props.channel !== WECHAT && (
165
- <div className="test-and-preview-container">
166
- <CapButton
167
- style={{
168
- color: '#2466ea',
169
- display: 'inline-block',
170
- padding: '0 6px',
171
- marginTop: '12px',
172
- }}
173
- type="flat"
174
- onClick={() => this.onPreviewContentClicked(this.props.channel)}
175
- >
176
- <CapIcon type="eye"/><FormattedMessage {...messages.preview} />
177
- </CapButton>
178
- <CapButton
179
- style={{
180
- color: '#2466ea',
181
- display: 'inline-block',
182
- padding: '0 6px',
183
- marginTop: '12px',
184
- }}
185
- type="flat"
186
- onClick={() => this.onTestContentClicked(this.props.channel)}
187
- >
188
- <CapIcon type="lab"/><FormattedMessage {...messages.testMessage} />
189
- </CapButton>
190
- </div>
191
- )}
192
67
  <div className={`preview-container ${type === 'embedded' ? 'embedded-preview' : ''}`}>
193
68
  { channel && channel.toLowerCase() === 'sms' &&
194
69
  <div>
195
- <div className="shell-v2 align-center" id="sms-preview">
196
- <CapImage className="preview-image sms" src={smsMobileAndroid} alt="Preview is being generated"/>
70
+ <div className="shell align-center" id="sms-preview">
71
+ <img className="preview-image sms" src={smsBody} alt="Preview is being generated"/>
197
72
  <div className="msgContainer sms">
73
+ <img className="sms-icon" src={smsIcon} alt="Sms icon" />
198
74
  <div className={"message-pop sms"}>
199
75
  {content && content.length && content.map((msg, index) =>
200
- <CapColumn key={`"message-pop-content-${index}`} className="message-pop-item align-left" style={{ background: '#FFFFFF', color: '#091e42'}}>
76
+ <CapColumn key={`"message-pop-content-${index}`} className="message-pop-item align-left" style={{ background: '#3F51B5', color: '#ffffff'}}>
201
77
  {msg}
202
78
  </CapColumn>)
203
79
  }
@@ -220,9 +96,10 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
220
96
  </div>
221
97
  }
222
98
  {channel && channel.toLowerCase() === 'wechat' ?
223
- ( <div className="shell-v2 align-center" id="sms-preview">
224
- <CapImage className="preview-image" src={channel.toLowerCase() === 'wechat' ? wechatBodyNew : smsMobileAndroid} alt="Preview is being generated"/>
225
- <div className="msgContainer wechat">
99
+ ( <div className="shell align-center" id="sms-preview">
100
+ <img className="preview-image" src={channel.toLowerCase() === 'wechat' ? wechatBody : smsBody} alt="Preview is being generated"/>
101
+ <div className="msgContainer">
102
+ {this.props.channel.toLowerCase() === 'wechat' ? <div className="sms-icon" style={{ width: '25px', height: '25px', background: '#2E89DF' }}></div> : <img className="sms-icon" src={smsIcon} alt={this.props.intl.formatMessage(messages.smsIcon)} />}
226
103
  <div className="message-pop align-left" style={{ background: `${this.props.channel.toLowerCase() === 'wechat' ? '#ffffff' : '#3F51B5'}`, color: `${this.props.channel.toLowerCase() === 'wechat' ? '#333333' : '#ffffff'}`}}>{content}
227
104
  </div>
228
105
  </div>
@@ -230,10 +107,10 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
230
107
  ) : ''
231
108
  }
232
109
  { channel && (channel.toLowerCase() === 'mobilepush') &&
233
- (<div className="shell-v2 align-center" id="mobilepush-preview">
234
- <CapImage className="preview-image" src={this.props.device === "android" ? androidPushMessagePhone : iPhonePushMessagePhone} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
110
+ (<div className="shell align-center" id="mobilepush-preview">
111
+ <img className="preview-image" src={this.props.device === "android" ? androidPushMessagePhone : iPhonePushMessagePhone} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
235
112
  {(!!content.header || !!content.bodyText || !!content.bodyImage) &&
236
- <div className={`${this.props.device === 'ios' ? 'iphone' : this.props.device}-push-message-Container`}>
113
+ <div className={`${this.props.device}-push-message-Container`}>
237
114
  {this.props.device === "android" ?
238
115
  <div className="message-pop align-left">
239
116
  <div className="app-name">
@@ -246,7 +123,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
246
123
  {content.bodyText}
247
124
  </div>
248
125
  {content.bodyImage && <div className="body-image">
249
- <CapImage src={content.bodyImage} alt="" />
126
+ <img src={content.bodyImage} alt="" />
250
127
  </div>}
251
128
  {content.actions.filter((action) => action.label).length ?
252
129
  <div className="actions">
@@ -261,7 +138,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
261
138
  <span className="app-icon"></span>{content.appName ? content.appName : "App name"} <i className="material-icons">{this.props.intl.formatMessage(messages.close)}</i>
262
139
  </div>
263
140
  {content.bodyImage && <div className="body-image">
264
- <CapImage src={content.bodyImage} alt=""/>
141
+ <img src={content.bodyImage} alt=""/>
265
142
  </div>}
266
143
  <div className="title">
267
144
  {content.header}
@@ -279,22 +156,13 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
279
156
  }
280
157
  {
281
158
  channel && channel.toLowerCase() === 'line' ? (
282
- <div className="shell-v2 align-center" id="sms-preview">
283
- <CapImage className="preview-image" src={wechatBodyNew} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
284
- <div className="msgContainer line-preview">
285
- <div className="sms-icon" style={{ left: 10, borderRadius: '50%', width: '20px', height: '20px', background: '#2E89DF' }}></div>
159
+ <div className="shell align-center" id="sms-preview">
160
+ <img className="preview-image" src={wechatBody} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
161
+ <div className="msgContainer">
162
+ <div className="sms-icon" style={{ width: '25px', height: '25px', background: '#2E89DF' }}></div>
286
163
  <div className="message-pop align-left" style={{ background: '#ffffff', color: '#333333' }}>
287
- {
288
- content && Object.keys(content).map((item) => {
289
- if (item === 'bodyText' && content[item]) {
290
- return content[item];
291
- }
292
- if (item === 'bodyImage' && content[item]) {
293
- return <CapImage src={content[item]} alt="brand-name" style={{maxWidth: '100%'}}/>;
294
- }
295
- return null;
296
- })
297
- }
164
+ { (content && content.bodyImage) ? <img src={content.bodyImage} alt="ddd" style={{maxWidth: '100%'}}/> : '' }
165
+ { (content && content.bodyText) ? content.bodyText : ''}
298
166
  </div>
299
167
  </div>
300
168
  { (content && content.bodyText) ? <p style={{fontSize: 16, fontWeight: "bold"}}>Chars Count: {content.bodyText.length} / (1600)</p> : '' }
@@ -321,10 +189,6 @@ TemplatePreview.propTypes = {
321
189
  unicodeEnabled: PropTypes.bool,
322
190
  showCount: PropTypes.bool,
323
191
  intl: intlShape.isRequired,
324
- templateDataRaw: PropTypes.object,
325
- onPreviewContentClicked: PropTypes.func,
326
- onTestContentClicked: PropTypes.func,
327
- showTestAndPreviewIcon: PropTypes.bool,
328
192
  };
329
193
 
330
194
  export default (injectIntl(TemplatePreview));
@@ -50,12 +50,4 @@ export default defineMessages({
50
50
  id: 'creatives.componentsV2.TemplatePreview.smsIcon',
51
51
  defaultMessage: 'Sms Icon',
52
52
  },
53
- preview: {
54
- id: 'creatives.componentsV2.TemplatePreview.preview',
55
- defaultMessage: 'Preview',
56
- },
57
- testMessage: {
58
- id: 'creatives.componentsV2.TemplatePreview.testMessage',
59
- defaultMessage: 'Test Message',
60
- },
61
53
  });
@@ -245,7 +245,6 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
245
245
  const fileParams = {
246
246
  width: this.width,
247
247
  height: this.height,
248
- isGeneratePreview: true,
249
248
  };
250
249
  that.props.actions.uploadAsset(files[file], 'image', fileParams);
251
250
  };
@@ -317,34 +316,29 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
317
316
  {
318
317
  key: `${currentChannel}-card-${template.name}`,
319
318
  title: <span title={template.name} >{template.name}</span>,
319
+ extra: [
320
+ <CapIcon
321
+ className="view-gallery"
322
+ style={{marginRight: '16px'}}
323
+ type="eye"
324
+ onClick={() => { this.openPreviewMode(template); }}
325
+ />,
326
+ <CapDropdown
327
+ overlay={
328
+ <CapMenu>
329
+ <CapMenu.Item className="delete-gallery" onClick={() => this.deleteAsset(template)}>
330
+ <FormattedMessage {...messages.delete} />
331
+ </CapMenu.Item>
332
+ </CapMenu>
333
+ }
334
+ >
335
+ <CapIcon type="more" />
336
+ </CapDropdown>,
337
+ ],
320
338
  };
321
- if (!this.props.isLineAsset) {
322
- templateData.extra = [
323
- <CapIcon
324
- className="view-gallery"
325
- style={{marginRight: '16px'}}
326
- type="eye"
327
- onClick={() => { this.openPreviewMode(template); }}
328
- />,
329
- <CapDropdown
330
- overlay={
331
- <CapMenu>
332
- <CapMenu.Item className="delete-gallery" onClick={() => this.deleteAsset(template)}>
333
- <FormattedMessage {...messages.delete} />
334
- </CapMenu.Item>
335
- </CapMenu>
336
- }
337
- >
338
- <CapIcon type="more" />
339
- </CapDropdown>,
340
- ];
341
- }
342
339
  if (!this.props.isFullMode) {
343
340
  templateData.hoverOption = <CapButton onClick={(e) => handlers.selectAsset(e, template._id)}><FormattedMessage {...messages.select} /></CapButton>;
344
341
  }
345
- if (this.props.isLineAsset) {
346
- templateData.hoverOption = <CapButton onClick={() => this.props.onGalleryImageSelect(template)}><FormattedMessage {...messages.select} /></CapButton>;
347
- }
348
342
  const secureFilePath = _.get(template, 'metaInfo.secure_file_path');
349
343
  templateData.url = secureFilePath || _.get(template, 'metaInfo.public_url');
350
344
  return templateData;
@@ -353,7 +347,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
353
347
  {filterContent}
354
348
  <CapSpin spinning={isLoading} tip={loadingTip} style={{width: "100%"}}>
355
349
  {!isLoading && <div>
356
- {!_.isEmpty(templates) || !_.isEmpty(searchText) ? <div className={`pagination-container ${this.props.isLineAsset ? 'gallery-upload' : ''}`}>
350
+ {!_.isEmpty(templates) || !_.isEmpty(searchText) ? <div className="pagination-container">
357
351
  <CapCustomCardList key={`${currentChannel}-card-list`} cardList={cardDataList} type={'Email'} />
358
352
  {!_.isEmpty(searchText) && _.isEmpty(templates) && (
359
353
  <div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
@@ -427,25 +421,21 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
427
421
  <div style={{ marginTop: '8px', width: '50%'}}>
428
422
  <CapInput.Search
429
423
  className="search-text"
430
- style={{width: `${this.props.isLineAsset ? '324px' : '210px'}`}}
424
+ style={{width: '210px'}}
431
425
  placeholder={this.props.intl.formatMessage(messages.search)}
432
426
  value={this.state.searchText}
433
427
  onChange={(e) => this.searchAsset(e.target.value)}
434
428
  onClear={() => this.searchAsset('')}
435
429
  />
436
430
  </div>
437
- {
438
- !this.props.isLineAsset && (
439
- <div style={{ textAlign: 'right', marginTop: '16px', width: '50%'}}>
440
- <form encType="multipart/form-data" id="myForm">
441
- <input style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files})} accept="image/*" multiple/>
442
- <CapButton className="upload-image-gallery" type={this.props.location.query.type !== 'embedded' ? 'primary' : 'secondary'} onClick={(e) => this.openFileDialog(e)} style={{float: 'right'}}>
443
- <FormattedMessage {...messages.upload} />
444
- </CapButton>
445
- </form>
446
- </div>
447
- )
448
- }
431
+ <div style={{ textAlign: 'right', marginTop: '16px', width: '50%'}}>
432
+ <form encType="multipart/form-data" id="myForm">
433
+ <input style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files})} accept="image/*" multiple/>
434
+ <CapButton className="upload-image-gallery" type={this.props.location.query.type !== 'embedded' ? 'primary' : 'secondary'} onClick={(e) => this.openFileDialog(e)} style={{float: 'right'}}>
435
+ <FormattedMessage {...messages.upload} />
436
+ </CapButton>
437
+ </form>
438
+ </div>
449
439
  </div>
450
440
  ) : <input style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files})} accept="image/*" multiple/>;
451
441
  const isLoading = this.props.Gallery.assetUploading || this.props.Gallery.fetchingAllAssets;
@@ -506,8 +496,6 @@ Gallery.propTypes = {
506
496
  location: PropTypes.object,
507
497
  intl: intlShape.isRequired,
508
498
  isFullMode: PropTypes.bool,
509
- isLineAsset: PropTypes.bool,
510
- onGalleryImageSelect: PropTypes.func,
511
499
  };
512
500
 
513
501
  const mapStateToProps = createStructuredSelector({
@@ -11,14 +11,12 @@ import EmailWrapper from '../EmailWrapper';
11
11
  import MobilepushWrapper from '../MobilepushWrapper';
12
12
  import EmailPreviewV2 from '../../v2Components/EmailPreviewV2';
13
13
  import MobilePushPreview from '../../v2Components/MobilePushPreviewV2';
14
- import LineEdit from '../Line/Create';
15
14
  import WechatWrapper from '../WeChat/Wrapper';
16
15
  import Facebook from '../Facebook';
17
16
  import { RICH_MEDIA, MAP_TEMPLATE, CREATE } from '../WeChat/Wrapper/constants';
18
17
  import CallTask from '../CallTask';
19
18
  import MobliPushEdit from '../MobilePush/Edit';
20
19
  import * as constants from './constants';
21
- import CreateLineWrapper from '../Line/CreateWrapper';
22
20
  const CreativesWrapper = styled.div`
23
21
  .ant-popover,
24
22
  .ant-notification,
@@ -43,7 +41,6 @@ function SlideBoxContent(props) {
43
41
  location,
44
42
  isGetFormData,
45
43
  getFormData,
46
- onCreateComplete,
47
44
  messageDetails,
48
45
  onCreateNew,
49
46
  currentChannel,
@@ -72,11 +69,7 @@ function SlideBoxContent(props) {
72
69
  selectedWeChatAccount,
73
70
  weChatMaptemplateStep,
74
71
  onWeChatMaptemplateStepChange,
75
- onTestContentClicked,
76
- onPreviewContentClicked,
77
72
  onFacebookSubmit,
78
- saveMessage,
79
- selectedAccount,
80
73
  } = props;
81
74
  const type = messageDetails.type.toLowerCase(); // type is context in get tags values : outbound | dvs | referral | loyalty | coupons
82
75
  const query = { type: !isFullMode && 'embedded', module: isFullMode ? 'default' : 'library', isEditFromCampaigns: (templateData || {}).isEditFromCampaigns};
@@ -87,11 +80,9 @@ function SlideBoxContent(props) {
87
80
  };
88
81
  let channel = currentChannel;//for create mode
89
82
  const isCreateSms = slidBoxContent === 'createTemplate' && channel === constants.SMS;
90
- const isCreateLine = slidBoxContent === 'createTemplate' && channel === constants.LINE;
91
83
  const isCreateMPush = slidBoxContent === 'createTemplate' && channel === constants.MOBILE_PUSH;
92
84
  const isCreateCallTask = slidBoxContent === 'createTemplate' && channel === constants.CALL_TASK;
93
85
  let isEditSms = false;
94
- let isEditLine = false;
95
86
  let isEditEmailWithId = false;
96
87
  let isEmailEditWithContent = false;
97
88
  let isPreview = false;
@@ -104,42 +95,16 @@ function SlideBoxContent(props) {
104
95
  if (templateData && channel) {
105
96
  channel = templateData.type;// for edit mode with template data
106
97
  isEditSms = slidBoxContent === 'editTemplate' && channel === constants.SMS;
107
- isEditLine = slidBoxContent === 'editTemplate' && channel === constants.LINE;
108
98
  isEditCallTask = slidBoxContent === 'editTemplate' && channel === constants.CALL_TASK;
109
99
  isEditMPush = slidBoxContent === 'editTemplate' && channel === constants.MOBILE_PUSH;
110
100
  isEditEmailWithId = slidBoxContent === 'editTemplate' && channel === constants.EMAIL && templateData._id;
111
101
  isEmailEditWithContent = slidBoxContent === 'editTemplate' && channel === constants.EMAIL && !templateData._id;
112
102
  isEditFacebook = slidBoxContent === 'editTemplate' && channel === constants.FACEBOOK;
113
- isPreview = slidBoxContent === 'preview' && (channel === constants.SMS || channel === constants.LINE);
103
+ isPreview = slidBoxContent === 'preview' && channel === constants.SMS;
114
104
  isEmailPreview = slidBoxContent === 'preview' && channel === constants.EMAIL;
115
105
  isMpushPreview = slidBoxContent === 'preview' && channel === constants.MOBILE_PUSH;
116
106
  }
117
107
 
118
- const getChannelPreviewContent = (templateDataObject) => {
119
- switch (templateDataObject.type.toUpperCase()) {
120
- case constants.SMS:
121
- return get(templateDataObject, `versions.base['sms-editor']`);
122
- case constants.LINE: {
123
- const content = get(templateDataObject, `versions.base.content.messages[0]`, {});
124
- let previewContent = {};
125
- if (content.text) {
126
- previewContent = {
127
- bodyText: content.text,
128
- };
129
- }
130
- if (content.originalContentUrl) {
131
- previewContent = {
132
- ...previewContent,
133
- bodyImage: content.previewImageUrl,
134
- };
135
- }
136
- return previewContent;
137
- }
138
- default:
139
- return get(templateDataObject, `versions.base.content`);
140
- }
141
- };
142
-
143
108
  return (
144
109
  <CreativesWrapper>
145
110
  {!isFullMode && slidBoxContent === 'templates' && (
@@ -162,10 +127,10 @@ function SlideBoxContent(props) {
162
127
  )}
163
128
  {isPreview && (
164
129
  <TemplatePreview
165
- content={getChannelPreviewContent(templateData)}
130
+ content={templateData.type.toUpperCase() === constants.SMS ? get(templateData, `versions.base['sms-editor']`) : get(templateData, `versions.base.content`)}
166
131
  unicodeEnabled={get(templateData, `versions.base['unicode-validity']`)}
167
132
  channel={templateData.type.toLowerCase()}
168
- charCounterEnabled={channel === constants.SMS}
133
+ charCounterEnabled
169
134
  templateData={templateData}
170
135
  showCount
171
136
  forwardedTags={forwardedTags}
@@ -220,8 +185,6 @@ function SlideBoxContent(props) {
220
185
  templateData={templateData}
221
186
  forwardedTags={forwardedTags}
222
187
  selectedOfferDetails={selectedOfferDetails}
223
- onPreviewContentClicked={onPreviewContentClicked}
224
- onTestContentClicked={onTestContentClicked}
225
188
  />
226
189
  )}
227
190
  {
@@ -255,8 +218,6 @@ function SlideBoxContent(props) {
255
218
  isFullMode={isFullMode}
256
219
  forwardedTags={forwardedTags}
257
220
  selectedOfferDetails={selectedOfferDetails}
258
- onPreviewContentClicked={onPreviewContentClicked}
259
- onTestContentClicked={onTestContentClicked}
260
221
  />
261
222
  )}
262
223
  {isEmailCreate && (
@@ -279,8 +240,6 @@ function SlideBoxContent(props) {
279
240
  onValidationFail={onValidationFail}
280
241
  forwardedTags={forwardedTags}
281
242
  selectedOfferDetails={selectedOfferDetails}
282
- onPreviewContentClicked={onPreviewContentClicked}
283
- onTestContentClicked={onTestContentClicked}
284
243
  />
285
244
  )}
286
245
  {(isEditEmailWithId || isEmailEditWithContent) && (
@@ -304,8 +263,6 @@ function SlideBoxContent(props) {
304
263
  onValidationFail={onValidationFail}
305
264
  forwardedTags={forwardedTags}
306
265
  selectedOfferDetails={selectedOfferDetails}
307
- onPreviewContentClicked={onPreviewContentClicked}
308
- onTestContentClicked={onTestContentClicked}
309
266
  />
310
267
  )}
311
268
  {isEditMPush &&
@@ -326,8 +283,6 @@ function SlideBoxContent(props) {
326
283
  onValidationFail={onValidationFail}
327
284
  forwardedTags={forwardedTags}
328
285
  selectedOfferDetails={selectedOfferDetails}
329
- onPreviewContentClicked={onPreviewContentClicked}
330
- onTestContentClicked={onTestContentClicked}
331
286
  />
332
287
  }
333
288
  {isCreateMPush &&
@@ -352,9 +307,7 @@ function SlideBoxContent(props) {
352
307
  query={query}
353
308
  forwardedTags={forwardedTags}
354
309
  onValidationFail={onValidationFail}
355
- selectedOfferDetails={selectedOfferDetails}
356
- onPreviewContentClicked={onPreviewContentClicked}
357
- onTestContentClicked={onTestContentClicked}/>
310
+ selectedOfferDetails={selectedOfferDetails}/>
358
311
  }
359
312
  {
360
313
  isEditFacebook && (
@@ -366,39 +319,6 @@ function SlideBoxContent(props) {
366
319
  />
367
320
  )
368
321
  }
369
- {
370
- isEditLine && (
371
- <LineEdit
372
- location={creativesLocationProps}
373
- params={{
374
- id: templateData._id,
375
- mode: templateData.modeType || (templateData.definition && templateData.definition.mode),
376
- }}
377
- route={{ name: (templateData.modeType || (templateData.definition && templateData.definition.mode)) === 'image' ? 'edit_image' : 'edit_text' }}
378
- onCreateComplete={onCreateComplete}
379
- isFullMode={isFullMode}
380
- saveMessage={saveMessage}
381
- getFormSubscriptionData={getFormData}
382
- isGetFormData={isGetFormData}
383
- templateData={templateData}
384
- selectedAccount={selectedAccount}
385
- />
386
- )
387
- }
388
- {
389
- isCreateLine && (
390
- <CreateLineWrapper
391
- location={creativesLocationProps}
392
- onCreateComplete={onCreateComplete}
393
- isFullMode={isFullMode}
394
- isGetFormData={isGetFormData}
395
- saveMessage={saveMessage}
396
- selectedAccount={selectedAccount}
397
- templateData={templateData}
398
- getFormSubscriptionData={getFormData}
399
- />
400
- )
401
- }
402
322
  </CreativesWrapper>
403
323
  );
404
324
  }
@@ -439,8 +359,5 @@ SlideBoxContent.propTypes = {
439
359
  onWeChatMaptemplateStepChange: PropTypes.func,
440
360
  weChatMaptemplateStep: PropTypes.string,
441
361
  onFacebookSubmit: PropTypes.func,
442
- onCreateComplete: PropTypes.func,
443
- saveMessage: PropTypes.func,
444
- selectedAccount: PropTypes.object,
445
362
  };
446
363
  export default SlideBoxContent;
@@ -48,7 +48,7 @@ function SlideBoxHeader(props) {
48
48
  )}
49
49
  {!showTemplateNameHeader && slidBoxContent === 'editTemplate' && (
50
50
  <CapHeader
51
- title={<FormattedMessage {...messages.editMessageContent} values={{channel: getChannelLabel(channel)}}/>}
51
+ title={<FormattedMessage {...messages.editMessageContent} />}
52
52
  prefix={creativesMode !== 'edit' && !isFullMode && showPrefix &&
53
53
  <PrefixWrapper>
54
54
  <CapIcons.backIcon onClick={onShowTemplates} />