@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.
- package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +7 -7
- package/components/TemplatePreview/_templatePreview.scss +20 -287
- package/components/TemplatePreview/index.js +31 -203
- package/components/TemplatePreview/messages.js +0 -21
- package/containers/Assets/Gallery/index.js +59 -53
- package/containers/Cap/index.js +0 -1
- package/index.js +0 -6
- package/package.json +1 -1
- package/routes.js +0 -5
- package/services/getSchema.js +1 -4
- package/translations/en.json +1 -29
- package/translations/zh.json +1 -29
- package/v2Components/FormBuilder/index.js +37 -188
- package/v2Components/FormBuilder/messages.js +0 -16
- package/v2Components/MobilePushPreviewV2/index.js +36 -44
- package/v2Components/MobilePushPreviewV2/messages.js +8 -0
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +0 -64
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +18 -100
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +0 -12
- package/v2Components/TemplatePreview/_templatePreview.scss +4 -24
- package/v2Components/TemplatePreview/index.js +23 -162
- package/v2Components/TemplatePreview/messages.js +0 -8
- package/v2Containers/Assets/Gallery/index.js +48 -54
- package/v2Containers/CreativesContainer/SlideBoxContent.js +4 -87
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -1
- package/v2Containers/CreativesContainer/index.js +2 -58
- package/v2Containers/CreativesContainer/messages.js +2 -2
- package/v2Containers/Email/_email.scss +1 -7
- package/v2Containers/Email/index.js +14 -40
- package/v2Containers/Email/messages.js +0 -4
- package/v2Containers/Email/reducer.js +0 -1
- package/v2Containers/EmailWrapper/index.js +5 -7
- package/v2Containers/Line/Create/_lineCreate.scss +19 -40
- package/v2Containers/Line/Create/actions.js +9 -13
- package/v2Containers/Line/Create/index.js +237 -498
- package/v2Containers/Line/Create/messages.js +2 -42
- package/v2Containers/Line/Create/sagas.js +4 -10
- package/v2Containers/Line/Create/selectors.js +9 -3
- package/v2Containers/MobilePush/Create/index.js +0 -5
- package/v2Containers/MobilePush/Edit/index.js +0 -5
- package/v2Containers/MobilepushWrapper/index.js +1 -4
- package/v2Containers/Sms/Create/index.js +1 -2
- package/v2Containers/Sms/Edit/index.js +0 -2
- package/v2Containers/Templates/_templates.scss +1 -24
- package/v2Containers/Templates/actions.js +0 -7
- package/v2Containers/Templates/constants.js +0 -2
- package/v2Containers/Templates/index.js +15 -118
- package/v2Containers/Templates/messages.js +0 -8
- package/v2Containers/Templates/reducer.js +0 -2
- package/v2Containers/TemplatesV2/index.js +4 -5
- package/v2Containers/TemplatesV2/messages.js +0 -4
- package/assets/IPad.js +0 -23
- package/assets/index.js +0 -1
- package/assets/lineImageTemplate.png +0 -0
- package/components/TemplatePreview/assets/images/HomeScreenAndroid.js +0 -53
- package/components/TemplatePreview/assets/images/SmsMobileAndroid.js +0 -52
- package/components/TemplatePreview/assets/images/SmsMobileIos.js +0 -71
- package/components/TemplatePreview/assets/images/UserIcon.js +0 -24
- package/components/TemplatePreview/assets/images/WechatMobileAndroid.js +0 -53
- package/components/TemplatePreview/assets/images/home-screen-android.svg +0 -21
- package/components/TemplatePreview/assets/images/home-screen-ios.svg +0 -16
- package/components/TemplatePreview/assets/images/sms_mobile_android.svg +0 -22
- package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +0 -16
- package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +0 -20
- package/v2Components/TemplatePreview/assets/images/HomeScreenAndroid.js +0 -53
- package/v2Components/TemplatePreview/assets/images/SmsMobileAndroid.js +0 -52
- package/v2Components/TemplatePreview/assets/images/UserIcon.js +0 -24
- package/v2Components/TemplatePreview/assets/images/WechatHomeScreenAndroid.js +0 -74
- package/v2Components/TemplatePreview/assets/images/WechatMobileAndroid.js +0 -53
- package/v2Components/TemplatePreview/assets/images/home-screen-android.svg +0 -21
- package/v2Components/TemplatePreview/assets/images/home-screen-ios.svg +0 -16
- package/v2Components/TemplatePreview/assets/images/sms_mobile_android.svg +0 -22
- package/v2Components/TemplatePreview/assets/images/wechat-home-screen-android.svg +0 -21
- package/v2Components/TemplatePreview/assets/images/wechat_mobile_android.svg +0 -20
- package/v2Containers/Assets/images/CalltaskIllustration.js +0 -71
- package/v2Containers/Assets/images/EmailIllustration.js +0 -87
- package/v2Containers/Assets/images/ImageGalleryIllustration.js +0 -60
- package/v2Containers/Assets/images/PushIllustration.js +0 -60
- package/v2Containers/Assets/images/SmsIllustration.js +0 -191
- package/v2Containers/Assets/images/WechatIllustration.js +0 -90
- package/v2Containers/Assets/images/index.js +0 -6
- package/v2Containers/Line/Create/initialSchema.js +0 -378
- package/v2Containers/Line/CreateWrapper/constants.js +0 -2
- package/v2Containers/Line/CreateWrapper/index.js +0 -117
- 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
|
-
"
|
|
114
|
-
id: 'creatives.containersV2.Line.Create.
|
|
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(
|
|
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,
|
|
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(
|
|
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,
|
|
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('
|
|
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
|
|
21
|
+
(substate) => substate.toJS()
|
|
21
22
|
);
|
|
22
23
|
|
|
23
24
|
const makeSelectCreateLine = () => createSelector(
|
|
24
25
|
selectLineMessageEditDomain(),
|
|
25
|
-
(substate) => substate
|
|
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
|
|
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 {
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
1549
|
+
if ((isWechatChannel || isMobilePushChannel) && !isEmpty(weCrmAccounts)) {
|
|
1604
1550
|
forEach(weCrmAccounts, (account) => {
|
|
1605
|
-
if ((isWechatChannel && account.configs && account.configs.is_wecrm_enabled) || isMobilePushChannel
|
|
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 {...
|
|
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={
|
|
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
|
|
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:
|
|
47
|
-
email: {content:
|
|
48
|
-
weChat: {content:
|
|
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:
|
|
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) => {
|