@capillarytech/creatives-library 3.9.21 → 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 (85) 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/containers/Cap/index.js +0 -1
  7. package/index.js +0 -6
  8. package/package.json +1 -1
  9. package/routes.js +0 -5
  10. package/services/getSchema.js +1 -4
  11. package/translations/en.json +1 -29
  12. package/translations/zh.json +1 -29
  13. package/v2Components/FormBuilder/index.js +37 -188
  14. package/v2Components/FormBuilder/messages.js +0 -16
  15. package/v2Components/MobilePushPreviewV2/index.js +36 -44
  16. package/v2Components/MobilePushPreviewV2/messages.js +8 -0
  17. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +0 -64
  18. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +18 -100
  19. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +0 -12
  20. package/v2Components/TemplatePreview/_templatePreview.scss +4 -24
  21. package/v2Components/TemplatePreview/index.js +23 -162
  22. package/v2Components/TemplatePreview/messages.js +0 -8
  23. package/v2Containers/Assets/Gallery/index.js +48 -54
  24. package/v2Containers/CreativesContainer/SlideBoxContent.js +4 -87
  25. package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -1
  26. package/v2Containers/CreativesContainer/index.js +2 -58
  27. package/v2Containers/CreativesContainer/messages.js +2 -2
  28. package/v2Containers/Email/_email.scss +1 -7
  29. package/v2Containers/Email/index.js +14 -40
  30. package/v2Containers/Email/messages.js +0 -4
  31. package/v2Containers/Email/reducer.js +0 -1
  32. package/v2Containers/EmailWrapper/index.js +5 -7
  33. package/v2Containers/Line/Create/_lineCreate.scss +19 -40
  34. package/v2Containers/Line/Create/actions.js +9 -13
  35. package/v2Containers/Line/Create/index.js +237 -498
  36. package/v2Containers/Line/Create/messages.js +2 -42
  37. package/v2Containers/Line/Create/sagas.js +4 -10
  38. package/v2Containers/Line/Create/selectors.js +9 -3
  39. package/v2Containers/MobilePush/Create/index.js +0 -5
  40. package/v2Containers/MobilePush/Edit/index.js +0 -5
  41. package/v2Containers/MobilepushWrapper/index.js +1 -4
  42. package/v2Containers/Sms/Create/index.js +1 -2
  43. package/v2Containers/Sms/Edit/index.js +0 -2
  44. package/v2Containers/Templates/_templates.scss +1 -24
  45. package/v2Containers/Templates/actions.js +0 -7
  46. package/v2Containers/Templates/constants.js +0 -2
  47. package/v2Containers/Templates/index.js +15 -118
  48. package/v2Containers/Templates/messages.js +0 -8
  49. package/v2Containers/Templates/reducer.js +0 -2
  50. package/v2Containers/TemplatesV2/index.js +4 -5
  51. package/v2Containers/TemplatesV2/messages.js +0 -4
  52. package/assets/IPad.js +0 -23
  53. package/assets/index.js +0 -1
  54. package/assets/lineImageTemplate.png +0 -0
  55. package/components/TemplatePreview/assets/images/HomeScreenAndroid.js +0 -53
  56. package/components/TemplatePreview/assets/images/SmsMobileAndroid.js +0 -52
  57. package/components/TemplatePreview/assets/images/SmsMobileIos.js +0 -71
  58. package/components/TemplatePreview/assets/images/UserIcon.js +0 -24
  59. package/components/TemplatePreview/assets/images/WechatMobileAndroid.js +0 -53
  60. package/components/TemplatePreview/assets/images/home-screen-android.svg +0 -21
  61. package/components/TemplatePreview/assets/images/home-screen-ios.svg +0 -16
  62. package/components/TemplatePreview/assets/images/sms_mobile_android.svg +0 -22
  63. package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +0 -16
  64. package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +0 -20
  65. package/v2Components/TemplatePreview/assets/images/HomeScreenAndroid.js +0 -53
  66. package/v2Components/TemplatePreview/assets/images/SmsMobileAndroid.js +0 -52
  67. package/v2Components/TemplatePreview/assets/images/UserIcon.js +0 -24
  68. package/v2Components/TemplatePreview/assets/images/WechatHomeScreenAndroid.js +0 -74
  69. package/v2Components/TemplatePreview/assets/images/WechatMobileAndroid.js +0 -53
  70. package/v2Components/TemplatePreview/assets/images/home-screen-android.svg +0 -21
  71. package/v2Components/TemplatePreview/assets/images/home-screen-ios.svg +0 -16
  72. package/v2Components/TemplatePreview/assets/images/sms_mobile_android.svg +0 -22
  73. package/v2Components/TemplatePreview/assets/images/wechat-home-screen-android.svg +0 -21
  74. package/v2Components/TemplatePreview/assets/images/wechat_mobile_android.svg +0 -20
  75. package/v2Containers/Assets/images/CalltaskIllustration.js +0 -71
  76. package/v2Containers/Assets/images/EmailIllustration.js +0 -87
  77. package/v2Containers/Assets/images/ImageGalleryIllustration.js +0 -60
  78. package/v2Containers/Assets/images/PushIllustration.js +0 -60
  79. package/v2Containers/Assets/images/SmsIllustration.js +0 -191
  80. package/v2Containers/Assets/images/WechatIllustration.js +0 -90
  81. package/v2Containers/Assets/images/index.js +0 -6
  82. package/v2Containers/Line/Create/initialSchema.js +0 -378
  83. package/v2Containers/Line/CreateWrapper/constants.js +0 -2
  84. package/v2Containers/Line/CreateWrapper/index.js +0 -117
  85. package/v2Containers/Line/CreateWrapper/messages.js +0 -55
