@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,189 @@
1
+ /*
2
+ * Create Messages
3
+ *
4
+ * This contains all the text for the Create component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ "imageUploadLabel": {
10
+ id: 'creatives.containers.Line.Create.ImageUploadLabel',
11
+ defaultMessage: 'Upload image',
12
+ },
13
+ "Enter template name*": {
14
+ id: 'creatives.containers.Line.Create.enterTemplateNameImportant',
15
+ defaultMessage: 'Enter template name*',
16
+ },
17
+ "Enter template name": {
18
+ id: 'creatives.containers.Line.Create.enterTemplateName',
19
+ defaultMessage: 'Enter template name',
20
+ },
21
+ "Template name cannot be empty": {
22
+ id: 'creatives.containers.Line.Create.templateCantEmpty',
23
+ defaultMessage: 'Template name cannot be empty',
24
+ },
25
+ "Discard Changes": {
26
+ id: 'creatives.containers.Line.Create.discardChanges',
27
+ defaultMessage: 'Discard changes',
28
+ },
29
+ "Cancel": {
30
+ id: 'creatives.containers.Line.Create.cancel',
31
+ defaultMessage: 'Cancel',
32
+ },
33
+ "Save": {
34
+ id: 'creatives.containers.Line.Create.save',
35
+ defaultMessage: 'Save',
36
+ },
37
+ "Select Line Account": {
38
+ id: 'creatives.containers.Line.Create.selectLineAccount',
39
+ defaultMessage: 'Select line account',
40
+ },
41
+ "Account Id": {
42
+ id: 'creatives.containers.Line.Create.accountId',
43
+ defaultMessage: 'Account id',
44
+ },
45
+ "Select Line Template": {
46
+ id: 'creatives.containers.Line.Create.selectLineTemplate',
47
+ defaultMessage: 'Select line template',
48
+ },
49
+ "Template": {
50
+ id: 'creatives.containers.Line.Create.template',
51
+ defaultMessage: 'Template',
52
+ },
53
+ "Title*": {
54
+ id: 'creatives.containers.Line.Create.titleLabel',
55
+ defaultMessage: 'Title*',
56
+ },
57
+ "Title": {
58
+ id: 'creatives.containers.Line.Create.title',
59
+ defaultMessage: 'Title',
60
+ },
61
+ "Please input message title name.": {
62
+ id: 'creatives.containers.Line.Create.titleNameInvalid',
63
+ defaultMessage: 'Please enter the message title',
64
+ },
65
+ "Template message has unsupported/missing tags!": {
66
+ id: 'creatives.containers.Line.Create.messageHasUnsupportedTag',
67
+ defaultMessage: 'Please check the message content for unsupported/missing tags',
68
+ },
69
+ "Tags": {
70
+ id: 'creatives.containers.Line.Create.Tags',
71
+ defaultMessage: 'Tags',
72
+ },
73
+ "Message*": {
74
+ id: 'creatives.containers.Line.Create.messageLabel',
75
+ defaultMessage: 'Message*',
76
+ },
77
+ "Message": {
78
+ id: 'creatives.containers.Line.Create.message',
79
+ defaultMessage: 'Message',
80
+ },
81
+ "Please input line template content.": {
82
+ id: 'creatives.containers.Line.Create.inputLineTemplateContent',
83
+ defaultMessage: 'Please enter the message content',
84
+ },
85
+ "Template title has unsupported/missing tags.": {
86
+ id: 'creatives.containers.Line.Create.titleHasUnsupportedTag',
87
+ defaultMessage: 'Please check the message content for unsupported/missing tags',
88
+ },
89
+ "Template name cannot be empty.": {
90
+ id: 'creatives.containers.Line.Create.templateNameNotEmpty',
91
+ defaultMessage: 'Please provide a template name ',
92
+ },
93
+ "Message title has unsupported/missing tags!": {
94
+ id: 'creatives.containers.Line.Create.messageTitleWithUnsupportedTag',
95
+ defaultMessage: 'Please check the message content for unsupported/missing tags',
96
+ },
97
+ "Image": {
98
+ id: 'creatives.containers.Line.Create.Image',
99
+ defaultMessage: 'Image',
100
+ },
101
+ "Max file size acceptable is 5mb": {
102
+ id: 'creatives.containers.Line.Create.maxUploadFileSize',
103
+ defaultMessage: 'Max file size acceptable is 5mb',
104
+ },
105
+ "Please upload Image": {
106
+ id: 'creatives.containers.Line.Create.pleaseUploadImage',
107
+ defaultMessage: 'Please upload Image',
108
+ },
109
+ "Upload Image": {
110
+ id: 'creatives.containers.Line.Create.uploadImage',
111
+ defaultMessage: 'Upload image',
112
+ },
113
+ "Line Template Created Successfully": {
114
+ id: 'creatives.containers.Line.Create.templateCreatedSuccessfully',
115
+ defaultMessage: 'Line template created successfully',
116
+ },
117
+ "Line Template Edited Successfully": {
118
+ id: 'creatives.containers.Line.Create.templateEditedSuccessfully',
119
+ defaultMessage: 'Line template edited successfully',
120
+ },
121
+ "somethingWentWrong": {
122
+ id: 'creatives.containers.Line.Create.somethingWentWrong',
123
+ defaultMessage: 'Something went wrong!!',
124
+ },
125
+ "Name and Description": {
126
+ id: 'creatives.containers.Line.Create.nameAndDescription',
127
+ defaultMessage: 'Name and description',
128
+ },
129
+ "Button 1": {
130
+ id: 'creatives.containers.Line.Create.button1',
131
+ defaultMessage: 'Button 1',
132
+ },
133
+ "Button 2": {
134
+ id: 'creatives.containers.Line.Create.button2',
135
+ defaultMessage: 'Button 2',
136
+ },
137
+ "File size cannot be more than 1mb": {
138
+ id: 'creatives.containers.Line.Create.uploadFileSizeError',
139
+ defaultMessage: 'File size cannot be more than 1mb',
140
+ },
141
+ "value cannot be empty.": {
142
+ id: 'creatives.containers.Line.Create.valueCantEmpty',
143
+ defaultMessage: 'value cannot be empty.',
144
+ },
145
+ "uploadingImage": {
146
+ id: 'creatives.containers.Line.Create.uploadingImage',
147
+ defaultMessage: 'Uploading image...',
148
+ },
149
+ "Photo Uploaded Successfully": {
150
+ id: 'creatives.containers.Line.Create.uploadSuccess',
151
+ defaultMessage: 'Photo uploaded successfully',
152
+ },
153
+ "Campaigns": {
154
+ id: 'creatives.containers.Line.Create.Campaigns',
155
+ defaultMessage: 'Campaigns',
156
+ },
157
+ "Creatives": {
158
+ id: 'creatives.containers.Line.Create.Creatives',
159
+ defaultMessage: 'Creatives',
160
+ },
161
+ "Line": {
162
+ id: 'creatives.containers.Line.Create.line',
163
+ defaultMessage: 'Line',
164
+ },
165
+ "Please upload an image to proceed": {
166
+ id: 'creatives.containers.Line.Create.image',
167
+ defaultMessage: 'Please upload an image to proceed',
168
+ },
169
+ "Maximum characters length exceeds": {
170
+ id: 'creatives.containers.Line.Create.maximumCharacterLengthExceeds',
171
+ defaultMessage: 'Maximum characters length exceeds',
172
+ },
173
+ "goBackConfirmation": {
174
+ id: 'creatives.containers.Line.Create.goBackConfirmation',
175
+ defaultMessage: "Going back will discard all the changes you've made. Continue?",
176
+ },
177
+ "alertMessage": {
178
+ id: 'creatives.containers.Line.Create.alertMessage',
179
+ defaultMessage: "Alert",
180
+ },
181
+ "templateNotConfigured": {
182
+ id: 'creatives.containers.Line.Create.templateNotConfigured',
183
+ defaultMessage: "template not configured,",
184
+ },
185
+ "savingTemplate": {
186
+ id: 'creatives.containers.Line.Create.savingTemplate',
187
+ defaultMessage: "Saving Template...",
188
+ },
189
+ });
@@ -0,0 +1,99 @@
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
+ createTemplateInProgress: false,
12
+ response: {},
13
+ uploadedAssetData: {},
14
+ });
15
+
16
+ function createReducer(state = initialState, action) {
17
+ switch (action.type) {
18
+ case types.DEFAULT_ACTION:
19
+ return state;
20
+ case types.CREATE_TEMPLATE_REQUEST:
21
+ return state
22
+ .set('createTemplateInProgress', true)
23
+ .set('createTemplateError', false)
24
+ .set('createTemplateErrorMessage', fromJS(""));
25
+ case types.CREATE_TEMPLATE_SUCCESS:
26
+ return state.set('createTemplateInProgress', false)
27
+ .set('response', action.data)
28
+ .set('createTemplateError', (action.statusCode !== undefined && action.statusCode > 300))
29
+ .set('createTemplateErrorMessage', fromJS(action.errorMsg));
30
+ case types.CREATE_TEMPLATE_FAILURE:
31
+ return state
32
+ .set('createTemplateInProgress', false)
33
+ .set('createTemplateError', true)
34
+ .set('createTemplateErrorMessage', fromJS(action.errorMsg));
35
+ case types.CLEAR_CREATE_RESPONSE_REQUEST:
36
+ return state.set('response', {});
37
+ case types.UPLOAD_ASSET_REQUEST:
38
+ return state
39
+ .set('uploadAssetSuccess', false)
40
+ .set('assetUploading', true);
41
+ case types.UPLOAD_ASSET_SUCCESS:
42
+ return state
43
+ .set('uploadAssetSuccess', (action.statusCode !== undefined && action.statusCode !== '' && action.statusCode < 300))
44
+ .set('assetUploading', false)
45
+ .set('uploadedAssetData', action.data);
46
+ case types.UPLOAD_ASSET_FAILURE:
47
+ return state
48
+ .set('uploadAssetSuccess', false)
49
+ .set('assetUploading', false);
50
+ case types.CLEAR_ASSET:
51
+ return state
52
+ .delete('uploadedAssetData');
53
+ // FOR EDIT
54
+ case types.EDIT_TEMPLATE_REQUEST:
55
+ return state
56
+ .set('editTemplateInProgress', true)
57
+ .set('editTemplateError', false)
58
+ .set('editTemplateErrorMessage', fromJS(""));
59
+ case types.EDIT_TEMPLATE_SUCCESS:
60
+ return state.set('editTemplateInProgress', false)
61
+ .set('editResponse', action.data)
62
+ .set('editTemplateError', (action.statusCode !== undefined && action.statusCode > 300))
63
+ .set('editTemplateErrorMessage', fromJS(action.errorMsg));
64
+ case types.EDIT_TEMPLATE_FAILURE:
65
+ return state
66
+ .set('editTemplateInProgress', false)
67
+ .set('editTemplateError', true)
68
+ .set('editTemplateErrorMessage', fromJS(action.errorMsg));
69
+ case types.GET_TEMPLATE_DETAILS_REQUEST:
70
+ return state.set('getTemplateDetailsInProgress', true);
71
+ case types.GET_TEMPLATE_DETAILS_SUCCESS:
72
+ return state.set('getTemplateDetailsInProgress', false)
73
+ .set('templateDetails', action.data);
74
+ case types.GET_TEMPLATE_DETAILS_FAILURE:
75
+ return state.set('getTemplateDetailsInProgress', false);
76
+ case types.CLEAR_EDIT_RESPONSE_REQUEST:
77
+ return state.set('editResponse', {});
78
+ case types.CLEAR_DATA:
79
+ return state
80
+ .delete('uploadedAssetData')
81
+ .delete('metaEntities')
82
+ .delete('templateDetails');
83
+ case types.GET_LINE_TEMPLATES_LIST_REQUEST:
84
+ return state
85
+ .set('fetchingDefaultTemplates', true);
86
+ case types.GET_LINE_TEMPLATES_LIST_SUCCESS:
87
+ return state
88
+ .set('fetchingDefaultTemplates', false)
89
+ .set('lineTemplates', fromJS(action.data));
90
+ case types.GET_LINE_TEMPLATES_LIST_FAILURE:
91
+ return state
92
+ .set('fetchingDefaultTemplates', false)
93
+ .set('errorFetchingDefaultTempalte', true);
94
+ default:
95
+ return state;
96
+ }
97
+ }
98
+
99
+ export default createReducer;
@@ -0,0 +1,121 @@
1
+ // Line Sagas
2
+ import {
3
+ call, put, takeLatest, all,
4
+ } from 'redux-saga/effects';
5
+ import * as Api from '../../../services/api';
6
+ import * as types from './constants';
7
+
8
+ // Individual exports for testing
9
+ export function* createTemplate(payload) {
10
+ let errorMsg;
11
+ let result;
12
+ try {
13
+ const {template, callback} = payload;
14
+ result = yield call(Api.createLineTemplate, template);
15
+ if (result.status.code === 500) {
16
+ errorMsg = result.message;
17
+ }
18
+ if (callback) {
19
+ callback(result?.response);
20
+ }
21
+ yield put({ type: types.CREATE_TEMPLATE_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
22
+ } catch (error) {
23
+ yield put({ type: types.CREATE_TEMPLATE_FAILURE, error, errorMsg });
24
+ }
25
+ }
26
+ export function* uploadAsset(file, assetType, fileParams) {
27
+ try {
28
+ const result = yield call(Api.uploadFile, file, assetType, fileParams);
29
+ yield put({ type: types.UPLOAD_ASSET_SUCCESS, data: result.response.asset, statusCode: result.status ? result.status.code : '' });
30
+ } catch (error) {
31
+ yield put({ type: types.UPLOAD_ASSET_FAILURE, error });
32
+ }
33
+ }
34
+
35
+ function* watchCreateTemplate() {
36
+
37
+ yield takeLatest(types.CREATE_TEMPLATE_REQUEST, createTemplate);
38
+
39
+
40
+ }
41
+ function* watchUploadAsset() {
42
+
43
+ yield takeLatest(types.UPLOAD_ASSET_REQUEST, uploadAsset);
44
+
45
+
46
+ }
47
+
48
+ // edit
49
+
50
+ export function* editTemplate(template) {
51
+ let errorMsg;
52
+ try {
53
+
54
+ const result = yield call(Api.createLineTemplate, template);
55
+
56
+ if (result.message || result.status.code === 500) {
57
+ errorMsg = result.message;
58
+ }
59
+ yield put({ type: types.EDIT_TEMPLATE_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
60
+ } catch (error) {
61
+ yield put({ type: types.EDIT_TEMPLATE_FAILURE, error, errorMsg });
62
+ }
63
+ }
64
+
65
+ export function* getTemplateDetails(id) {
66
+ try {
67
+
68
+ const result = yield call(Api.getTemplateDetails, id);
69
+ // const sidebar = result.response.sidebar;
70
+ yield put({ type: types.GET_TEMPLATE_DETAILS_SUCCESS, data: result.response });
71
+ } catch (error) {
72
+ yield put({ type: types.GET_TEMPLATE_DETAILS_FAILURE, error });
73
+ }
74
+ }
75
+
76
+ export function* getLineTemplatesList(params) {
77
+ try {
78
+
79
+ const result = yield call(Api.getAllTemplates, {channel: params.channel, queryParams: params.queryParams});
80
+ yield put({ type: types.GET_LINE_TEMPLATES_LIST_SUCCESS, data: result.response.templates, templateData: result.response.mapped});
81
+ } catch (error) {
82
+ yield put({ type: types.GET_LINE_TEMPLATES_LIST_FAILURE, error });
83
+ }
84
+ }
85
+
86
+ function* watchEditTemplate() {
87
+ yield takeLatest(types.EDIT_TEMPLATE_REQUEST, editTemplate);
88
+
89
+
90
+ }
91
+
92
+ function* watchGetTemplateDetails() {
93
+ yield takeLatest(types.GET_TEMPLATE_DETAILS_REQUEST, getTemplateDetails);
94
+
95
+
96
+ }
97
+
98
+ function* watchLineTemplatesList() {
99
+ yield takeLatest(types.GET_LINE_TEMPLATES_LIST_REQUEST, getLineTemplatesList);
100
+
101
+
102
+ }
103
+
104
+ // All sagas to be loaded
105
+ export default [
106
+ watchCreateTemplate,
107
+ watchUploadAsset,
108
+ watchEditTemplate,
109
+ watchGetTemplateDetails,
110
+ watchLineTemplatesList,
111
+ ];
112
+
113
+ export function* lineCreateSaga() {
114
+ yield all([
115
+ watchCreateTemplate(),
116
+ watchUploadAsset(),
117
+ watchEditTemplate(),
118
+ watchGetTemplateDetails(),
119
+ watchLineTemplatesList(),
120
+ ]);
121
+ }
@@ -0,0 +1,36 @@
1
+ import { createSelector } from 'reselect';
2
+
3
+ /**
4
+ * Direct selector to the create state domain
5
+ */
6
+ const selectLineDomain = () => (state) => state.get('templates');
7
+ const selectLineMessageEditDomain = () => (state) => state.get('line');
8
+ //const selectLineDuplicateDomain = () => (state) => state.get('line');
9
+
10
+ /**
11
+ * Other specific selectors
12
+ */
13
+
14
+
15
+ /**
16
+ * Default selector used by Create & Edit
17
+ */
18
+
19
+ const makeSelectLine = () => createSelector(
20
+ selectLineDomain(),
21
+ (substate) => substate.toJS()
22
+ );
23
+
24
+ const makeSelectCreateLine = () => createSelector(
25
+ selectLineMessageEditDomain(),
26
+ (substate) => substate.toJS()
27
+ );
28
+
29
+ // const makeSelectDuplicate = () => createSelector(
30
+ // selectLineDuplicateDomain(),
31
+ // (substate) => substate.toJS()
32
+ // );
33
+
34
+ export {
35
+ makeSelectLine, makeSelectCreateLine,
36
+ };
@@ -0,0 +1,202 @@
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 types from '../constants';
6
+ import * as sagas from '../sagas';
7
+
8
+ describe('Line Template Sagas', () => {
9
+ describe('createTemplate Saga', () => {
10
+ const payload = {
11
+ template: { name: 'New Template' },
12
+ callback: jest.fn()
13
+ };
14
+ it('handles creating a template successfully', () => {
15
+ const fakeResponse = {
16
+ response: { id: 1, name: 'New Template' },
17
+ status: { code: 200 }
18
+ };
19
+
20
+ return expectSaga(sagas.createTemplate, payload)
21
+ .provide([
22
+ [call(Api.createLineTemplate, payload.template), fakeResponse]
23
+ ])
24
+ .put({
25
+ type: types.CREATE_TEMPLATE_SUCCESS,
26
+ data: fakeResponse.response,
27
+ statusCode: 200,
28
+ errorMsg: undefined
29
+ })
30
+ .run()
31
+ .then(() => {
32
+ expect(payload.callback).toHaveBeenCalledWith(fakeResponse.response);
33
+ });
34
+ });
35
+
36
+ it('handles failure when creating a template', () => {
37
+ const error = new Error('Failed to create template');
38
+
39
+ return expectSaga(sagas.createTemplate, payload)
40
+ .provide([
41
+ [call(Api.createLineTemplate, payload.template), throwError(error)]
42
+ ])
43
+ .put({
44
+ type: types.CREATE_TEMPLATE_FAILURE,
45
+ error,
46
+ errorMsg: undefined
47
+ })
48
+ .run();
49
+ });
50
+ });
51
+
52
+ describe('uploadAsset Saga', () => {
53
+ const file = new Blob();
54
+ const assetType = 'image';
55
+ const fileParams = { param1: 'value1' };
56
+
57
+ it('handles successful asset upload', () => {
58
+ const fakeResponse = {
59
+ response: { asset: { id: 1, url: 'http://example.com/asset.jpg' } },
60
+ status: { code: '200' }
61
+ };
62
+
63
+ return expectSaga(sagas.uploadAsset, file, assetType, fileParams)
64
+ .provide([
65
+ [call(Api.uploadFile, file, assetType, fileParams), fakeResponse]
66
+ ])
67
+ .put({
68
+ type: types.UPLOAD_ASSET_SUCCESS,
69
+ data: fakeResponse.response.asset,
70
+ statusCode: '200'
71
+ })
72
+ .run();
73
+ });
74
+
75
+ it('handles failure in asset upload', () => {
76
+ const error = new Error('Failed to upload asset');
77
+
78
+ return expectSaga(sagas.uploadAsset, file, assetType, fileParams)
79
+ .provide([
80
+ [call(Api.uploadFile, file, assetType, fileParams), throwError(error)]
81
+ ])
82
+ .put({
83
+ type: types.UPLOAD_ASSET_FAILURE,
84
+ error
85
+ })
86
+ .run();
87
+ });
88
+ });
89
+
90
+ describe('editTemplate Saga', () => {
91
+ const template = { id: 1, name: 'Updated Template' };
92
+
93
+ it('handles successful template edit', () => {
94
+ const fakeResponse = {
95
+ response: template,
96
+ status: { code: 200 }
97
+ };
98
+
99
+ return expectSaga(sagas.editTemplate, template)
100
+ .provide([
101
+ [call(Api.createLineTemplate, template), fakeResponse]
102
+ ])
103
+ .put({
104
+ type: types.EDIT_TEMPLATE_SUCCESS,
105
+ data: fakeResponse.response,
106
+ statusCode: 200,
107
+ errorMsg: undefined
108
+ })
109
+ .run();
110
+ });
111
+
112
+ it('handles failure in editing a template', () => {
113
+ const error = new Error('Edit failed');
114
+
115
+ return expectSaga(sagas.editTemplate, template)
116
+ .provide([
117
+ [call(Api.createLineTemplate, template), throwError(error)]
118
+ ])
119
+ .put({
120
+ type: types.EDIT_TEMPLATE_FAILURE,
121
+ error,
122
+ errorMsg: undefined
123
+ })
124
+ .run();
125
+ });
126
+ });
127
+
128
+ describe('getTemplateDetails Saga', () => {
129
+ const id = '123';
130
+
131
+ it('handles fetching template details successfully', () => {
132
+ const fakeResponse = {
133
+ response: { id: 123, name: 'Detailed Template' }
134
+ };
135
+
136
+ return expectSaga(sagas.getTemplateDetails, id)
137
+ .provide([
138
+ [call(Api.getTemplateDetails, id), fakeResponse]
139
+ ])
140
+ .put({
141
+ type: types.GET_TEMPLATE_DETAILS_SUCCESS,
142
+ data: fakeResponse.response
143
+ })
144
+ .run();
145
+ });
146
+
147
+ it('handles failure in fetching template details', () => {
148
+ const error = new Error('Fetch failed');
149
+
150
+ return expectSaga(sagas.getTemplateDetails, id)
151
+ .provide([
152
+ [call(Api.getTemplateDetails, id), throwError(error)]
153
+ ])
154
+ .put({
155
+ type: types.GET_TEMPLATE_DETAILS_FAILURE,
156
+ error
157
+ })
158
+ .run();
159
+ });
160
+ });
161
+
162
+ describe('getLineTemplatesList Saga', () => {
163
+ const params = { channel: 'line', queryParams: { sort: 'asc' } };
164
+ test.concurrent('handles fetching line templates list successfully', () => {
165
+ const fakeResponse = {
166
+ response: {
167
+ templates: [{ id: 1, name: 'Template One' }],
168
+ mapped: { id: 2, name: 'Mapped Template' }
169
+ }
170
+ };
171
+ return expectSaga(sagas.getLineTemplatesList, params)
172
+ .provide([
173
+ [call(Api.getAllTemplates, { channel: params.channel, queryParams: params.queryParams }), fakeResponse]
174
+ ])
175
+ .put({
176
+ type: types.GET_LINE_TEMPLATES_LIST_SUCCESS,
177
+ data: fakeResponse.response.templates,
178
+ templateData: fakeResponse.response.mapped
179
+ })
180
+ .run();
181
+ });
182
+ test.concurrent('handles failure in fetching line templates list', () => {
183
+ const error = new Error('Fetch failed');
184
+ return expectSaga(sagas.getLineTemplatesList, params)
185
+ .provide([
186
+ [call(Api.getAllTemplates, { channel: params.channel, queryParams: params.queryParams }), throwError(error)]
187
+ ])
188
+ .put({
189
+ type: types.GET_LINE_TEMPLATES_LIST_FAILURE,
190
+ error
191
+ })
192
+ .run();
193
+ });
194
+ });
195
+ });
196
+
197
+ describe('Combined lineCreateSaga', () => {
198
+ it('should initialize all line-related watcher sagas without error', () => {
199
+ return expectSaga(sagas.lineCreateSaga)
200
+ .run();
201
+ });
202
+ });
@@ -0,0 +1,35 @@
1
+ .mobile-push-row{
2
+ margin-bottom: 16px;
3
+ }
4
+ .image-container{
5
+ border: solid 1px #C2C2C2;
6
+ border-radius: 5px;
7
+ .image-placeholder{
8
+ line-height: 150px;
9
+ }
10
+ }
11
+ .ant-tabs-bar{
12
+ margin-bottom: 0 !important;
13
+ display: flex;
14
+ align-items: center;
15
+ flex-direction: row-reverse;
16
+ justify-content: flex-end;
17
+ }
18
+ .ant-tabs-tabpane{
19
+ padding: 16px 16px 16px 0;
20
+ border: solid 1px #D6D6D6;
21
+ }
22
+ .ant-radio-wrapper{
23
+ font-size: 14px;
24
+ font-family: 'open-sans';
25
+ }
26
+ .ant-radio-inner::after{
27
+ top: 3px;
28
+ left: 3px;
29
+ }
30
+ .ant-radio-inner{
31
+ border: 1px solid #d9d9d9;
32
+ }
33
+ .ant-radio-checked .ant-radio-inner{
34
+ border: 1px solid #47af46;
35
+ }