@capillarytech/creatives-library 8.0.130 → 8.0.132
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/containers/App/constants.js +1 -0
- package/containers/Login/index.js +1 -2
- package/package.json +1 -1
- package/services/api.js +5 -0
- package/tests/integration/TemplateCreation/TemplateCreation.integration.test.js +8 -3
- package/tests/integration/TemplateCreation/api-response.js +5 -0
- package/tests/integration/TemplateCreation/msw-handler.js +42 -63
- package/utils/common.js +7 -0
- package/utils/commonUtils.js +2 -6
- package/utils/createMobilePushPayload.js +322 -0
- package/utils/tests/createMobilePushPayload.test.js +1054 -0
- package/v2Components/CapDeviceContent/index.js +1 -1
- package/v2Components/CapImageUpload/index.js +57 -44
- package/v2Components/CapInAppCTA/index.js +1 -0
- package/v2Components/CapMpushCTA/constants.js +25 -0
- package/v2Components/CapMpushCTA/index.js +403 -0
- package/v2Components/CapMpushCTA/index.scss +95 -0
- package/v2Components/CapMpushCTA/messages.js +101 -0
- package/v2Components/CapTagList/index.js +178 -121
- package/v2Components/CapVideoUpload/constants.js +3 -0
- package/v2Components/CapVideoUpload/index.js +182 -115
- package/v2Components/CapVideoUpload/messages.js +16 -0
- package/v2Components/Carousel/index.js +15 -13
- package/v2Components/ErrorInfoNote/style.scss +1 -0
- package/v2Components/MobilePushPreviewV2/index.js +57 -12
- package/v2Components/TemplatePreview/_templatePreview.scss +218 -74
- package/v2Components/TemplatePreview/assets/images/Android_With_date_and_time.svg +29 -0
- package/v2Components/TemplatePreview/assets/images/android.svg +9 -0
- package/v2Components/TemplatePreview/assets/images/iOS_With_date_and_time.svg +26 -0
- package/v2Components/TemplatePreview/assets/images/ios.svg +9 -0
- package/v2Components/TemplatePreview/index.js +234 -107
- package/v2Components/TemplatePreview/messages.js +4 -0
- package/v2Components/TemplatePreview/tests/__snapshots__/index.test.js.snap +10 -10
- package/v2Containers/CreativesContainer/SlideBoxContent.js +127 -62
- package/v2Containers/CreativesContainer/index.js +193 -136
- package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +0 -22
- package/v2Containers/InApp/constants.js +1 -0
- package/v2Containers/InApp/index.js +13 -13
- package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +4748 -4658
- package/v2Containers/Login/index.js +1 -2
- package/v2Containers/MobilePush/Create/index.js +1 -0
- package/v2Containers/MobilePush/commonMethods.js +7 -14
- package/v2Containers/MobilePush/tests/commonMethods.test.js +401 -0
- package/v2Containers/MobilePushNew/actions.js +116 -0
- package/v2Containers/MobilePushNew/components/CtaButtons.js +183 -0
- package/v2Containers/MobilePushNew/components/MediaUploaders.js +835 -0
- package/v2Containers/MobilePushNew/components/PlatformContentFields.js +346 -0
- package/v2Containers/MobilePushNew/components/index.js +5 -0
- package/v2Containers/MobilePushNew/components/tests/CtaButtons.test.js +565 -0
- package/v2Containers/MobilePushNew/components/tests/MediaUploaders.test.js +3180 -0
- package/v2Containers/MobilePushNew/components/tests/PlatformContentFields.test.js +654 -0
- package/v2Containers/MobilePushNew/constants.js +116 -0
- package/v2Containers/MobilePushNew/hooks/tests/usePlatformSync.test.js +1462 -0
- package/v2Containers/MobilePushNew/hooks/tests/useUpload.test.js +1459 -0
- package/v2Containers/MobilePushNew/hooks/usePlatformSync.js +366 -0
- package/v2Containers/MobilePushNew/hooks/useUpload.js +740 -0
- package/v2Containers/MobilePushNew/index.js +2158 -0
- package/v2Containers/MobilePushNew/index.scss +308 -0
- package/v2Containers/MobilePushNew/messages.js +272 -0
- package/v2Containers/MobilePushNew/reducer.js +160 -0
- package/v2Containers/MobilePushNew/sagas.js +193 -0
- package/v2Containers/MobilePushNew/selectors.js +55 -0
- package/v2Containers/MobilePushNew/tests/reducer.test.js +741 -0
- package/v2Containers/MobilePushNew/tests/sagas.test.js +864 -0
- package/v2Containers/MobilePushNew/tests/selectors.test.js +665 -0
- package/v2Containers/MobilePushNew/tests/utils.test.js +421 -0
- package/v2Containers/MobilePushNew/utils.js +84 -0
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +1176 -976
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +684 -424
- package/v2Containers/TagList/index.js +56 -10
- package/v2Containers/Templates/_templates.scss +100 -1
- package/v2Containers/Templates/index.js +170 -31
- package/v2Containers/Templates/messages.js +8 -0
- package/v2Containers/Templates/sagas.js +1 -0
- package/v2Containers/Whatsapp/constants.js +1 -0
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +3992 -3677
- package/assets/loading_img.gif +0 -0
|
@@ -13,7 +13,6 @@ import config from '../../config/app';
|
|
|
13
13
|
import LoginForm from './components/LoginForm';
|
|
14
14
|
import * as actions from '../Cap/actions';
|
|
15
15
|
import { UserIsNotAuthenticated } from '../../utils/authWrapper';
|
|
16
|
-
import loaderGif from '../../assets/loading_img.gif';
|
|
17
16
|
const logo = require('./assets/images/capillary_logo.png');
|
|
18
17
|
|
|
19
18
|
export class Login extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
|
@@ -66,7 +65,7 @@ export class Login extends React.Component { // eslint-disable-line react/prefer
|
|
|
66
65
|
? <div className="cap-loader-box">
|
|
67
66
|
<img
|
|
68
67
|
className="loader-image"
|
|
69
|
-
src={
|
|
68
|
+
src={"https://storage.crm.n.content-cdn.io/capillary/capillary_loading_logo.gif"}
|
|
70
69
|
alt="Capillary"/>
|
|
71
70
|
</div>
|
|
72
71
|
: <Col className="login-box" style={{textAlign: 'center'}}>
|
|
@@ -239,6 +239,7 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
|
|
|
239
239
|
onLinkTypeChange = (eventTriggered, formData, field) => {
|
|
240
240
|
let schema = cloneDeep(this.state.schema);
|
|
241
241
|
const inputFields = get(schema, `containers[0].panes[${this.state.currentTab - 1}].sections[0].childSections[0].childSections[0].inputFields`);
|
|
242
|
+
|
|
242
243
|
forEach(inputFields, (inputField, fieldIndex) => {
|
|
243
244
|
if (inputField) {
|
|
244
245
|
forEach(inputField.cols, (col) => {
|
|
@@ -248,20 +248,13 @@ function getLinkTypeFields({inputFieldsArgs, fieldIndex, deepLinkOptions, formDa
|
|
|
248
248
|
}
|
|
249
249
|
|
|
250
250
|
function getContent(obj) {
|
|
251
|
-
const {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
IOS: {
|
|
259
|
-
title: iosTitle,
|
|
260
|
-
message: iosMessage
|
|
261
|
-
} = {}
|
|
262
|
-
} = {}
|
|
263
|
-
} = {}
|
|
264
|
-
} = obj;
|
|
251
|
+
const base = obj?.versions?.base || {};
|
|
252
|
+
const android = base.ANDROID || {};
|
|
253
|
+
const ios = base.IOS || {};
|
|
254
|
+
const androidTitle = android.title || '';
|
|
255
|
+
const androidMessage = android.message || '';
|
|
256
|
+
const iosTitle = ios.title || '';
|
|
257
|
+
const iosMessage = ios.message || '';
|
|
265
258
|
return `${androidTitle} ${androidMessage} ${iosTitle} ${iosMessage}`;
|
|
266
259
|
}
|
|
267
260
|
export {
|
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
import { getContent } from '../commonMethods';
|
|
2
|
+
|
|
3
|
+
describe('commonMethods.js', () => {
|
|
4
|
+
describe('getContent', () => {
|
|
5
|
+
it('should return three spaces for null input', () => {
|
|
6
|
+
const result = getContent(null);
|
|
7
|
+
expect(result).toBe(' ');
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('should return three spaces for undefined input', () => {
|
|
11
|
+
const result = getContent(undefined);
|
|
12
|
+
expect(result).toBe(' ');
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('should return three spaces for empty object', () => {
|
|
16
|
+
const result = getContent({});
|
|
17
|
+
expect(result).toBe(' ');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('should return three spaces for object without versions', () => {
|
|
21
|
+
const result = getContent({ someOtherProperty: 'value' });
|
|
22
|
+
expect(result).toBe(' ');
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('should return three spaces for object with empty versions', () => {
|
|
26
|
+
const result = getContent({ versions: {} });
|
|
27
|
+
expect(result).toBe(' ');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('should return three spaces for object with versions but no base', () => {
|
|
31
|
+
const result = getContent({ versions: { otherVersion: {} } });
|
|
32
|
+
expect(result).toBe(' ');
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('should return three spaces for object with empty base', () => {
|
|
36
|
+
const result = getContent({ versions: { base: {} } });
|
|
37
|
+
expect(result).toBe(' ');
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('should return three spaces for object with base but no platform data', () => {
|
|
41
|
+
const result = getContent({ versions: { base: { otherPlatform: {} } } });
|
|
42
|
+
expect(result).toBe(' ');
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('should return three spaces for object with empty ANDROID and IOS', () => {
|
|
46
|
+
const result = getContent({
|
|
47
|
+
versions: {
|
|
48
|
+
base: {
|
|
49
|
+
ANDROID: {},
|
|
50
|
+
IOS: {},
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
expect(result).toBe(' ');
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('should return only Android title when only Android title is present', () => {
|
|
58
|
+
const result = getContent({
|
|
59
|
+
versions: {
|
|
60
|
+
base: {
|
|
61
|
+
ANDROID: { title: 'Android Title' },
|
|
62
|
+
IOS: {},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
expect(result).toBe('Android Title ');
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('should return only Android message when only Android message is present', () => {
|
|
70
|
+
const result = getContent({
|
|
71
|
+
versions: {
|
|
72
|
+
base: {
|
|
73
|
+
ANDROID: { message: 'Android Message' },
|
|
74
|
+
IOS: {},
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
expect(result).toBe(' Android Message ');
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('should return only iOS title when only iOS title is present', () => {
|
|
82
|
+
const result = getContent({
|
|
83
|
+
versions: {
|
|
84
|
+
base: {
|
|
85
|
+
ANDROID: {},
|
|
86
|
+
IOS: { title: 'iOS Title' },
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
expect(result).toBe(' iOS Title ');
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it('should return only iOS message when only iOS message is present', () => {
|
|
94
|
+
const result = getContent({
|
|
95
|
+
versions: {
|
|
96
|
+
base: {
|
|
97
|
+
ANDROID: {},
|
|
98
|
+
IOS: { message: 'iOS Message' },
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
expect(result).toBe(' iOS Message');
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it('should return Android title and message when both are present', () => {
|
|
106
|
+
const result = getContent({
|
|
107
|
+
versions: {
|
|
108
|
+
base: {
|
|
109
|
+
ANDROID: {
|
|
110
|
+
title: 'Android Title',
|
|
111
|
+
message: 'Android Message',
|
|
112
|
+
},
|
|
113
|
+
IOS: {},
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
expect(result).toBe('Android Title Android Message ');
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
it('should return iOS title and message when both are present', () => {
|
|
121
|
+
const result = getContent({
|
|
122
|
+
versions: {
|
|
123
|
+
base: {
|
|
124
|
+
ANDROID: {},
|
|
125
|
+
IOS: {
|
|
126
|
+
title: 'iOS Title',
|
|
127
|
+
message: 'iOS Message',
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
expect(result).toBe(' iOS Title iOS Message');
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it('should return Android title and iOS message when only those are present', () => {
|
|
136
|
+
const result = getContent({
|
|
137
|
+
versions: {
|
|
138
|
+
base: {
|
|
139
|
+
ANDROID: { title: 'Android Title' },
|
|
140
|
+
IOS: { message: 'iOS Message' },
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
expect(result).toBe('Android Title iOS Message');
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
it('should return Android message and iOS title when only those are present', () => {
|
|
148
|
+
const result = getContent({
|
|
149
|
+
versions: {
|
|
150
|
+
base: {
|
|
151
|
+
ANDROID: { message: 'Android Message' },
|
|
152
|
+
IOS: { title: 'iOS Title' },
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
expect(result).toBe(' Android Message iOS Title ');
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
it('should return all content when all fields are present', () => {
|
|
160
|
+
const result = getContent({
|
|
161
|
+
versions: {
|
|
162
|
+
base: {
|
|
163
|
+
ANDROID: {
|
|
164
|
+
title: 'Android Title',
|
|
165
|
+
message: 'Android Message',
|
|
166
|
+
},
|
|
167
|
+
IOS: {
|
|
168
|
+
title: 'iOS Title',
|
|
169
|
+
message: 'iOS Message',
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
expect(result).toBe('Android Title Android Message iOS Title iOS Message');
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
it('should handle null values in Android object', () => {
|
|
178
|
+
const result = getContent({
|
|
179
|
+
versions: {
|
|
180
|
+
base: {
|
|
181
|
+
ANDROID: {
|
|
182
|
+
title: null,
|
|
183
|
+
message: null,
|
|
184
|
+
},
|
|
185
|
+
IOS: {},
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
expect(result).toBe(' ');
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
it('should handle null values in iOS object', () => {
|
|
193
|
+
const result = getContent({
|
|
194
|
+
versions: {
|
|
195
|
+
base: {
|
|
196
|
+
ANDROID: {},
|
|
197
|
+
IOS: {
|
|
198
|
+
title: null,
|
|
199
|
+
message: null,
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
expect(result).toBe(' ');
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
it('should handle undefined values in Android object', () => {
|
|
208
|
+
const result = getContent({
|
|
209
|
+
versions: {
|
|
210
|
+
base: {
|
|
211
|
+
ANDROID: {
|
|
212
|
+
title: undefined,
|
|
213
|
+
message: undefined,
|
|
214
|
+
},
|
|
215
|
+
IOS: {},
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
});
|
|
219
|
+
expect(result).toBe(' ');
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
it('should handle undefined values in iOS object', () => {
|
|
223
|
+
const result = getContent({
|
|
224
|
+
versions: {
|
|
225
|
+
base: {
|
|
226
|
+
ANDROID: {},
|
|
227
|
+
IOS: {
|
|
228
|
+
title: undefined,
|
|
229
|
+
message: undefined,
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
expect(result).toBe(' ');
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
it('should handle mixed null and defined values', () => {
|
|
238
|
+
const result = getContent({
|
|
239
|
+
versions: {
|
|
240
|
+
base: {
|
|
241
|
+
ANDROID: {
|
|
242
|
+
title: 'Android Title',
|
|
243
|
+
message: null,
|
|
244
|
+
},
|
|
245
|
+
IOS: {
|
|
246
|
+
title: null,
|
|
247
|
+
message: 'iOS Message',
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
});
|
|
252
|
+
expect(result).toBe('Android Title iOS Message');
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
it('should handle empty string values', () => {
|
|
256
|
+
const result = getContent({
|
|
257
|
+
versions: {
|
|
258
|
+
base: {
|
|
259
|
+
ANDROID: {
|
|
260
|
+
title: '',
|
|
261
|
+
message: '',
|
|
262
|
+
},
|
|
263
|
+
IOS: {
|
|
264
|
+
title: '',
|
|
265
|
+
message: '',
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
expect(result).toBe(' ');
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
it('should handle whitespace-only values', () => {
|
|
274
|
+
const result = getContent({
|
|
275
|
+
versions: {
|
|
276
|
+
base: {
|
|
277
|
+
ANDROID: {
|
|
278
|
+
title: ' ',
|
|
279
|
+
message: ' ',
|
|
280
|
+
},
|
|
281
|
+
IOS: {
|
|
282
|
+
title: ' ',
|
|
283
|
+
message: ' ',
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
});
|
|
288
|
+
expect(result).toBe(' ');
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
it('should handle special characters in content', () => {
|
|
292
|
+
const result = getContent({
|
|
293
|
+
versions: {
|
|
294
|
+
base: {
|
|
295
|
+
ANDROID: {
|
|
296
|
+
title: 'Android & Title',
|
|
297
|
+
message: 'Android "Message"',
|
|
298
|
+
},
|
|
299
|
+
IOS: {
|
|
300
|
+
title: 'iOS <Title>',
|
|
301
|
+
message: 'iOS \'Message\'',
|
|
302
|
+
},
|
|
303
|
+
},
|
|
304
|
+
},
|
|
305
|
+
});
|
|
306
|
+
expect(result).toBe('Android & Title Android "Message" iOS <Title> iOS \'Message\'');
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
it('should handle numbers as content', () => {
|
|
310
|
+
const result = getContent({
|
|
311
|
+
versions: {
|
|
312
|
+
base: {
|
|
313
|
+
ANDROID: {
|
|
314
|
+
title: 123,
|
|
315
|
+
message: 456,
|
|
316
|
+
},
|
|
317
|
+
IOS: {
|
|
318
|
+
title: 789,
|
|
319
|
+
message: 0,
|
|
320
|
+
},
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
});
|
|
324
|
+
expect(result).toBe('123 456 789 ');
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
it('should handle boolean values as content', () => {
|
|
328
|
+
const result = getContent({
|
|
329
|
+
versions: {
|
|
330
|
+
base: {
|
|
331
|
+
ANDROID: {
|
|
332
|
+
title: true,
|
|
333
|
+
message: false,
|
|
334
|
+
},
|
|
335
|
+
IOS: {
|
|
336
|
+
title: false,
|
|
337
|
+
message: true,
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
},
|
|
341
|
+
});
|
|
342
|
+
expect(result).toBe('true true');
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
it('should handle object with only Android platform', () => {
|
|
346
|
+
const result = getContent({
|
|
347
|
+
versions: {
|
|
348
|
+
base: {
|
|
349
|
+
ANDROID: {
|
|
350
|
+
title: 'Android Only Title',
|
|
351
|
+
message: 'Android Only Message',
|
|
352
|
+
},
|
|
353
|
+
},
|
|
354
|
+
},
|
|
355
|
+
});
|
|
356
|
+
expect(result).toBe('Android Only Title Android Only Message ');
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
it('should handle object with only iOS platform', () => {
|
|
360
|
+
const result = getContent({
|
|
361
|
+
versions: {
|
|
362
|
+
base: {
|
|
363
|
+
IOS: {
|
|
364
|
+
title: 'iOS Only Title',
|
|
365
|
+
message: 'iOS Only Message',
|
|
366
|
+
},
|
|
367
|
+
},
|
|
368
|
+
},
|
|
369
|
+
});
|
|
370
|
+
expect(result).toBe(' iOS Only Title iOS Only Message');
|
|
371
|
+
});
|
|
372
|
+
|
|
373
|
+
it('should handle nested object structure with additional properties', () => {
|
|
374
|
+
const result = getContent({
|
|
375
|
+
versions: {
|
|
376
|
+
base: {
|
|
377
|
+
ANDROID: {
|
|
378
|
+
title: 'Android Title',
|
|
379
|
+
message: 'Android Message',
|
|
380
|
+
extraProperty: 'should be ignored',
|
|
381
|
+
},
|
|
382
|
+
IOS: {
|
|
383
|
+
title: 'iOS Title',
|
|
384
|
+
message: 'iOS Message',
|
|
385
|
+
anotherProperty: 'should also be ignored',
|
|
386
|
+
},
|
|
387
|
+
OTHER_PLATFORM: {
|
|
388
|
+
title: 'Other Title',
|
|
389
|
+
message: 'Other Message',
|
|
390
|
+
},
|
|
391
|
+
},
|
|
392
|
+
otherVersion: {
|
|
393
|
+
ANDROID: { title: 'Other Version Title' },
|
|
394
|
+
},
|
|
395
|
+
},
|
|
396
|
+
otherProperty: 'should be ignored',
|
|
397
|
+
});
|
|
398
|
+
expect(result).toBe('Android Title Android Message iOS Title iOS Message');
|
|
399
|
+
});
|
|
400
|
+
});
|
|
401
|
+
});
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/*
|
|
2
|
+
*
|
|
3
|
+
* Create actions
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import * as types from './constants';
|
|
8
|
+
|
|
9
|
+
export function createTemplate(template, callback) {
|
|
10
|
+
return {
|
|
11
|
+
type: types.CREATE_TEMPLATE_REQUEST,
|
|
12
|
+
template,
|
|
13
|
+
callback,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function clearCreateResponse() {
|
|
18
|
+
return {
|
|
19
|
+
type: types.CLEAR_CREATE_RESPONSE_REQUEST,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function defaultAction() {
|
|
24
|
+
return {
|
|
25
|
+
type: types.DEFAULT_ACTION,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function uploadAsset(file, assetType, fileParams, index = 0, mobilePushParams = {}) {
|
|
30
|
+
return {
|
|
31
|
+
type: types.UPLOAD_ASSET_REQUEST,
|
|
32
|
+
file,
|
|
33
|
+
assetType,
|
|
34
|
+
fileParams,
|
|
35
|
+
index,
|
|
36
|
+
mobilePushParams,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function getIosCtas(licenseCode) {
|
|
41
|
+
return {
|
|
42
|
+
type: types.GET_IOS_CTAS, licenseCode,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function clearAsset(index = undefined) {
|
|
47
|
+
return {
|
|
48
|
+
type: types.CLEAR_ASSET,
|
|
49
|
+
index,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function resetStore() {
|
|
54
|
+
return {
|
|
55
|
+
type: types.RESET_STORE,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function getTemplateDetails(id) {
|
|
60
|
+
return {
|
|
61
|
+
type: types.GET_TEMPLATE_DETAILS_REQUEST, id,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function editTemplate(template, callback) {
|
|
66
|
+
return {
|
|
67
|
+
type: types.EDIT_TEMPLATE_REQUEST, template, callback,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export function clearEditResponse() {
|
|
72
|
+
return {
|
|
73
|
+
type: types.CLEAR_EDIT_RESPONSE_REQUEST,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export function clearData() {
|
|
78
|
+
return {
|
|
79
|
+
type: types.CLEAR_DATA,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export function getWeCrmAccounts(source) {
|
|
84
|
+
return {
|
|
85
|
+
type: types.GET_WECRM_ACCOUNTS_REQUEST, source,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function setWeChatAccount(weChatAccount) {
|
|
90
|
+
return {
|
|
91
|
+
type: types.SET_WECHAT_ACCOUNT,
|
|
92
|
+
weChatAccount,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function getMobilepushTemplatesList(channel, queryParams) {
|
|
97
|
+
return {
|
|
98
|
+
type: types.GET_MOBILEPUSH_TEMPLATES_LIST_REQUEST,
|
|
99
|
+
channel,
|
|
100
|
+
queryParams,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export function setSelectedTemplate(templateData) {
|
|
105
|
+
return {
|
|
106
|
+
type: types.SET_SELECTED_TEMPLATE,
|
|
107
|
+
data: templateData,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function setTemplateDetails(templateDetails) {
|
|
112
|
+
return {
|
|
113
|
+
type: types.GET_TEMPLATE_DETAILS_SUCCESS,
|
|
114
|
+
data: templateDetails,
|
|
115
|
+
};
|
|
116
|
+
}
|