@@ -110,8 +110,8 @@ export default defineMessages({
110
110
  id: 'creatives.containersV2.Line.Create.uploadImage',
111
111
  defaultMessage: 'Upload image',
112
112
  },
113
- "lineTemplateCreatedSuccessfully": {
114
- id: 'creatives.containersV2.Line.Create.lineTemplateCreatedSuccessfully',
113
+ "Line Template Created Successfully": {
114
+ id: 'creatives.containersV2.Line.Create.templateCreatedSuccessfully',
115
115
  defaultMessage: 'Line template created successfully',
116
116
  },
117
117
  "Line Template Edited Successfully": {
@@ -182,44 +182,4 @@ export default defineMessages({
182
182
  id: 'creatives.containersV2.Line.Create.goBackTemporaryLost',
183
183
  defaultMessage: 'Do you really want to go back? All your temporary changes will be lost!',
184
184
  },
185
- "Template content has unsupported/missing tags!": {
186
- id: 'creatives.containers.Create.tagsErrorMessage',
187
- defaultMessage: 'Message cannot be empty',
188
- },
189
- "imageGallery": {
190
- id: 'creatives.containers.Create.imageGallery',
191
- defaultMessage: 'Gallery',
192
- },
193
- "templatePlaceholder": {
194
- id: 'creatives.containers.Create.templatePlaceholder',
195
- defaultMessage: 'Enter template name',
196
- },
197
- "templateNameErrorPlaceholder": {
198
- id: 'creatives.containers.Create.templateNameErrorPlaceholder',
199
- defaultMessage: 'Template name cannot be empty.',
200
- },
201
- "templateAddTag": {
202
- id: 'creatives.containers.Create.templateAddTag',
203
- defaultMessage: 'Add tag',
204
- },
205
- "templateMessageError": {
206
- id: 'creatives.containers.Create.templateMessageError',
207
- defaultMessage: 'Template content cannot be empty!',
208
- },
209
- "templateMessagePlaceholder": {
210
- id: 'creatives.containers.Create.templateMessagePlaceholder',
211
- defaultMessage: 'Please input line template content.',
212
- },
213
- "templateMessagePreviewPropsLabel": {
214
- id: 'creatives.containers.Create.templateMessagePreviewPropsLabel',
215
- defaultMessage: 'Upload image content',
216
- },
217
- "templateMessagePreviewPropsError": {
218
- id: 'creatives.containers.Create.templateMessagePreviewPropsError',
219
- defaultMessage: 'Please upload image',
220
- },
221
- "templateMessagePreviewPropsInductiveText": {
222
- id: 'creatives.containers.Create.templateMessagePreviewPropsInductiveText',
223
- defaultMessage: 'The relevant image that complements the message context.',
224
- },
225
185
  });
@@ -6,18 +6,15 @@ import * as Api from '../../../services/api';
6
6
  import * as types from './constants';
7
7
 
8
8
  // Individual exports for testing
9
- export function* createTemplate({ template, callback }) {
9
+ export function* createTemplate(template) {
10
10
  let errorMsg;
11
11
  try {
12
12
  console.log('inside line saga createTemplate@@@', template);
13
- const result = yield call(Api.createLineTemplate, { template });
13
+ const result = yield call(Api.createLineTemplate, template);
14
14
  if (result.message || result.status.code === 500) {
15
15
  errorMsg = result.message;
16
16
  }
17
17
  yield put({ type: types.CREATE_TEMPLATE_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
18
- if (callback) {
19
- callback(result.response);
20
- }
21
18
  } catch (error) {
22
19
  yield put({ type: types.CREATE_TEMPLATE_FAILURE, error, errorMsg });
23
20
  }
@@ -46,18 +43,15 @@ function* watchUploadAsset() {
46
43
 
47
44
  // edit
48
45
 
49
- export function* editTemplate({ template, callback }) {
46
+ export function* editTemplate(template) {
50
47
  let errorMsg;
51
48
  try {
52
49
  console.log('saga editTemplate line', template);
53
- const result = yield call(Api.createLineTemplate, {template});
50
+ const result = yield call(Api.createLineTemplate, template);
54
51
  console.log('saga editTemplate success line', result);
55
52
  if (result.message || result.status.code === 500) {
56
53
  errorMsg = result.message;
57
54
  }
58
- if (callback) {
59
- callback(result.response);
60
- }
61
55
  yield put({ type: types.EDIT_TEMPLATE_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
62
56
  } catch (error) {
63
57
  yield put({ type: types.EDIT_TEMPLATE_FAILURE, error, errorMsg });
@@ -4,7 +4,8 @@ import { createSelector } from 'reselect';
4
4
  * Direct selector to the create state domain
5
5
  */
6
6
  const selectLineDomain = () => (state) => state.get('templates');
7
- const selectLineMessageEditDomain = () => (state) => state.get('lineCreate');
7
+ const selectLineMessageEditDomain = () => (state) => state.get('line');
8
+ //const selectLineDuplicateDomain = () => (state) => state.get('line');
8
9
 
9
10
  /**
10
11
  * Other specific selectors
@@ -17,14 +18,19 @@ const selectLineMessageEditDomain = () => (state) => state.get('lineCreate');
17
18
 
18
19
  const makeSelectLine = () => createSelector(
19
20
  selectLineDomain(),
20
- (substate) => substate && substate.toJS()
21
+ (substate) => substate.toJS()
21
22
  );
22
23
 
23
24
  const makeSelectCreateLine = () => createSelector(
24
25
  selectLineMessageEditDomain(),
25
- (substate) => substate && substate.toJS()
26
+ (substate) => substate.toJS()
26
27
  );
27
28
 
29
+ // const makeSelectDuplicate = () => createSelector(
30
+ // selectLineDuplicateDomain(),
31
+ // (substate) => substate.toJS()
32
+ // );
33
+
28
34
  export {
29
35
  makeSelectLine, makeSelectCreateLine,
30
36
  };
@@ -1714,9 +1714,6 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
1714
1714
  startValidation={this.state.startValidation}
1715
1715
  stopValidation={this.stopValidation}
1716
1716
  selectedOfferDetails={this.props.selectedOfferDetails}
1717
- onPreviewContentClicked={this.props.onPreviewContentClicked}
1718
- onTestContentClicked={this.props.onTestContentClicked}
1719
- templateData={this.props.templateData}
1720
1717
  />
1721
1718
  </CapColumn>
1722
1719
  {this.props.iosCtasData && this.state.showIosCtaTable &&
@@ -1806,8 +1803,6 @@ Create.propTypes = {
1806
1803
  isGetFormData: PropTypes.bool,
1807
1804
  onValidationFail: PropTypes.func,
1808
1805
  getFormLibraryData: PropTypes.func,
1809
- onPreviewContentClicked: PropTypes.func,
1810
- onTestContentClicked: PropTypes.func,
1811
1806
  };
1812
1807
 
1813
1808
  const mapStateToProps = createStructuredSelector({
@@ -1801,9 +1801,6 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
1801
1801
  startValidation={this.state.startValidation}
1802
1802
  stopValidation={this.stopValidation}
1803
1803
  selectedOfferDetails={this.props.selectedOfferDetails}
1804
- onPreviewContentClicked={this.props.onPreviewContentClicked}
1805
- onTestContentClicked={this.props.onTestContentClicked}
1806
- templateData={this.props.templateData}
1807
1804
  />}
1808
1805
  </CapColumn>
1809
1806
  {this.props.iosCtasData && this.state.showIosCtaTable &&
@@ -1896,8 +1893,6 @@ Edit.propTypes = {
1896
1893
  isGetFormData: PropTypes.bool,
1897
1894
  Create: PropTypes.object,
1898
1895
  onValidationFail: PropTypes.bool,
1899
- onPreviewContentClicked: PropTypes.func,
1900
- onTestContentClicked: PropTypes.func,
1901
1896
  };
1902
1897
 
1903
1898
  const mapStateToProps = createStructuredSelector({
@@ -69,7 +69,7 @@ export class MobilepushWrapper extends React.Component { // eslint-disable-line
69
69
  }
70
70
  }
71
71
  render() {
72
- const {mobilePushCreateMode, step, getFormData, setIsLoadingContent, isGetFormData, query, isFullMode, showTemplateName, type, onValidationFail, onPreviewContentClicked, onTestContentClicked, templateData} = this.props;
72
+ const {mobilePushCreateMode, step, getFormData, setIsLoadingContent, isGetFormData, query, isFullMode, showTemplateName, type, onValidationFail} = this.props;
73
73
  const {templateName} = this.state;
74
74
  const isShowMobilepushCreate = !isEmpty(mobilePushCreateMode);
75
75
  return (
@@ -112,9 +112,6 @@ export class MobilepushWrapper extends React.Component { // eslint-disable-line
112
112
  route={{ name: 'mobilepush' }}
113
113
  getDefaultTags={type}
114
114
  onValidationFail={onValidationFail}
115
- onPreviewContentClicked={onPreviewContentClicked}
116
- onTestContentClicked={onTestContentClicked}
117
- templateData={templateData}
118
115
  />
119
116
 
120
117
 
@@ -928,6 +928,7 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
928
928
  this.setState({startValidation: true}, this.showError);
929
929
  }
930
930
  render() {
931
+ console.log("this.props sms create: ", this.props);
931
932
  const schema = this.state.schema;
932
933
  const spinning = this.isSmsLoading();
933
934
  let tags = this.props.metaEntities && this.props.metaEntities.tags && this.props.metaEntities.tags.standard ? this.props.metaEntities.tags.standard : [];
@@ -975,8 +976,6 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
975
976
  startValidation={this.state.startValidation}
976
977
  stopValidation={this.stopValidation}
977
978
  selectedOfferDetails={this.props.selectedOfferDetails}
978
- onTestContentClicked={this.props.onTestContentClicked}
979
- onPreviewContentClicked={this.props.onPreviewContentClicked}
980
979
  />
981
980
  </CapColumn>
982
981
  </CapRow>
@@ -972,8 +972,6 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
972
972
  startValidation={this.state.startValidation}
973
973
  stopValidation={this.stopValidation}
974
974
  selectedOfferDetails={this.props.selectedOfferDetails}
975
- onPreviewContentClicked={this.props.onPreviewContentClicked}
976
- onTestContentClicked={this.props.onTestContentClicked}
977
975
  />
978
976
  </CapColumn>
979
977
  </CapRow>
@@ -18,28 +18,6 @@
18
18
  }
19
19
  }
20
20
 
21
- .creatives-templates-list {
22
- .pagination-container {
23
- .LINE {
24
- .ant-card-body {
25
- background-color: $CAP_G09;
26
- height: 320px;
27
- }
28
-
29
- &.no-image .ant-card-meta {
30
- height: 276px;
31
- background: $CAP_WHITE;
32
- padding: $CAP_SPACE_16 $CAP_SPACE_12;
33
-
34
- .ant-card-meta-description {
35
- height: 250px;
36
- word-wrap: break-word;
37
- }
38
- }
39
- }
40
- }
41
- }
42
-
43
21
  .card-title {
44
22
  line-height: 24px;
45
23
  font-size: 14px;
@@ -383,8 +361,7 @@
383
361
  overflow: hidden;
384
362
  }
385
363
 
386
- .wechat-filters,
387
- .line-filters {
364
+ .wechat-filters {
388
365
  width: 100%;
389
366
  padding-left: 12px;
390
367
  .ant-radio-button-wrapper {
@@ -52,13 +52,6 @@
52
52
  };
53
53
  }
54
54
 
55
- export function setLineAccount(lineAccount) {
56
- return {
57
- type: types.SET_LINE_ACCOUNT,
58
- lineAccount,
59
- };
60
- }
61
-
62
55
  export function handleHtmlUpload(selectedTemplate) {
63
56
  return {
64
57
  type: types.SET_SELECTED_LAYOUT,
@@ -43,5 +43,3 @@ export const RESET_TEMPLATE = "app/v2Containers/Templates/RESET_TEMPLATE";
43
43
  export const RESET_TEMPLATE_DATA = "app/v2Containers/Templates/RESET_TEMPLATE_DATA";
44
44
  export const RESET_UPLOAD_DATA = "app/v2Containers/Templates/RESET_UPLOAD_DATA";
45
45
  export const CLEAR_TEMPLATE_STORE_DATA = "app/v2Containers/Templates/CLEAR_TEMPLATE_STORE_DATA";
46
-
47
- export const SET_LINE_ACCOUNT = "app/v2Containers/Templates/SET_LINE_ACCOUNT";
@@ -50,7 +50,7 @@ import Pagination from '../../v2Components/Pagination';
50
50
  import EmailPreview from '../../v2Components/EmailPreview';
51
51
  import CreativesContainer from '../CreativesContainer';
52
52
  import WechatRichmediaTemplatePreview from '../../v2Components/TemplatePreview/WechatRichmediaTemplatePreview';
53
- import { CHANNEL_CREATE_TRACK_MAPPING, CHANNEL_EDIT_TRACK_MAPPING } from '../App/constants';
53
+ import { CHANNEL_CREATE_TRACK_MAPPING, CHANNEL_EDIT_TRACK_MAPPING } from '../App/constants'
54
54
  import { MOBILE_PUSH, WECHAT, SMS, EMAIL, EBILL, LINE } from '../CreativesContainer/constants';
55
55
  import emailIllustration from '../Assets/images/emailIllustration.svg';
56
56
  import smsIllustration from '../Assets/images/smsIllustration.svg';
@@ -77,11 +77,6 @@ const WECHAT_FILTERS = {
77
77
  MAPTEMPLATES: 'maptemplate',
78
78
  };
79
79
 
80
- const LINE_FILTERS = {
81
- ALL: 'all',
82
- TEXT: 'text',
83
- IMAGE_VIDEO: 'image',
84
- };
85
80
 
86
81
  export class Templates extends React.Component { // eslint-disable-line react/prefer-stateless-function
87
82
  constructor(props) {
@@ -109,7 +104,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
109
104
  routeParams: null,
110
105
  activeMode: TEMPLATES_MODE,
111
106
  wechatFilter: WECHAT_FILTERS.ALL,
112
- lineFilter: LINE_FILTERS.ALL,
113
107
  };
114
108
 
115
109
  this.handleOnHoverItem = this.handleOnHoverItem.bind(this);
@@ -160,10 +154,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
160
154
  break;
161
155
  case LINE:
162
156
  channel = "Line";
163
- if (!this.props.isFullMode) {
164
- activeMode = ACCOUNT_SELECTION_MODE;
165
- this.props.actions.getWeCrmAccounts(channel);
166
- }
167
157
  break;
168
158
  default:
169
159
  channel = '';
@@ -176,6 +166,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
176
166
  }
177
167
 
178
168
  componentDidMount() {
169
+
179
170
  if (this.props.location.query.type === 'embedded' && this.isEnabledInLibraryModule("setLocale")) {
180
171
  this.setLocale();
181
172
  }
@@ -243,10 +234,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
243
234
  channel = 'Ebill';
244
235
  } else if (nextProps.route.name.toLowerCase() === 'line') {
245
236
  channel = 'Line';
246
- if (!this.props.isFullMode) {
247
- this.setState({defaultAccount: true});
248
- nextProps.actions.getWeCrmAccounts(channel);
249
- }
250
237
  }
251
238
  this.setState({ channel }, () => {
252
239
  if (this.state.channel.toLowerCase() === 'line' || this.state.channel.toLowerCase() === 'sms' || this.state.channel.toLowerCase() === 'email' || this.state.channel.toLowerCase() === 'ebill' || (this.state.channel.toLowerCase() === 'wechat' && !isEmpty(nextProps.Templates.selectedWeChatAccount))) {
@@ -429,8 +416,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
429
416
  } else {
430
417
  this.setState({selectedAccountError: false});
431
418
  }
432
- } else if (this.state.channel.toLowerCase() === 'line') {
433
- this.props.actions.setLineAccount(this.props.Templates.weCrmAccounts.find((item) => item.name === this.state.selectedAccount));
434
419
  }
435
420
  this.setState({activeMode: TEMPLATES_MODE});
436
421
  console.log("getAllTemplates params: ", params);
@@ -469,8 +454,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
469
454
  };
470
455
  } else {
471
456
  creativesParams._id = pathname.split('/')[3];
472
- creativesParams.modeType = pathname.split('/')[4];
473
- creativesParams.account = pathname.split('/')[5];
474
457
  }
475
458
  creativesParams.type = this.state.channel.toUpperCase();
476
459
  }
@@ -563,7 +546,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
563
546
  return templates;
564
547
  }
565
548
  }
566
-
567
549
  getTemplateDataForGrid = ({templates, handlers, filterContent, channel, isLoading, loadingTip}) => {
568
550
  const currentChannel = channel.toUpperCase();
569
551
  const {channel: stateChannel} = this.state;
@@ -572,9 +554,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
572
554
  if (currentChannel === WECHAT) {
573
555
  filteredTemplates = this.filterWechatTemplates(templates);
574
556
  }
575
- if (currentChannel === LINE) {
576
- filteredTemplates = this.filterLineTemplates(templates);
577
- }
578
557
  const cardDataList = filteredTemplates && filteredTemplates.length ? map(filteredTemplates, (template) => {
579
558
  const templateData =
580
559
  {
@@ -588,7 +567,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
588
567
  onClick={() => { if (this.props.isFullMode) { handlers.handlePreviewClick(template); } else { this.props.handlePeviewTemplate(template); } }}
589
568
  />,
590
569
  ],
591
- hoverOption: <CapButton className={this.props.isFullMode ? `edit-${channelLowerCase}` : `select-${channelLowerCase}`} onClick={(e) => handlers.handleEditClick(e, template, undefined, undefined, {account: this.state.selectedAccount})}>{this.props.intl.formatMessage(this.props.isFullMode ? messages.creativesTemplatesEdit : messages.selectButton)}</CapButton>,
570
+ hoverOption: <CapButton className={this.props.isFullMode ? `edit-${channelLowerCase}` : `select-${channelLowerCase}`} onClick={(e) => handlers.handleEditClick(e, template)}>{this.props.intl.formatMessage(this.props.isFullMode ? messages.creativesTemplatesEdit : messages.selectButton)}</CapButton>,
592
571
  };
593
572
  if (this.props.isFullMode) {
594
573
  templateData.extra.push(<CapDropdown
@@ -628,19 +607,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
628
607
  case WECHAT:
629
608
  templateData.content = this.prepareWeChatPreviewData(template);
630
609
  break;
631
- case LINE: {
632
- const {
633
- content: {
634
- messages: [{
635
- text = '',
636
- originalContentUrl = '',
637
- }] = [{}],
638
- } = {},
639
- } = template.versions.base;
640
- templateData.content = text;
641
- templateData.url = originalContentUrl;
642
- break;
643
- }
644
610
  default:
645
611
  templateData.content = "";
646
612
  }
@@ -657,7 +623,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
657
623
  <div className={!isEmpty(this.state.searchText) && isEmpty(cardDataList) ? '' : "pagination-container"}>
658
624
  <CapCustomCardList key={`${currentChannel}-card-list`} cardList={cardDataList} type={currentChannel} style={{marginLeft: '16px'}}/>
659
625
  </div>)
660
- : ['sms', "email"].includes(this.state.channel.toLowerCase()) && <CapIllustration buttonClassName={`create-new-${channelLowerCase}`} {...this.getChannelTypeIllustrationInfo(currentChannel)} />
626
+ : ['sms', "email"].includes(this.state.channel.toLowerCase()) && <CapIllustration {...this.getChannelTypeIllustrationInfo(currentChannel)} />
661
627
  }
662
628
 
663
629
  {(this.state.selectedAccount === '' && isEmpty(this.props.Templates.selectedWeChatAccount)) && (this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === "mobilepush") &&
@@ -679,7 +645,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
679
645
  isEmpty(filteredTemplates) &&
680
646
  isEmpty(this.state.searchText) &&
681
647
  <div style={this.isFullMode() ? { height: "calc(100vh - 325px)", overflow: 'auto'} : {}}>
682
- <CapIllustration buttonClassName={`create-new-${channelLowerCase}`} {...this.getChannelTypeIllustrationInfo(currentChannel)} />
648
+ <CapIllustration {...this.getChannelTypeIllustrationInfo(currentChannel)} />
683
649
  </div>
684
650
  )
685
651
  }
@@ -690,13 +656,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
690
656
 
691
657
  </div>);
692
658
  }
693
- filterLineTemplates = (templates) => {
694
- const { lineFilter } = this.state;
695
- if (LINE_FILTERS.ALL === lineFilter) {
696
- return templates;
697
- }
698
- return templates.filter((template) => template.definition && template.definition.mode === lineFilter);
699
- }
700
659
  skipTemplateSelection = (e) => {
701
660
  const type = this.props.location.query.type;
702
661
  const module = (type === 'embedded') ? this.props.location.query.module : 'default';
@@ -971,7 +930,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
971
930
  break;
972
931
  }
973
932
  };
974
-
933
+
975
934
  createTemplate(ev) {
976
935
  const type = this.props.location.query.type;
977
936
  const module = this.props.location.query.module ? this.props.location.query.module : 'default';
@@ -1130,14 +1089,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1130
1089
  } else if (this.state.channel.toLowerCase() === "email") {
1131
1090
  this.props.emailActions.duplicateTemplate(template._id, "EMAIL");
1132
1091
  } else if (this.state.channel.toLowerCase() === "line") {
1133
- this.props.lineActions.createTemplate(duplicateObj, (response) => {
1134
- if (response && response.templateId) {
1135
- const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
1136
- CapNotification.success({key: 'duplicateSucess', message});
1137
- this.getAllTemplates({params, resetPage: true});
1138
- this.props.lineActions.clearCreateResponse();
1139
- }
1140
- });
1092
+ this.props.lineActions.createTemplate(duplicateObj);
1141
1093
  }
1142
1094
  }
1143
1095
 
@@ -1179,7 +1131,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1179
1131
  }
1180
1132
  };
1181
1133
 
1182
- handleEditClick(e, template, modeType, path, options) {
1134
+ handleEditClick(e, template, modeType, path) {
1183
1135
  timeTracker.startTimer(CHANNEL_EDIT_TRACK_MAPPING[this.state.channel.toLowerCase()]);
1184
1136
  if (modeType && modeType !== undefined) {
1185
1137
  this.setState({modeType});
@@ -1212,12 +1164,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1212
1164
  pathName = `/ebill/edit/${id}`;
1213
1165
  }
1214
1166
  if (this.state.channel.toLowerCase() === 'line') {
1215
- const { messages } = template.versions.base.content;
1216
- const type = messages && messages[0] && messages[0].type;
1217
- pathName = `/line/edit/${id}/${type}`;
1218
- if (options && options.account) {
1219
- pathName += `/${options.account}`;
1220
- }
1167
+ pathName = `/line/edit/${modeType}/${id}`;
1221
1168
  }
1222
1169
  if (this.state.channel.toUpperCase() === WECHAT) {
1223
1170
  if (get(template, 'definition.msgcontent', '') === "RICH_MEDIA_WECHAT") {
@@ -1598,11 +1545,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1598
1545
  const { weCrmAccounts = [], fetchingWeCrmAccounts = false } = templates;
1599
1546
  const isWechatChannel = channel === WECHAT;
1600
1547
  const isMobilePushChannel = channel === MOBILE_PUSH;
1601
- const isLineChannel = channel === LINE;
1602
1548
 
1603
- if ((isWechatChannel || isMobilePushChannel || isLineChannel) && !isEmpty(weCrmAccounts)) {
1549
+ if ((isWechatChannel || isMobilePushChannel) && !isEmpty(weCrmAccounts)) {
1604
1550
  forEach(weCrmAccounts, (account) => {
1605
- if ((isWechatChannel && account.configs && account.configs.is_wecrm_enabled) || isMobilePushChannel || isLineChannel) {
1551
+ if ((isWechatChannel && account.configs && account.configs.is_wecrm_enabled) || isMobilePushChannel) {
1606
1552
  if (query.type === 'embedded' && (!query.module || (query.module && query.module !== 'library'))) {
1607
1553
  if (query.source_account_id && account.sourceAccountIdentifier === query.source_account_id) {
1608
1554
  accountOptions.push(
@@ -1635,37 +1581,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1635
1581
  }
1636
1582
  });
1637
1583
  }
1638
- const {
1639
- intl: {
1640
- formatMessage,
1641
- },
1642
- } = this.props;
1643
- let accountHeader = formatMessage(messages.mobilepushAccount);
1644
- let noAccountHeader = messages.noAccountsPresent;
1645
- switch (channel) {
1646
- case MOBILE_PUSH: {
1647
- accountHeader = formatMessage(messages.mobilepushAccount);
1648
- noAccountHeader = messages.noAccountsPresent;
1649
- break;
1650
- }
1651
- case WECHAT: {
1652
- accountHeader = formatMessage(messages.wechatAccount);
1653
- noAccountHeader = messages.noAccountsPresentWeChat;
1654
- break;
1655
- }
1656
- case LINE: {
1657
- accountHeader = formatMessage(messages.lineAccount);
1658
- noAccountHeader = messages.noAccountsPresentLine;
1659
- break;
1660
- }
1661
- default:
1662
- break;
1663
- }
1664
1584
  return (<CapSpin spinning={fetchingWeCrmAccounts}>
1665
- {isEmpty(weCrmAccounts) && !fetchingWeCrmAccounts ? <FormattedMessage {...noAccountHeader} /> :
1585
+ {isEmpty(weCrmAccounts) && !fetchingWeCrmAccounts ? <FormattedMessage {...(channel === WECHAT ? messages.noAccountsPresentWeChat : messages.noAccountsPresent)} /> :
1666
1586
  <div style={{ overflowX: "auto", paddingBottom: CAP_SPACE_16 }}>
1667
1587
  <CapHeader
1668
- title={accountHeader}
1588
+ title={isMobilePushChannel ? this.props.intl.formatMessage(messages.mobilepushAccount) : this.props.intl.formatMessage(messages.wechatAccount)}
1669
1589
  description={this.props.intl.formatMessage(messages.chooseAccount)}
1670
1590
  size="regular"
1671
1591
  className="select-account-header"
@@ -1711,11 +1631,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1711
1631
  }
1712
1632
 
1713
1633
  setWechatFilter = (e) => this.setState({wechatFilter: e.target.value});
1714
- setLineFilter = (e) => this.setState({lineFilter: e.target.value});
1715
1634
 
1716
1635
  render() {
1717
1636
  const isFullMode = this.isFullMode();
1718
- const { activeMode, channel, wechatFilter, lineFilter } = this.state;
1637
+ const { activeMode, channel, wechatFilter } = this.state;
1719
1638
  if (activeMode === ACCOUNT_SELECTION_MODE) {
1720
1639
  return this.renderAccountSelection();
1721
1640
  }
@@ -1769,28 +1688,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1769
1688
  </CapLabel></CapRadio.Button>
1770
1689
  </CapRadio.CapRadioGroup>
1771
1690
  }
1772
- {
1773
- channel.toUpperCase() === LINE && <CapRadio.CapRadioGroup className="line-filters" defaultValue={lineFilter} onChange={this.setLineFilter}>
1774
- {
1775
- (() => {
1776
- const { ALL, TEXT, IMAGE_VIDEO } = LINE_FILTERS;
1777
- return (
1778
- <>
1779
- <CapRadio.Button value={ALL}><CapLabel type="label2">
1780
- <FormattedMessage {...messages.all} />
1781
- </CapLabel></CapRadio.Button>
1782
- <CapRadio.Button value={TEXT}><CapLabel type="label2">
1783
- <FormattedMessage {...messages.textTemplate} />
1784
- </CapLabel></CapRadio.Button>
1785
- <CapRadio.Button value={IMAGE_VIDEO}><CapLabel type="label2">
1786
- <FormattedMessage {...messages.imageTemplate} />
1787
- </CapLabel></CapRadio.Button>
1788
- </>
1789
- );
1790
- })()
1791
- }
1792
- </CapRadio.CapRadioGroup>
1793
- }
1691
+
1794
1692
  <div style={{display: "flex", justifyContent: "space-between", alignItems: 'center'}}>
1795
1693
  {isfilterContentVisisble && !isWechatEmbedded && <CapButton
1796
1694
  className={`create-new-${channelLowerCase}`}
@@ -1846,7 +1744,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1846
1744
  channel={route.name.toUpperCase()}
1847
1745
  handleCloseCreatives={this.onCreateComplete}
1848
1746
  selectedWeChatAccount={get(this.props, 'Templates.selectedWeChatAccount', {})}
1849
- selectedAccount={this.state.selectedAccount}
1850
1747
  />
1851
1748
  }
1852
1749
  </CapRow>
@@ -126,10 +126,6 @@ export default defineMessages({
126
126
  id: `${scope}.noAccountsPresentWeChat`,
127
127
  defaultMessage: "Wechat accounts are not setup for your brand",
128
128
  },
129
- "noAccountsPresentLine": {
130
- id: `${scope}.noAccountsPresentLine`,
131
- defaultMessage: "Line accounts are not setup for your brand",
132
- },
133
129
  "noTemplatesMessage": {
134
130
  id: `${scope}.noTemplatesMessage`,
135
131
  defaultMessage: "No templates available",
@@ -330,10 +326,6 @@ export default defineMessages({
330
326
  id: `${scope}.mobilepushAccount`,
331
327
  defaultMessage: 'Mobilepush account',
332
328
  },
333
- "lineAccount": {
334
- id: `${scope}.lineAccount`,
335
- defaultMessage: 'Line account',
336
- },
337
329
  "all": {
338
330
  id: `${scope}.all`,
339
331
  defaultMessage: 'All',
@@ -71,8 +71,6 @@ function templatesReducer(state = initialState, action) {
71
71
  case types.SET_WECHAT_ACCOUNT:
72
72
  return state
73
73
  .set('selectedWeChatAccount', fromJS(action.weChatAccount));
74
- case types.SET_LINE_ACCOUNT:
75
- return state.set('selectedLineAccount', fromJS(action.lineAccount));
76
74
  case types.RESET_ACCOUNT:
77
75
  return state
78
76
  .remove('selectedWeChatAccount')
@@ -43,12 +43,11 @@ export class TemplatesV2 extends React.Component { // eslint-disable-line react/
43
43
  } = props;
44
44
 
45
45
  const defaultPanes = {
46
- sms: {content: <></>, tab: intl.formatMessage(messages.sms), key: 'sms'},
47
- email: {content: <></>, tab: intl.formatMessage(messages.email), key: 'email'},
48
- weChat: {content: <></>, tab: intl.formatMessage(messages.wechat), key: 'wechat'},
46
+ sms: {content: <div></div>, tab: intl.formatMessage(messages.sms), key: 'sms'},
47
+ email: {content: <div></div>, tab: intl.formatMessage(messages.email), key: 'email'},
48
+ weChat: {content: <div></div>, tab: intl.formatMessage(messages.wechat), key: 'wechat'},
49
49
  //'wechat': {content: this.getTemplatesComponent('wechat'), tab: 'Wechat', key: 'wechat'},
50
- mPush: {content: <></>, tab: intl.formatMessage(messages.pushNotification), key: 'mobilepush'},
51
- line: {content: <></>, tab: intl.formatMessage(messages.line), key: 'line'},
50
+ mPush: {content: <div></div>, tab: intl.formatMessage(messages.pushNotification), key: 'mobilepush'},
52
51
  };
53
52
  let filteredPanes = Object.keys(defaultPanes)
54
53
  .filter((key) => !channelsToHide.includes(key)).reduce((obj = [], key) => {
@@ -54,8 +54,4 @@ export default defineMessages({
54
54
  id: 'creatives.containersV2.TemplatesV2.wechat',
55
55
  defaultMessage: 'Wechat',
56
56
  },
57
- line: {
58
- id: 'creatives.containersV2.TemplatesV2.line',
59
- defaultMessage: 'Line',
60
- },
61
57
  });