@capillarytech/creatives-library 8.0.136-alpha.4 → 8.0.136-beta.3

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 (292) hide show
  1. package/components/BreadCrumbs/index.js +65 -0
  2. package/components/BreadCrumbs/messages.js +13 -0
  3. package/components/CapTagList/index.js +235 -0
  4. package/components/CapTagList/messages.js +45 -0
  5. package/components/Card/_customCard.scss +40 -0
  6. package/components/Card/index.js +78 -0
  7. package/components/Card/tests/__snapshots__/index.test.js.snap +22 -0
  8. package/components/Card/tests/index.test.js +20 -0
  9. package/components/CardGrid/index.js +71 -0
  10. package/components/Ckeditor/index.js +238 -0
  11. package/components/Ckeditor/messages.js +13 -0
  12. package/components/Ckeditor/style.scss +3 -0
  13. package/components/Component/index.js +29 -0
  14. package/components/CustomPopOver/index.js +81 -0
  15. package/components/CustomPopOver/messages.js +17 -0
  16. package/components/DateFilter/index.js +349 -0
  17. package/components/DateFilter/messages.js +57 -0
  18. package/components/DateRange/index.js +114 -0
  19. package/components/DateRange/messages.js +25 -0
  20. package/components/Edmeditor/index.js +65 -0
  21. package/components/Edmeditor/messages.js +13 -0
  22. package/components/EmailPreview/_emailPreview.scss +119 -0
  23. package/components/EmailPreview/assets/images/iPad.svg +10 -0
  24. package/components/EmailPreview/assets/images/mobile.png +0 -0
  25. package/components/EmailPreview/index.js +107 -0
  26. package/components/EmailPreview/messages.js +33 -0
  27. package/components/Footer/index.js +27 -0
  28. package/components/Footer/messages.js +13 -0
  29. package/components/FormBuilder/_formBuilder.scss +83 -0
  30. package/components/FormBuilder/index.js +3279 -0
  31. package/components/FormBuilder/messages.js +61 -0
  32. package/components/Header/index.js +44 -0
  33. package/components/Header/messages.js +29 -0
  34. package/components/ImagePreview/_imagePreview.scss +63 -0
  35. package/components/ImagePreview/index.js +52 -0
  36. package/components/ImagePreview/messages.js +17 -0
  37. package/components/PageHeader/_pageHeader.scss +22 -0
  38. package/components/PageHeader/index.js +37 -0
  39. package/components/PageHeader/messages.js +13 -0
  40. package/components/Pagination/_pagination.scss +5 -0
  41. package/components/Pagination/index.js +49 -0
  42. package/components/PreviewSideBar/_previewsidebar.scss +28 -0
  43. package/components/PreviewSideBar/index.js +152 -0
  44. package/components/PreviewSideBar/messages.js +41 -0
  45. package/components/Sidebar/_sidebar.scss +115 -0
  46. package/components/Sidebar/index.js +214 -0
  47. package/components/Sidebar/messages.js +21 -0
  48. package/components/SlideBox/_slideBox.scss +63 -0
  49. package/components/SlideBox/index.js +47 -0
  50. package/components/SlideBox/tests/index.test.js +103 -0
  51. package/components/SmsEditor/index.js +55 -0
  52. package/components/SmsTest/index.js +117 -0
  53. package/components/SmsTest/messages.js +21 -0
  54. package/components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +42 -0
  55. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +141 -0
  56. package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +21 -0
  57. package/components/TemplatePreview/_templatePreview.scss +642 -0
  58. package/components/TemplatePreview/assets/images/WECHAT_5x.png +0 -0
  59. package/components/TemplatePreview/assets/images/androidPushMessage.svg +45 -0
  60. package/components/TemplatePreview/assets/images/home-screen-android.svg +21 -0
  61. package/components/TemplatePreview/assets/images/home-screen-ios.svg +16 -0
  62. package/components/TemplatePreview/assets/images/iPhonePushMessage.svg +135 -0
  63. package/components/TemplatePreview/assets/images/mobile.svg +24 -0
  64. package/components/TemplatePreview/assets/images/sms-body.png +0 -0
  65. package/components/TemplatePreview/assets/images/sms-icon.png +0 -0
  66. package/components/TemplatePreview/assets/images/sms_mobile.png +0 -0
  67. package/components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -0
  68. package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +16 -0
  69. package/components/TemplatePreview/assets/images/user-icon.svg +19 -0
  70. package/components/TemplatePreview/assets/images/wechat-mobile.svg +78 -0
  71. package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -0
  72. package/components/TemplatePreview/index.js +617 -0
  73. package/components/TemplatePreview/messages.js +78 -0
  74. package/components/Toastr/index.js +60 -0
  75. package/components/Toastr/messages.js +13 -0
  76. package/components/ToastrMessage/index.js +113 -0
  77. package/components/ToastrMessage/messages.js +17 -0
  78. package/components/TopBar/_topbar.scss +46 -0
  79. package/components/TopBar/assets/images/capillary_logo.png +0 -0
  80. package/components/TopBar/assets/images/old_capillary_logo.png +0 -0
  81. package/components/TopBar/index.js +113 -0
  82. package/components/TopBar/messages.js +29 -0
  83. package/containers/App/actions.js +7 -0
  84. package/containers/App/constants.js +114 -0
  85. package/containers/App/index.js +52 -0
  86. package/containers/App/reducer.js +19 -0
  87. package/containers/App/sagas.js +31 -0
  88. package/containers/App/selectors.js +25 -0
  89. package/containers/App/test/saga.test.js +11 -0
  90. package/containers/Assets/Gallery/_gallery.scss +126 -0
  91. package/containers/Assets/Gallery/actions.js +37 -0
  92. package/containers/Assets/Gallery/constants.js +23 -0
  93. package/containers/Assets/Gallery/index.js +473 -0
  94. package/containers/Assets/Gallery/messages.js +93 -0
  95. package/containers/Assets/Gallery/reducer.js +81 -0
  96. package/containers/Assets/Gallery/sagas.js +80 -0
  97. package/containers/Assets/Gallery/selectors.js +25 -0
  98. package/containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +9 -0
  99. package/containers/Assets/Gallery/tests/actions.test.js +25 -0
  100. package/containers/Assets/Gallery/tests/reducer.test.js +96 -0
  101. package/containers/Assets/Gallery/tests/saga.test.js +157 -0
  102. package/containers/Cap/actions.js +66 -0
  103. package/containers/Cap/constants.js +25 -0
  104. package/containers/Cap/index.js +402 -0
  105. package/containers/Cap/messages.js +75 -0
  106. package/containers/Cap/reducer.js +113 -0
  107. package/containers/Cap/sagas.js +159 -0
  108. package/containers/Cap/selectors.js +75 -0
  109. package/containers/Cap/tests/__snapshots__/index.test.js.snap +2269 -0
  110. package/containers/Cap/tests/index.test.js +22 -0
  111. package/containers/Cap/tests/saga.test.js +284 -0
  112. package/containers/Dashboard/actions.js +15 -0
  113. package/containers/Dashboard/constants.js +7 -0
  114. package/containers/Dashboard/index.js +76 -0
  115. package/containers/Dashboard/messages.js +13 -0
  116. package/containers/Dashboard/reducer.js +21 -0
  117. package/containers/Dashboard/sagas.js +17 -0
  118. package/containers/Dashboard/selectors.js +25 -0
  119. package/containers/Dashboard/test/saga.test.js +9 -0
  120. package/containers/Ebill/_ebill.scss +5 -0
  121. package/containers/Ebill/actions.js +43 -0
  122. package/containers/Ebill/constants.js +20 -0
  123. package/containers/Ebill/index.js +1278 -0
  124. package/containers/Ebill/messages.js +77 -0
  125. package/containers/Ebill/reducer.js +72 -0
  126. package/containers/Ebill/sagas.js +74 -0
  127. package/containers/Ebill/selectors.js +25 -0
  128. package/containers/Ebill/test/saga.test.js +11 -0
  129. package/containers/Email/_email.scss +141 -0
  130. package/containers/Email/actions.js +81 -0
  131. package/containers/Email/constants.js +36 -0
  132. package/containers/Email/index.js +3325 -0
  133. package/containers/Email/messages.js +289 -0
  134. package/containers/Email/reducer.js +142 -0
  135. package/containers/Email/sagas.js +135 -0
  136. package/containers/Email/selectors.js +31 -0
  137. package/containers/Email/test/saga.test.js +671 -0
  138. package/containers/LanguageProvider/actions.js +17 -0
  139. package/containers/LanguageProvider/constants.js +8 -0
  140. package/containers/LanguageProvider/index.js +80 -0
  141. package/containers/LanguageProvider/reducer.js +30 -0
  142. package/containers/LanguageProvider/selectors.js +20 -0
  143. package/containers/LanguageProvider/tests/actions.test.js +19 -0
  144. package/containers/LanguageProvider/tests/index.test.js +78 -0
  145. package/containers/LanguageProvider/tests/reducer.test.js +20 -0
  146. package/containers/LanguageProvider/tests/selectors.test.js +15 -0
  147. package/containers/Line/Create/_lineCreate.scss +54 -0
  148. package/containers/Line/Create/actions.js +90 -0
  149. package/containers/Line/Create/constants.js +39 -0
  150. package/containers/Line/Create/index.js +836 -0
  151. package/containers/Line/Create/messages.js +189 -0
  152. package/containers/Line/Create/reducer.js +99 -0
  153. package/containers/Line/Create/sagas.js +121 -0
  154. package/containers/Line/Create/selectors.js +36 -0
  155. package/containers/Line/Create/tests/saga.test.js +202 -0
  156. package/containers/Line/Edit/_lineEdit.scss +35 -0
  157. package/containers/Line/Edit/actions.js +79 -0
  158. package/containers/Line/Edit/constants.js +27 -0
  159. package/containers/Line/Edit/index.js +1050 -0
  160. package/containers/Line/Edit/messages.js +177 -0
  161. package/containers/Line/Edit/reducer.js +83 -0
  162. package/containers/Line/Edit/sagas.js +80 -0
  163. package/containers/Line/Edit/selectors.js +29 -0
  164. package/containers/Line/Edit/test/saga.test.js +160 -0
  165. package/containers/Login/assets/images/capillary_logo.png +0 -0
  166. package/containers/Login/components/LoginForm/index.js +62 -0
  167. package/containers/Login/components/LoginForm/messages.js +33 -0
  168. package/containers/Login/index.js +130 -0
  169. package/containers/Login/messages.js +25 -0
  170. package/containers/Login/selectors.js +25 -0
  171. package/containers/MobilePush/Create/_mobilePushCreate.scss +39 -0
  172. package/containers/MobilePush/Create/actions.js +46 -0
  173. package/containers/MobilePush/Create/constants.js +23 -0
  174. package/containers/MobilePush/Create/index.js +2303 -0
  175. package/containers/MobilePush/Create/messages.js +269 -0
  176. package/containers/MobilePush/Create/reducer.js +70 -0
  177. package/containers/MobilePush/Create/sagas.js +74 -0
  178. package/containers/MobilePush/Create/selectors.js +28 -0
  179. package/containers/MobilePush/Create/test/saga.test.js +19 -0
  180. package/containers/MobilePush/Edit/_mobilePushCreate.scss +39 -0
  181. package/containers/MobilePush/Edit/actions.js +91 -0
  182. package/containers/MobilePush/Edit/constants.js +35 -0
  183. package/containers/MobilePush/Edit/index.js +2601 -0
  184. package/containers/MobilePush/Edit/messages.js +266 -0
  185. package/containers/MobilePush/Edit/reducer.js +112 -0
  186. package/containers/MobilePush/Edit/sagas.js +126 -0
  187. package/containers/MobilePush/Edit/selectors.js +29 -0
  188. package/containers/MobilePush/Edit/tests/saga.test.js +255 -0
  189. package/containers/NotFoundPage/index.js +25 -0
  190. package/containers/NotFoundPage/messages.js +13 -0
  191. package/containers/NotFoundPage/tests/index.test.js +17 -0
  192. package/containers/Sms/Create/_smsCreate.scss +42 -0
  193. package/containers/Sms/Create/actions.js +27 -0
  194. package/containers/Sms/Create/constants.js +16 -0
  195. package/containers/Sms/Create/index.js +1488 -0
  196. package/containers/Sms/Create/messages.js +109 -0
  197. package/containers/Sms/Create/reducer.js +41 -0
  198. package/containers/Sms/Create/sagas.js +40 -0
  199. package/containers/Sms/Create/selectors.js +28 -0
  200. package/containers/Sms/Create/test/saga.test.js +11 -0
  201. package/containers/Sms/Edit/actions.js +40 -0
  202. package/containers/Sms/Edit/constants.js +17 -0
  203. package/containers/Sms/Edit/index.js +1472 -0
  204. package/containers/Sms/Edit/messages.js +105 -0
  205. package/containers/Sms/Edit/reducer.js +50 -0
  206. package/containers/Sms/Edit/sagas.js +60 -0
  207. package/containers/Sms/Edit/selectors.js +32 -0
  208. package/containers/Sms/Edit/test/saga.test.js +13 -0
  209. package/containers/TagList/_tagList.scss +8 -0
  210. package/containers/TagList/actions.js +15 -0
  211. package/containers/TagList/constants.js +32 -0
  212. package/containers/TagList/index.js +236 -0
  213. package/containers/TagList/messages.js +13 -0
  214. package/containers/TagList/reducer.js +23 -0
  215. package/containers/TagList/sagas.js +11 -0
  216. package/containers/TagList/selectors.js +25 -0
  217. package/containers/Templates/_templates.scss +333 -0
  218. package/containers/Templates/actions.js +103 -0
  219. package/containers/Templates/constants.js +60 -0
  220. package/containers/Templates/index.js +1756 -0
  221. package/containers/Templates/messages.js +337 -0
  222. package/containers/Templates/reducer.js +142 -0
  223. package/containers/Templates/sagas.js +163 -0
  224. package/containers/Templates/selectors.js +28 -0
  225. package/containers/Templates/test/saga.test.js +241 -0
  226. package/containers/WeChat/MapTemplates/_mapTemplates.scss +8 -0
  227. package/containers/WeChat/MapTemplates/actions.js +52 -0
  228. package/containers/WeChat/MapTemplates/constants.js +28 -0
  229. package/containers/WeChat/MapTemplates/index.js +1610 -0
  230. package/containers/WeChat/MapTemplates/messages.js +157 -0
  231. package/containers/WeChat/MapTemplates/reducer.js +74 -0
  232. package/containers/WeChat/MapTemplates/sagas.js +84 -0
  233. package/containers/WeChat/MapTemplates/selectors.js +25 -0
  234. package/containers/WeChat/MapTemplates/test/saga.test.js +155 -0
  235. package/containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +57 -0
  236. package/containers/WeChat/RichmediaTemplates/Create/actions.js +36 -0
  237. package/containers/WeChat/RichmediaTemplates/Create/constants.js +15 -0
  238. package/containers/WeChat/RichmediaTemplates/Create/index.js +1071 -0
  239. package/containers/WeChat/RichmediaTemplates/Create/messages.js +165 -0
  240. package/containers/WeChat/RichmediaTemplates/Create/reducer.js +60 -0
  241. package/containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +497 -0
  242. package/containers/WeChat/RichmediaTemplates/Create/sagas.js +51 -0
  243. package/containers/WeChat/RichmediaTemplates/Create/selectors.js +37 -0
  244. package/containers/WeChat/RichmediaTemplates/Create/test/saga.test.js +13 -0
  245. package/containers/WeChat/RichmediaTemplates/Edit/actions.js +20 -0
  246. package/containers/WeChat/RichmediaTemplates/Edit/constants.js +10 -0
  247. package/containers/WeChat/RichmediaTemplates/Edit/index.js +136 -0
  248. package/containers/WeChat/RichmediaTemplates/Edit/messages.js +13 -0
  249. package/containers/WeChat/RichmediaTemplates/Edit/reducer.js +28 -0
  250. package/containers/WeChat/RichmediaTemplates/Edit/sagas.js +36 -0
  251. package/containers/WeChat/RichmediaTemplates/Edit/selectors.js +30 -0
  252. package/containers/WeChat/RichmediaTemplates/Edit/test/saga.test.js +12 -0
  253. package/containers/WeChat/RichmediaTemplates/View/actions.js +15 -0
  254. package/containers/WeChat/RichmediaTemplates/View/constants.js +7 -0
  255. package/containers/WeChat/RichmediaTemplates/View/index.js +47 -0
  256. package/containers/WeChat/RichmediaTemplates/View/messages.js +21 -0
  257. package/containers/WeChat/RichmediaTemplates/View/reducer.js +23 -0
  258. package/containers/WeChat/RichmediaTemplates/View/sagas.js +11 -0
  259. package/containers/WeChat/RichmediaTemplates/View/selectors.js +25 -0
  260. package/index.js +2 -4
  261. package/package.json +1 -1
  262. package/routes.js +202 -136
  263. package/services/getSchema.js +1 -1
  264. package/services/localStorageApi.js +0 -1
  265. package/tests/i18n.test.js +1 -1
  266. package/utils/asyncInjectors.js +78 -0
  267. package/utils/authWrapper.js +1 -1
  268. package/utils/callNativeEvent.js +16 -0
  269. package/utils/checkStore.js +21 -0
  270. package/utils/common.js +2 -2
  271. package/utils/customAuthWrapper.js +62 -0
  272. package/utils/customConnectedAuthWrapper.js +26 -0
  273. package/utils/tagValidations.js +1 -1
  274. package/utils/tests/checkStore.test.js +1 -1
  275. package/utils/tests/customAuth.test.js +1 -1
  276. package/utils/transformerUtils.js +195 -1
  277. package/v2Components/CapTagList/index.js +14 -9
  278. package/v2Components/Carousel/style.scss +1 -1
  279. package/v2Components/EmailMobilePreview/index.js +2 -2
  280. package/v2Components/FormBuilder/index.js +2 -2
  281. package/v2Components/TemplatePreview/index.js +1 -2
  282. package/v2Containers/Cap/tests/saga.test.js +1 -1
  283. package/v2Containers/Email/index.js +1 -1
  284. package/v2Containers/FTP/index.js +1 -1
  285. package/v2Containers/Line/Container/Text/index.js +6 -6
  286. package/v2Containers/Sms/Create/index.js +2 -2
  287. package/v2Containers/Sms/Edit/index.js +1 -1
  288. package/v2Containers/TagList/index.js +1 -1
  289. package/v2Containers/TagList/utils.js +1 -1
  290. package/v2Containers/Templates/index.js +1 -1
  291. package/v2Containers/Templates/sagas.js +1 -1
  292. package/constants/unified.js +0 -189
