@capillarytech/creatives-library 0.1.15 → 0.1.16
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/FormBuilder/index.js +1 -0
- package/containers/Assets/Gallery/_gallery.scss +19 -0
- package/containers/Assets/Gallery/index.js +39 -26
- package/containers/Assets/Gallery/reducer.js +3 -3
- package/containers/Assets/Gallery/sagas.js +1 -1
- package/containers/Email/index.js +1 -0
- package/containers/Sms/Create/index.js +3 -0
- package/containers/Sms/Edit/index.js +8 -1
- package/containers/Templates/index.js +23 -1
- package/package.json +1 -1
|
@@ -940,6 +940,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
940
940
|
|
|
941
941
|
skipTags(tag) {
|
|
942
942
|
const regexGroups = ["dynamic_expiry_date_after_\\d+_days.FORMAT_\\d", "user_id_b64", "outbox_id_b64", "unsubscribe\\(#[a-zA-Z\\d]{6}\\)","Link_to_[a-zA-z]"];
|
|
943
|
+
|
|
943
944
|
//const regexGroups = [];
|
|
944
945
|
let skipped = false;
|
|
945
946
|
_.forEach(regexGroups, (group) => {
|
|
@@ -60,6 +60,12 @@
|
|
|
60
60
|
left: 30%;
|
|
61
61
|
width: 30%;
|
|
62
62
|
}
|
|
63
|
+
|
|
64
|
+
img{
|
|
65
|
+
width: 100%;
|
|
66
|
+
object-fit: cover; // try contain
|
|
67
|
+
height: 100%;
|
|
68
|
+
}
|
|
63
69
|
}
|
|
64
70
|
|
|
65
71
|
.overlay {
|
|
@@ -105,3 +111,16 @@
|
|
|
105
111
|
}
|
|
106
112
|
}
|
|
107
113
|
}
|
|
114
|
+
|
|
115
|
+
#slidebox-content{
|
|
116
|
+
img{
|
|
117
|
+
display: block;
|
|
118
|
+
max-width: 100%;
|
|
119
|
+
margin: 0 auto;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
#slidebox-container{
|
|
124
|
+
left: 40vw !important;
|
|
125
|
+
width: 60vw !important;
|
|
126
|
+
}
|
|
@@ -69,6 +69,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
componentWillReceiveProps(nextProps) {
|
|
72
|
+
console.log("nextProps", nextProps);
|
|
72
73
|
if ( !_.isEqual(nextProps.Gallery.uploadAssetSuccess, this.props.Gallery.uploadAssetSuccess) && nextProps.Gallery.uploadAssetSuccess) {
|
|
73
74
|
if (this.props.location.query.type === 'embedded' && nextProps.Gallery.uploadedAssetData) {
|
|
74
75
|
console.log('Post on will receive props');
|
|
@@ -106,19 +107,27 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
106
107
|
const message = getMessageObject('error', this.props.intl.formatMessage(messages.assetDeleteFailed), true);
|
|
107
108
|
this.props.globalActions.addMessageToQueue(message);
|
|
108
109
|
}
|
|
110
|
+
if ( nextProps.Gallery.itemDeleted || !nextProps.Gallery.assetUploading) {
|
|
111
|
+
const params = {
|
|
112
|
+
name: this.state.searchText,
|
|
113
|
+
sortBy: 'Most Recent',
|
|
114
|
+
};
|
|
115
|
+
this.getAllAssets({params}, true);
|
|
116
|
+
}
|
|
109
117
|
}
|
|
110
118
|
|
|
111
119
|
componentWillUnmount() {
|
|
112
120
|
window.removeEventListener("message", this.handleGallery, false);
|
|
113
121
|
}
|
|
114
122
|
|
|
115
|
-
getAllAssets = ({params, getNextPage, resetPage}) => {
|
|
123
|
+
getAllAssets = ({params, getNextPage, resetPage}, isReRender = false) => {
|
|
116
124
|
let queryParams = params;
|
|
117
125
|
let page = this.state.page;
|
|
118
|
-
if (!this.props.Gallery.fetchingAllAssets && (resetPage || (page === 1 && this.state.totalCount === 0) || page <= (this.state.totalCount / this.state.perPageLimit))) {
|
|
126
|
+
if (!this.props.Gallery.fetchingAllAssets && ((resetPage || (page === 1 && this.state.totalCount === 0) || page <= (this.state.totalCount / this.state.perPageLimit)) || isReRender )) {
|
|
119
127
|
if (getNextPage) {
|
|
120
128
|
page += 1;
|
|
121
129
|
}
|
|
130
|
+
|
|
122
131
|
let totalCount = this.state.totalCount;
|
|
123
132
|
if (resetPage) {
|
|
124
133
|
page = 1;
|
|
@@ -226,17 +235,19 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
226
235
|
uploadImages(e, {files}) {
|
|
227
236
|
e.preventDefault();
|
|
228
237
|
const _URL = window.URL || window.webkitURL;
|
|
229
|
-
const file = files[0];
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
238
|
+
//const file = files[0];
|
|
239
|
+
for (let file in files){
|
|
240
|
+
const img = new Image();
|
|
241
|
+
const that = this;
|
|
242
|
+
img.src = _URL.createObjectURL(files[file]);
|
|
243
|
+
img.onload = function () {
|
|
244
|
+
const fileParams = {
|
|
245
|
+
width: this.width,
|
|
246
|
+
height: this.height,
|
|
247
|
+
};
|
|
248
|
+
that.props.actions.uploadAsset(files[file], 'image', fileParams);
|
|
237
249
|
};
|
|
238
|
-
|
|
239
|
-
};
|
|
250
|
+
}
|
|
240
251
|
}
|
|
241
252
|
|
|
242
253
|
prepareData() {
|
|
@@ -300,7 +311,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
300
311
|
<img style={{maxWidth: '100%', maxHeight: '100%'}} src={this.state.selectedAsset.metaInfo.secure_file_path ? this.state.selectedAsset.metaInfo.secure_file_path : this.state.selectedAsset.metaInfo.public_url} alt={this.state.selectedAsset.name} />
|
|
301
312
|
</div>
|
|
302
313
|
</div>
|
|
303
|
-
<a href={this.state.selectedAsset.metaInfo.public_url} target="_blank" style={{ position: 'fixed', right: '
|
|
314
|
+
<a href={this.state.selectedAsset.metaInfo.public_url} target="_blank" style={{ position: 'fixed', right: '55px', bottom: '18vh' }} ><i className="material-icons" style={{ color: '#2E89DF', cursor: 'pointer' }}>fullscreen</i></a>
|
|
304
315
|
</div>
|
|
305
316
|
<div style={{ fontSize: '14px', color: '#333333', lineHeight: '24px', fontFamily: 'OpenSans', textAlign: 'center', paddingTop: '10px'}}>
|
|
306
317
|
<p style={{marginBottom: '0px'}}><span><FormattedMessage {...messages.dimensions} />: </span> <span>{`${this.state.selectedAsset.metaInfo.width}X${this.state.selectedAsset.metaInfo.height} px`}</span></p>
|
|
@@ -357,7 +368,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
357
368
|
);
|
|
358
369
|
const actionComponents = (
|
|
359
370
|
<form encType="multipart/form-data" id="myForm">
|
|
360
|
-
<input style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files})} accept="image/*" />
|
|
371
|
+
<input style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files})} accept="image/*" multiple/>
|
|
361
372
|
<CapButton type={this.props.location.query.type !== 'embedded' ? 'primary' : 'secondary'} onClick={(e) => this.openFileDialog(e)} style={{float: 'right'}}>
|
|
362
373
|
<FormattedMessage {...messages.upload} />
|
|
363
374
|
</CapButton>
|
|
@@ -367,7 +378,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
367
378
|
|
|
368
379
|
return (
|
|
369
380
|
<div>
|
|
370
|
-
|
|
381
|
+
{/*<Spin spinning={this.props.Gallery.assetUploading || this.props.Gallery.fetchingAllAssets}>*/}
|
|
371
382
|
<Helmet
|
|
372
383
|
title="Gallery"
|
|
373
384
|
/>
|
|
@@ -410,19 +421,21 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
410
421
|
</div>
|
|
411
422
|
</div>
|
|
412
423
|
</div> :
|
|
413
|
-
<
|
|
414
|
-
<
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
424
|
+
<Spin spinning={this.props.Gallery.assetUploading || this.props.Gallery.fetchingAllAssets}>
|
|
425
|
+
<Pagination onPageChange={() => { this.getAllAssets({getNextPage: true}); }} paginationSelector="pagination-container">
|
|
426
|
+
<CardGrid
|
|
427
|
+
listItem={this.prepareData()}
|
|
428
|
+
filterContent={filterContent}
|
|
429
|
+
onHoverItem={this.handleOnHoverItem}
|
|
430
|
+
onItemClick={this.handleOnHoverItem}
|
|
431
|
+
colNumber={this.props.location.query.type === 'embedded' ? 2 : 4}
|
|
432
|
+
enablePagination
|
|
433
|
+
/>
|
|
434
|
+
</Pagination>
|
|
435
|
+
</Spin>
|
|
423
436
|
}
|
|
424
437
|
{this.state.showImagePreviewModal && this.renderAssetPreviewModal()}
|
|
425
|
-
|
|
438
|
+
{/*</Spin>*/}
|
|
426
439
|
</div>
|
|
427
440
|
);
|
|
428
441
|
}
|
|
@@ -50,14 +50,14 @@ function galleryReducer(state = initialState, action) {
|
|
|
50
50
|
case types.DELETE_ASSET_REQUEST:
|
|
51
51
|
return state
|
|
52
52
|
.set('deletingAsset', true)
|
|
53
|
-
.set('assetDeleteError', false);
|
|
53
|
+
.set('assetDeleteError', false).set("itemDeleted", false);
|
|
54
54
|
case types.DELETE_ASSET_SUCCESS:
|
|
55
55
|
return state
|
|
56
|
-
.set('deletingAsset', false);
|
|
56
|
+
.set('deletingAsset', false).set("itemDeleted", true);
|
|
57
57
|
case types.DELETE_ASSET_FAILURE:
|
|
58
58
|
return state
|
|
59
59
|
.set('deletingAsset', false)
|
|
60
|
-
.set('assetDeleteError', true);
|
|
60
|
+
.set('assetDeleteError', true).set("itemDeleted", false);
|
|
61
61
|
case types.GET_USER_LIST_REQUEST:
|
|
62
62
|
return state
|
|
63
63
|
.set('fetchingUserList', true)
|
|
@@ -24,7 +24,7 @@ export function* uploadAsset(file, assetType, fileParams) {
|
|
|
24
24
|
export function* deleteAssetById(assetId, assetType) {
|
|
25
25
|
try {
|
|
26
26
|
const result = yield call(Api.deleteAssetById, assetId, assetType);
|
|
27
|
-
console.log(result);
|
|
27
|
+
console.log({"delete Asset Id": result});
|
|
28
28
|
yield put({ type: types.DELETE_ASSET_SUCCESS, data: result.response });
|
|
29
29
|
} catch (error) {
|
|
30
30
|
yield put({ type: types.DELETE_ASSET_FAILURE, error });
|
|
@@ -239,6 +239,9 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
|
|
|
239
239
|
}
|
|
240
240
|
const result = {};
|
|
241
241
|
result.base = baseData;
|
|
242
|
+
const msgObj = charCount.updateCharCount(baseData['sms-editor']);
|
|
243
|
+
result.base.msg_count = msgObj.msgCount;
|
|
244
|
+
console.log("Message Count", msgObj.msgCount);
|
|
242
245
|
const response = {
|
|
243
246
|
action: "getFormData",
|
|
244
247
|
value: result,
|
|
@@ -89,7 +89,11 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
89
89
|
}
|
|
90
90
|
componentDidMount() {
|
|
91
91
|
if (this.props.location.query && this.props.location.query.module === 'library') {
|
|
92
|
-
this.props.
|
|
92
|
+
if (this.props.params.id) {
|
|
93
|
+
this.props.actions.getTemplateDetails(this.props.params.id);
|
|
94
|
+
} else {
|
|
95
|
+
this.props.actions.setTemplateDetails(this.props.templateData);
|
|
96
|
+
}
|
|
93
97
|
} else {
|
|
94
98
|
this.props.actions.getTemplateDetails(this.props.params.id);
|
|
95
99
|
}
|
|
@@ -279,6 +283,9 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
279
283
|
}
|
|
280
284
|
const result = {};
|
|
281
285
|
result.base = baseData;
|
|
286
|
+
const msgObj = charCount.updateCharCount(baseData['sms-editor']);
|
|
287
|
+
result.base.msg_count = msgObj.msgCount;
|
|
288
|
+
console.log("Message Count", msgObj.msgCount);
|
|
282
289
|
const response = {
|
|
283
290
|
action: "getFormData",
|
|
284
291
|
value: result,
|
|
@@ -64,6 +64,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
64
64
|
showHtmlPreview: false,
|
|
65
65
|
device: 'desktop',
|
|
66
66
|
searchedTemplates: false,
|
|
67
|
+
defaultAccount: true,
|
|
67
68
|
};
|
|
68
69
|
this.handleOnHoverItem = this.handleOnHoverItem.bind(this);
|
|
69
70
|
this.handleOnItemClick = this.handleOnItemClick.bind(this);
|
|
@@ -159,12 +160,14 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
159
160
|
if (nextProps.route.name.toLowerCase() === 'sms') {
|
|
160
161
|
channel = 'Sms';
|
|
161
162
|
} else if (nextProps.route.name.toLowerCase() === 'wechat') {
|
|
163
|
+
this.setState({defaultAccount: true});
|
|
162
164
|
channel = 'wechat';
|
|
163
165
|
nextProps.actions.getWeCrmAccounts();
|
|
164
166
|
} else if (nextProps.route.name.toLowerCase() === 'email') {
|
|
165
167
|
channel = 'Email';
|
|
166
168
|
// this.props.actions.getEdmDefaultTemplates();
|
|
167
169
|
} else if (nextProps.route.name.toLowerCase() === "mobilepush") {
|
|
170
|
+
this.setState({defaultAccount: true});
|
|
168
171
|
channel = "mobilepush";
|
|
169
172
|
nextProps.actions.getWeCrmAccounts(channel);
|
|
170
173
|
} else if (nextProps.route.name.toLowerCase() === 'ebill') {
|
|
@@ -302,12 +305,31 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
302
305
|
if (!_.isEmpty(nextProps.Templates.templateDetails) && !_.isEqual(nextProps.Templates.templateDetails, this.props.Templates.templateDetails)) {
|
|
303
306
|
this.setState({previewTemplate: nextProps.Templates.templateDetails});
|
|
304
307
|
}
|
|
308
|
+
|
|
309
|
+
if (nextProps.Templates.weCrmAccounts !== undefined && nextProps.Templates.weCrmAccounts.length === 1 && this.state.defaultAccount ) {
|
|
310
|
+
const paramsDefault = {
|
|
311
|
+
name: this.state.searchText,
|
|
312
|
+
sortBy: this.state.sortBy,
|
|
313
|
+
};
|
|
314
|
+
if (this.state.channel.toLowerCase() === 'wechat') {
|
|
315
|
+
paramsDefault.wecrmId = nextProps.Templates.weCrmAccounts[0].configs.wecrm_app_id;
|
|
316
|
+
paramsDefault.wecrmToken = nextProps.Templates.weCrmAccounts[0].configs.wecrm_token;
|
|
317
|
+
nextProps.actions.setWeChatAccount(nextProps.Templates.weCrmAccounts[0]);
|
|
318
|
+
this.setState({defaultAccount: false});
|
|
319
|
+
} else if (this.state.channel.toLowerCase() === 'mobilepush') {
|
|
320
|
+
nextProps.actions.setWeChatAccount(nextProps.Templates.weCrmAccounts[0]);
|
|
321
|
+
paramsDefault.accountId = nextProps.Templates.weCrmAccounts[0].id;
|
|
322
|
+
this.setState({defaultAccount: false});
|
|
323
|
+
}
|
|
324
|
+
this.getAllTemplates({params: paramsDefault}, true);
|
|
325
|
+
}
|
|
305
326
|
}
|
|
306
327
|
|
|
307
328
|
componentWillUnmount() {
|
|
308
329
|
console.log('removed listener templates');
|
|
309
330
|
window.removeEventListener("message", this.handleFrameTasks);
|
|
310
331
|
this.props.actions.resetTemplateStoreData();
|
|
332
|
+
// this.setState({defaultAccount: false});
|
|
311
333
|
}
|
|
312
334
|
|
|
313
335
|
onAccountSelect(value, option) {
|
|
@@ -978,7 +1000,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
978
1000
|
console.log('Data Prepare');
|
|
979
1001
|
const imgSrc = template && template.versions && template.versions.base ? template.versions.base.preview_http_url : '';
|
|
980
1002
|
const ifPreviewGenerated = template && template.versions && template.versions.base ? template.versions.base.isPreviewGenerated : 0;
|
|
981
|
-
content = <img src={imgSrc || ''} alt={this.props.intl.formatMessage(messages.previewGenerateText)} />;
|
|
1003
|
+
content = <img src={imgSrc || ''} alt={this.props.intl.formatMessage(messages.previewGenerateText)} width="100%" height="100%"/>;
|
|
982
1004
|
console.log('qwerty template preview', imgSrc, template, ifPreviewGenerated, content);
|
|
983
1005
|
temp.content = (
|
|
984
1006
|
<div
|