@@ -0,0 +1,177 @@
1
+ /*
2
+ * Edit Messages
3
+ *
4
+ * This contains all the text for the Edit component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ "imageUploadLabel": {
10
+ id: 'creatives.containers.Line.Edit.ImageUploadLabel',
11
+ defaultMessage: 'Upload image',
12
+ },
13
+ "Enter template name*": {
14
+ id: 'creatives.containers.Line.Edit.enterTemplateNameImportant',
15
+ defaultMessage: 'Enter template name*',
16
+ },
17
+ "Enter template name": {
18
+ id: 'creatives.containers.Line.Edit.enterTemplateName',
19
+ defaultMessage: 'Enter template name',
20
+ },
21
+ "Template name cannot be empty": {
22
+ id: 'creatives.containers.Line.Edit.templateCantEmpty',
23
+ defaultMessage: 'Template name cannot be empty',
24
+ },
25
+ "Discard Changes": {
26
+ id: 'creatives.containers.Line.Edit.discardChanges',
27
+ defaultMessage: 'Discard changes',
28
+ },
29
+ "Cancel": {
30
+ id: 'creatives.containers.Line.Edit.cancel',
31
+ defaultMessage: 'Cancel',
32
+ },
33
+ "Save": {
34
+ id: 'creatives.containers.Line.Edit.save',
35
+ defaultMessage: 'Save',
36
+ },
37
+ "Select Line Template": {
38
+ id: 'creatives.containers.Line.Edit.selectLineTemplate',
39
+ defaultMessage: 'Select line template',
40
+ },
41
+ "Template": {
42
+ id: 'creatives.containers.Line.Edit.template',
43
+ defaultMessage: 'Template',
44
+ },
45
+ "Title*": {
46
+ id: 'creatives.containers.Line.Edit.titleLabel',
47
+ defaultMessage: 'Title*',
48
+ },
49
+ "Title": {
50
+ id: 'creatives.containers.Line.Edit.title',
51
+ defaultMessage: 'Title',
52
+ },
53
+ "Please input message title name.": {
54
+ id: 'creatives.containers.Line.Edit.titleNameInvalid',
55
+ defaultMessage: 'Please enter the message title',
56
+ },
57
+ "Template message has unsupported/missing tags!": {
58
+ id: 'creatives.containers.Line.Edit.messageHasUnsupportedTag',
59
+ defaultMessage: 'Please check the message content for unsupported/missing tags',
60
+ },
61
+ "Tags": {
62
+ id: 'creatives.containers.Line.Edit.Tags',
63
+ defaultMessage: 'Tags',
64
+ },
65
+ "Message*": {
66
+ id: 'creatives.containers.Line.Edit.messageLabel',
67
+ defaultMessage: 'Message*',
68
+ },
69
+ "Message": {
70
+ id: 'creatives.containers.Line.Edit.message',
71
+ defaultMessage: 'Message',
72
+ },
73
+ "Please input mobile push template content.": {
74
+ id: 'creatives.containers.Line.Edit.inputLineTemplateContent',
75
+ defaultMessage: 'Please enter the message content',
76
+ },
77
+ "Template title has unsupported/missing tags.": {
78
+ id: 'creatives.containers.Line.Edit.titleHasUnsupportedTag',
79
+ defaultMessage: 'Please check the message content for unsupported/missing tags',
80
+ },
81
+ "Template name cannot be empty.": {
82
+ id: 'creatives.containers.Line.Edit.templateNameNotEmpty',
83
+ defaultMessage: 'Please provide a template name ',
84
+ },
85
+ "Message title has unsupported/missing tags!": {
86
+ id: 'creatives.containers.Line.Edit.messageTitleWithUnsupportedTag',
87
+ defaultMessage: 'Please check the message content for unsupported/missing tags',
88
+ },
89
+ "Image": {
90
+ id: 'creatives.containers.Line.Edit.Image',
91
+ defaultMessage: 'Image',
92
+ },
93
+ "Max file size acceptable is 5mb": {
94
+ id: 'creatives.containers.Line.Edit.maxUploadFileSize',
95
+ defaultMessage: 'Max file size acceptable is 5mb',
96
+ },
97
+ "Please upload Image": {
98
+ id: 'creatives.containers.Line.Edit.pleaseUploadImage',
99
+ defaultMessage: 'Please upload image',
100
+ },
101
+ "Upload Image": {
102
+ id: 'creatives.containers.Line.Edit.uploadImage',
103
+ defaultMessage: 'Upload image',
104
+ },
105
+ "Line Template Edited Successfully": {
106
+ id: 'creatives.containers.Line.Edit.templateEditedSuccessfully',
107
+ defaultMessage: 'Line template edited successfully',
108
+ },
109
+ "somethingWentWrong": {
110
+ id: 'creatives.containers.Line.Edit.somethingWentWrong',
111
+ defaultMessage: 'Something went wrong!!',
112
+ },
113
+ "goBackConfirmation": {
114
+ id: 'creatives.containers.Line.Edit.goBackConfirmation',
115
+ defaultMessage: "Going back will discard all the changes you've made. Continue?",
116
+ },
117
+ "alertMessage": {
118
+ id: 'creatives.containers.Line.Edit.alertMessage',
119
+ defaultMessage: "Alert",
120
+ },
121
+ "Name and Description": {
122
+ id: 'creatives.containers.Line.Edit.nameAndDescription',
123
+ defaultMessage: 'Name and description',
124
+ },
125
+ "Button 1": {
126
+ id: 'creatives.containers.Line.Edit.button1',
127
+ defaultMessage: 'Button 1',
128
+ },
129
+ "Button 2": {
130
+ id: 'creatives.containers.Line.Edit.button2',
131
+ defaultMessage: 'Button 2',
132
+ },
133
+ "File size cannot be more than 5mb": {
134
+ id: 'creatives.containers.Line.Edit.uploadFileSizeError',
135
+ defaultMessage: 'File size cannot be more than 5mb',
136
+ },
137
+ "value cannot be empty.": {
138
+ id: 'creatives.containers.Line.Edit.valueCantEmpty',
139
+ defaultMessage: 'value cannot be empty.',
140
+ },
141
+ "Uploading Image...": {
142
+ id: 'creatives.containers.Line.Edit.uploadingImage',
143
+ defaultMessage: 'Uploading image...',
144
+ },
145
+ "Campaigns": {
146
+ id: 'creatives.containers.Line.Edit.Campaigns',
147
+ defaultMessage: 'Campaigns',
148
+ },
149
+ "Creatives": {
150
+ id: 'creatives.containers.Line.Edit.Creatives',
151
+ defaultMessage: 'Creatives',
152
+ },
153
+ "Line": {
154
+ id: 'creatives.containers.Line.Edit.mobilePush',
155
+ defaultMessage: 'Mobile Push',
156
+ },
157
+ "template not configured,": {
158
+ id: 'creatives.containers.Line.Edit.templateNotConfigured',
159
+ defaultMessage: 'template not configured,',
160
+ },
161
+ "androidNotConfigured": {
162
+ id: 'creatives.containers.Line.Edit.androidNotConfigured',
163
+ defaultMessage: 'Android template is not configured. Save without Android template',
164
+ },
165
+ "iosNotConfigured": {
166
+ id: 'creatives.containers.Line.Edit.iosNotConfigured',
167
+ defaultMessage: 'IOS template is not configured, Save without IOS template',
168
+ },
169
+ "savingTemplate": {
170
+ id: 'creatives.containers.Line.Edit.savingTemplate',
171
+ defaultMessage: "Saving Template...",
172
+ },
173
+ "gettingTemplate": {
174
+ id: 'creatives.containers.Line.Create.gettingTemplate',
175
+ defaultMessage: "Getting template details...",
176
+ },
177
+ });
@@ -0,0 +1,83 @@
1
+ /*
2
+ *
3
+ * Create reducer
4
+ *
5
+ */
6
+
7
+ import { fromJS } from 'immutable';
8
+ import * as types from './constants';
9
+
10
+ const initialState = fromJS({
11
+ editTemplateInProgress: false,
12
+ editResponse: {},
13
+ getTemplateDetailsInProgress: false,
14
+ templateDetails: {},
15
+ });
16
+
17
+ function editReducer(state = initialState, action) {
18
+ switch (action.type) {
19
+ case types.DEFAULT_ACTION:
20
+ return state;
21
+ case types.EDIT_TEMPLATE_REQUEST:
22
+ return state
23
+ .set('editTemplateInProgress', true)
24
+ .set('editTemplateError', false)
25
+ .set('editTemplateErrorMessage', fromJS(""));
26
+ case types.EDIT_TEMPLATE_SUCCESS:
27
+ return state.set('editTemplateInProgress', false)
28
+ .set('editResponse', action.data)
29
+ .set('editTemplateError', (action.statusCode !== undefined && action.statusCode > 300))
30
+ .set('editTemplateErrorMessage', fromJS(action.errorMsg));
31
+ case types.EDIT_TEMPLATE_FAILURE:
32
+ return state
33
+ .set('editTemplateInProgress', false)
34
+ .set('editTemplateError', true)
35
+ .set('editTemplateErrorMessage', fromJS(action.errorMsg));
36
+ case types.GET_TEMPLATE_DETAILS_REQUEST:
37
+ return state.set('getTemplateDetailsInProgress', true);
38
+ case types.GET_TEMPLATE_DETAILS_SUCCESS:
39
+ case types.SET_SELECTED_TEMPLATE:
40
+ return state.set('getTemplateDetailsInProgress', false)
41
+ .set('templateDetails', action.data);
42
+ case types.GET_TEMPLATE_DETAILS_FAILURE:
43
+ return state.set('getTemplateDetailsInProgress', false);
44
+ case types.CLEAR_EDIT_RESPONSE_REQUEST:
45
+ return state.set('editResponse', {});
46
+ case types.UPLOAD_ASSET_REQUEST:
47
+ return state
48
+ .set('uploadAssetSuccess', false)
49
+ .set('assetUploading', true);
50
+ case types.UPLOAD_ASSET_SUCCESS:
51
+ return state
52
+ .set('uploadAssetSuccess', (action.statusCode !== undefined && action.statusCode !== '' && action.statusCode < 300))
53
+ .set('assetUploading', false)
54
+ .set('uploadedAssetData', action.data);
55
+ case types.UPLOAD_ASSET_FAILURE:
56
+ return state
57
+ .set('uploadAssetSuccess', false)
58
+ .set('assetUploading', false);
59
+ case types.CLEAR_DATA:
60
+ return state
61
+ .delete('uploadedAssetData')
62
+ .delete('metaEntities')
63
+ .delete('templateDetails');
64
+ case types.CLEAR_ASSET:
65
+ return state
66
+ .delete('uploadedAssetData');
67
+ case types.GET_LINE_TEMPLATES_LIST_REQUEST:
68
+ return state
69
+ .set('fetchingDefaultTemplates', true);
70
+ case types.GET_LINE_TEMPLATES_LIST_SUCCESS:
71
+ return state
72
+ .set('fetchingDefaultTemplates', false)
73
+ .set('lineTemplates', fromJS(action.data));
74
+ case types.GET_LINE_TEMPLATES_LIST_FAILURE:
75
+ return state
76
+ .set('fetchingDefaultTemplates', false)
77
+ .set('errorFetchingDefaultTempalte', true);
78
+ default:
79
+ return state;
80
+ }
81
+ }
82
+
83
+ export default editReducer;
@@ -0,0 +1,80 @@
1
+ import { call, put, takeLatest } from 'redux-saga/effects';
2
+ // import { schema, normalize } from 'normalizr';
3
+ import * as Api from '../../../services/api';
4
+ import * as types from './constants';
5
+
6
+ // Individual exports for testing
7
+ export function* editTemplate(template) {
8
+ let errorMsg;
9
+ try {
10
+
11
+ const result = yield call(Api.createLineTemplate, template);
12
+
13
+ if (result.message || result.status.code === 500) {
14
+ errorMsg = result.message;
15
+ }
16
+ yield put({ type: types.EDIT_TEMPLATE_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
17
+ } catch (error) {
18
+ yield put({ type: types.EDIT_TEMPLATE_FAILURE, error, errorMsg });
19
+ }
20
+ }
21
+
22
+ export function* getTemplateDetails(id) {
23
+ try {
24
+
25
+ const result = yield call(Api.getTemplateDetails, id);
26
+ // const sidebar = result.response.sidebar;
27
+ yield put({ type: types.GET_TEMPLATE_DETAILS_SUCCESS, data: result.response });
28
+ } catch (error) {
29
+ yield put({ type: types.GET_TEMPLATE_DETAILS_FAILURE, error });
30
+ }
31
+ }
32
+
33
+ export function* uploadAsset(file, assetType, fileParams, mode) {
34
+ try {
35
+ const result = yield call(Api.uploadFile, file, assetType, fileParams, mode);
36
+ yield put({ type: types.UPLOAD_ASSET_SUCCESS, data: result.response.asset, statusCode: result.status ? result.status.code : '' });
37
+ } catch (error) {
38
+ yield put({ type: types.UPLOAD_ASSET_FAILURE, error });
39
+ }
40
+ }
41
+
42
+ export function* getLineTemplatesList(params) {
43
+ try {
44
+
45
+ const result = yield call(Api.getAllTemplates, {channel: params.channel, queryParams: params.queryParams});
46
+ yield put({ type: types.GET_LINE_TEMPLATES_LIST_SUCCESS, data: result.response.templates, templateData: result.response.mapped});
47
+ } catch (error) {
48
+ yield put({ type: types.GET_LINE_TEMPLATES_LIST_FAILURE, error });
49
+ }
50
+ }
51
+
52
+ export function* watchEditTemplate() {
53
+ yield takeLatest(types.EDIT_TEMPLATE_REQUEST, editTemplate);
54
+
55
+
56
+ }
57
+
58
+ export function* watchGetTemplateDetails() {
59
+ yield takeLatest(types.GET_TEMPLATE_DETAILS_REQUEST, getTemplateDetails);
60
+
61
+
62
+ }
63
+
64
+ export function* watchUploadAsset() {
65
+ yield takeLatest(types.UPLOAD_ASSET_REQUEST, uploadAsset);
66
+
67
+
68
+ }
69
+
70
+ export function* watchLineTemplatesList() {
71
+ yield takeLatest(types.GET_LINE_TEMPLATES_LIST_REQUEST, getLineTemplatesList);
72
+
73
+
74
+ }
75
+
76
+ // All sagas to be loaded
77
+ export default [
78
+ watchEditTemplate, watchGetTemplateDetails, watchLineTemplatesList,
79
+ watchUploadAsset,
80
+ ];
@@ -0,0 +1,29 @@
1
+ import { createSelector } from 'reselect';
2
+
3
+ /**
4
+ * Direct selector to the create state domain
5
+ */
6
+ const selectLineEditDomain = () => (state) => state.get('edit');
7
+
8
+ /**
9
+ * Other specific selectors
10
+ */
11
+
12
+
13
+ /**
14
+ * Default selector used by Create
15
+ */
16
+
17
+ const makeSelectEdit = () => createSelector(
18
+ selectLineEditDomain(),
19
+ (substate) => substate.toJS()
20
+ );
21
+ const makeSelectEditResponse = () => createSelector(
22
+ selectLineEditDomain(), (dimensionState) => dimensionState.get('editResponse')
23
+ );
24
+ const makeSelectTemplateDetailsResponse = () => createSelector(
25
+ selectLineEditDomain(), (dimensionState) => dimensionState.get('templateDetails')
26
+ );
27
+ export {
28
+ makeSelectEdit, makeSelectEditResponse, makeSelectTemplateDetailsResponse,
29
+ };
@@ -0,0 +1,160 @@
1
+ import { expectSaga } from 'redux-saga-test-plan';
2
+ import { call, put } from 'redux-saga/effects';
3
+ import { throwError } from 'redux-saga-test-plan/providers';
4
+ import * as Api from '../../../../services/api';
5
+ import * as sagas from '../sagas';
6
+ import * as types from '../constants';
7
+ import { takeLatest } from 'redux-saga/effects';
8
+ import {
9
+ watchEditTemplate,
10
+ watchGetTemplateDetails,
11
+ watchUploadAsset,
12
+ watchLineTemplatesList
13
+ } from '../sagas';
14
+
15
+ describe('Template Sagas', () => {
16
+
17
+ describe('editTemplate Saga', () => {
18
+ const template = { id: 1, content: 'Updated Content' };
19
+ it.concurrent('handles editing template successfully', () => {
20
+ const fakeResponse = {
21
+ response: { updated: true },
22
+ status: { code: 200 }
23
+ };
24
+
25
+ return expectSaga(sagas.editTemplate, template)
26
+ .provide([
27
+ [call(Api.createLineTemplate, template), fakeResponse]
28
+ ])
29
+ .put({
30
+ type: types.EDIT_TEMPLATE_SUCCESS,
31
+ data: fakeResponse.response,
32
+ statusCode: fakeResponse.status.code,
33
+ errorMsg: undefined
34
+ })
35
+ .run();
36
+ });
37
+
38
+ it.concurrent('handles failure in editing template', () => {
39
+ const error = new Error('Update failed');
40
+
41
+ return expectSaga(sagas.editTemplate, template)
42
+ .provide([
43
+ [call(Api.createLineTemplate, template), throwError(error)]
44
+ ])
45
+ .put({
46
+ type: types.EDIT_TEMPLATE_FAILURE,
47
+ error,
48
+ errorMsg: undefined
49
+ })
50
+ .run();
51
+ });
52
+ });
53
+
54
+ describe('getTemplateDetails Saga', () => {
55
+ const id = '123';
56
+ test.concurrent('handles fetching template details successfully', () => {
57
+ const fakeResponse = {
58
+ response: { id: 123, name: 'Detailed Template' }
59
+ };
60
+ return expectSaga(sagas.getTemplateDetails, id)
61
+ .provide([
62
+ [call(Api.getTemplateDetails, id), fakeResponse]
63
+ ])
64
+ .put({
65
+ type: types.GET_TEMPLATE_DETAILS_SUCCESS,
66
+ data: fakeResponse.response
67
+ })
68
+ .run();
69
+ });
70
+ test.concurrent('handles failure in fetching template details', () => {
71
+ const error = new Error('Fetch failed');
72
+ return expectSaga(sagas.getTemplateDetails, id)
73
+ .provide([
74
+ [call(Api.getTemplateDetails, id), throwError(error)]
75
+ ])
76
+ .put({
77
+ type: types.GET_TEMPLATE_DETAILS_FAILURE,
78
+ error
79
+ })
80
+ .run();
81
+ });
82
+ });
83
+
84
+ describe('uploadAsset Saga', () => {
85
+ const file = new Blob(['file contents'], { type: 'text/plain' });
86
+ const assetType = 'image';
87
+ const fileParams = { directory: 'profile' };
88
+ const mode = 'create';
89
+
90
+ it.concurrent('handles asset upload successfully', () => {
91
+ const fakeResponse = {
92
+ response: { asset: { id: 1, url: 'http://example.com/image.png' } },
93
+ status: { code: 200 }
94
+ };
95
+
96
+ return expectSaga(sagas.uploadAsset, file, assetType, fileParams, mode)
97
+ .provide([
98
+ [call(Api.uploadFile, file, assetType, fileParams, mode), fakeResponse]
99
+ ])
100
+ .put({
101
+ type: types.UPLOAD_ASSET_SUCCESS,
102
+ data: fakeResponse.response.asset,
103
+ statusCode: fakeResponse.status.code
104
+ })
105
+ .run();
106
+ });
107
+
108
+ it.concurrent('handles failure in uploading asset', () => {
109
+ const error = new Error('Upload failed');
110
+
111
+ return expectSaga(sagas.uploadAsset, file, assetType, fileParams, mode)
112
+ .provide([
113
+ [call(Api.uploadFile, file, assetType, fileParams, mode), throwError(error)]
114
+ ])
115
+ .put({
116
+ type: types.UPLOAD_ASSET_FAILURE,
117
+ error
118
+ })
119
+ .run();
120
+ });
121
+ });
122
+ });
123
+ describe('Saga watchers', () => {
124
+ describe('watchEditTemplate saga', () => {
125
+ const generator = watchEditTemplate();
126
+ it.concurrent('should take the latest EDIT_TEMPLATE_REQUEST actions and call editTemplate saga', () => {
127
+ expect(generator.next().value).toEqual(
128
+ takeLatest(types.EDIT_TEMPLATE_REQUEST, sagas.editTemplate),
129
+ );
130
+ });
131
+ });
132
+
133
+ describe('watchGetTemplateDetails saga', () => {
134
+ const generator = watchGetTemplateDetails();
135
+ it.concurrent('should take the latest GET_TEMPLATE_DETAILS_REQUEST actions and call getTemplateDetails saga', () => {
136
+ expect(generator.next().value).toEqual(
137
+ takeLatest(types.GET_TEMPLATE_DETAILS_REQUEST, sagas.getTemplateDetails),
138
+ );
139
+ });
140
+ });
141
+
142
+ describe('watchUploadAsset saga', () => {
143
+ const generator = watchUploadAsset();
144
+ it.concurrent('should take the latest UPLOAD_ASSET_REQUEST actions and call uploadAsset saga', () => {
145
+ expect(generator.next().value).toEqual(
146
+ takeLatest(types.UPLOAD_ASSET_REQUEST, sagas.uploadAsset),
147
+ );
148
+ });
149
+ });
150
+
151
+ describe('watchLineTemplatesList saga', () => {
152
+ const generator = watchLineTemplatesList();
153
+ it.concurrent('should take the latest GET_LINE_TEMPLATES_LIST_REQUEST actions and call getLineTemplatesList saga', () => {
154
+ expect(generator.next().value).toEqual(
155
+ takeLatest(types.GET_LINE_TEMPLATES_LIST_REQUEST, sagas.getLineTemplatesList),
156
+ );
157
+ });
158
+ });
159
+
160
+ });
@@ -0,0 +1,62 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ import { Form, Icon } from 'antd';
4
+ import { CapInput, CapButton } from '@capillarytech/cap-react-ui-library';
5
+ import { injectIntl, intlShape } from 'react-intl';
6
+ import messages from './messages';
7
+ const FormItem = Form.Item;
8
+
9
+ class NormalLoginForm extends React.Component {
10
+ handleSubmit = (e) => {
11
+ e.preventDefault();
12
+ this.props.form.validateFields((err, values) => {
13
+ if (!err) {
14
+ this.props.authenticate(values);
15
+ }
16
+ });
17
+ }
18
+
19
+ render() {
20
+ const { getFieldDecorator } = this.props.form;
21
+ return (
22
+ <Form onSubmit={this.handleSubmit} className="login-form">
23
+ <FormItem className="login-form-item">
24
+ {getFieldDecorator('username', {
25
+ rules: [{ required: true, message: this.props.intl.formatMessage(messages.inputUsernameMandatory) }],
26
+ })(
27
+ <CapInput prefix={<Icon type="user" style={{ fontSize: 13 }} />} placeholder={this.props.intl.formatMessage(messages.username)} />
28
+ )}
29
+ </FormItem>
30
+ <FormItem className="login-form-item">
31
+ {getFieldDecorator('password', {
32
+ rules: [{ required: true, message: this.props.intl.formatMessage(messages.inputPasswordMandatory) }],
33
+ })(
34
+ <CapInput prefix={<Icon type="lock" style={{ fontSize: 13 }} />} type="password" placeholder={this.props.intl.formatMessage(messages.password)} />
35
+ )}
36
+ </FormItem>
37
+ {this.props.isError
38
+ ? <FormItem>
39
+ <span style={{color: "red"}}>{this.props.intl.formatMessage(messages.invalidCredentials)}</span>
40
+ </FormItem>
41
+ : null
42
+ }
43
+ <FormItem>
44
+ <CapButton loading={this.props.loginInProgress} type="primary" htmlType="submit" className="login-form-button">
45
+ {this.props.intl.formatMessage(messages.loginButton)}
46
+ </CapButton>
47
+ </FormItem>
48
+ </Form>
49
+ );
50
+ }
51
+ }
52
+
53
+ NormalLoginForm.propTypes = {
54
+ authenticate: PropTypes.func.isRequired,
55
+ loginInProgress: PropTypes.bool,
56
+ isError: PropTypes.bool,
57
+ form: PropTypes.object,
58
+ intl: intlShape.isRequired,
59
+ };
60
+
61
+ const WrappedNormalLoginForm = Form.create()(NormalLoginForm);
62
+ export default injectIntl(WrappedNormalLoginForm);
@@ -0,0 +1,33 @@
1
+ /*
2
+ * LoginForm Messages
3
+ *
4
+ * This contains all the text for the LoginForm component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ username: {
10
+ id: 'creatives.containers.Login.components.LoginForm.input.username',
11
+ defaultMessage: 'Username or email',
12
+ },
13
+ password: {
14
+ id: 'creatives.containers.Login.components.LoginForm.input.password',
15
+ defaultMessage: 'Password',
16
+ },
17
+ loginButton: {
18
+ id: 'creatives.containers.Login.components.LoginForm.input.loginButton',
19
+ defaultMessage: 'Login',
20
+ },
21
+ invalidCredentials: {
22
+ id: 'creatives.containers.Login.components.LoginForm.input.invalidCredentials',
23
+ defaultMessage: 'Invalid or Incorrect credentials!',
24
+ },
25
+ inputPasswordMandatory: {
26
+ id: 'creatives.containers.Login.components.LoginForm.input.inputPasswordMandatory',
27
+ defaultMessage: 'Please input your Password!',
28
+ },
29
+ inputUsernameMandatory: {
30
+ id: 'creatives.containers.Login.components.LoginForm.input.inputUsernameMandatory',
31
+ defaultMessage: 'Please input your username!',
32
+ },
33
+ });