@capillarytech/creatives-library 2.0.70 → 2.0.72

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 (395) hide show
  1. package/app.js +1 -1
  2. package/components/Ckeditor/index.js +2 -1
  3. package/components/EmailMobilePreview/index.scss +0 -1
  4. package/components/EmailPreviewV2/_emailPreviewV2.scss +4 -1
  5. package/components/EmailPreviewV2/index.js +1 -1
  6. package/components/FormBuilder/index.js +25 -10
  7. package/components/Header/index.js +3 -1
  8. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +38 -3
  9. package/components/TemplatePreview/index.js +45 -51
  10. package/components/TemplatePreview/messages.js +1 -1
  11. package/config/app.js +1 -0
  12. package/containers/Cap/actions.js +0 -5
  13. package/containers/Cap/reducer.js +1 -1
  14. package/containers/Cap/selectors.js +0 -13
  15. package/containers/Ebill/index.js +1 -2
  16. package/containers/Email/_email.scss +1 -0
  17. package/containers/Email/actions.js +3 -8
  18. package/containers/Email/constants.js +0 -1
  19. package/containers/Email/index.js +947 -322
  20. package/containers/Email/reducer.js +0 -3
  21. package/containers/Email/sagas.js +6 -3
  22. package/containers/Email/selectors.js +1 -4
  23. package/containers/Line/Create/index.js +1 -2
  24. package/containers/Line/Edit/_lineEdit.scss +4 -0
  25. package/containers/Line/Edit/index.js +1 -3
  26. package/containers/MobilePush/Create/_mobilePushCreate.scss +3 -12
  27. package/containers/MobilePush/Create/actions.js +0 -6
  28. package/containers/MobilePush/Create/constants.js +0 -1
  29. package/containers/MobilePush/Create/index.js +1133 -628
  30. package/containers/MobilePush/Create/messages.js +1 -5
  31. package/containers/MobilePush/Create/reducer.js +0 -2
  32. package/containers/MobilePush/Create/selectors.js +3 -3
  33. package/containers/MobilePush/Edit/_mobilePushCreate.scss +3 -9
  34. package/containers/MobilePush/Edit/index.js +1127 -393
  35. package/containers/MobilePush/Edit/messages.js +0 -4
  36. package/containers/MobilePush/Edit/reducer.js +1 -2
  37. package/containers/MobilePush/Edit/selectors.js +3 -6
  38. package/containers/Sms/Create/_smsCreate.scss +2 -1
  39. package/containers/Sms/Create/actions.js +4 -4
  40. package/containers/Sms/Create/index.js +570 -102
  41. package/containers/Sms/Create/sagas.js +2 -1
  42. package/containers/Sms/Edit/actions.js +5 -10
  43. package/containers/Sms/Edit/constants.js +0 -1
  44. package/containers/Sms/Edit/index.js +548 -103
  45. package/containers/Sms/Edit/reducer.js +0 -2
  46. package/containers/Sms/Edit/sagas.js +3 -1
  47. package/containers/TagList/index.js +3 -3
  48. package/containers/Templates/actions.js +1 -3
  49. package/containers/Templates/index.js +299 -268
  50. package/containers/Templates/messages.js +90 -122
  51. package/containers/Templates/reducer.js +3 -3
  52. package/containers/Templates/sagas.js +1 -5
  53. package/containers/Templates/selectors.js +1 -41
  54. package/containers/WeChat/MapTemplates/index.js +3 -4
  55. package/containers/WeChat/RichmediaTemplates/Create/index.js +18 -4
  56. package/containers/WeChat/RichmediaTemplates/Create/messages.js +4 -0
  57. package/containers/WeChat/RichmediaTemplates/Edit/index.js +3 -1
  58. package/containers/WeChat/RichmediaTemplates/View/index.js +3 -1
  59. package/index.js +31 -31
  60. package/initialState.js +6 -0
  61. package/package.json +3 -3
  62. package/routes.js +24 -19
  63. package/services/api.js +6 -2
  64. package/services/getSchema.js +18 -0
  65. package/v2Containers/App/actions.js +7 -0
  66. package/v2Containers/App/constants.js +3 -0
  67. package/v2Containers/App/reducer.js +19 -0
  68. package/v2Containers/App/sagas.js +26 -0
  69. package/v2Containers/App/selectors.js +25 -0
  70. package/v2Containers/App/tests/actions.test.js +18 -0
  71. package/v2Containers/App/tests/reducer.test.js +9 -0
  72. package/v2Containers/App/tests/sagas.test.js +15 -0
  73. package/v2Containers/App/tests/selectors.test.js +10 -0
  74. package/v2Containers/Assets/Gallery/_gallery.scss +0 -0
  75. package/v2Containers/Assets/Gallery/actions.js +37 -0
  76. package/v2Containers/Assets/Gallery/constants.js +23 -0
  77. package/v2Containers/Assets/Gallery/index.js +479 -0
  78. package/v2Containers/Assets/Gallery/messages.js +97 -0
  79. package/v2Containers/Assets/Gallery/reducer.js +81 -0
  80. package/v2Containers/Assets/Gallery/sagas.js +84 -0
  81. package/v2Containers/Assets/Gallery/selectors.js +25 -0
  82. package/v2Containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +7 -0
  83. package/v2Containers/Assets/Gallery/tests/actions.test.js +26 -0
  84. package/v2Containers/Assets/Gallery/tests/index.test.js +10 -0
  85. package/v2Containers/Assets/Gallery/tests/reducer.test.js +95 -0
  86. package/v2Containers/Assets/Gallery/tests/sagas.test.js +15 -0
  87. package/v2Containers/Assets/Gallery/tests/selectors.test.js +10 -0
  88. package/v2Containers/CallTask/_callTask.scss +5 -0
  89. package/v2Containers/CallTask/actions.js +15 -0
  90. package/v2Containers/CallTask/constants.js +7 -0
  91. package/v2Containers/CallTask/index.js +141 -0
  92. package/v2Containers/CallTask/messages.js +21 -0
  93. package/v2Containers/CallTask/reducer.js +23 -0
  94. package/v2Containers/CallTask/sagas.js +11 -0
  95. package/v2Containers/CallTask/selectors.js +25 -0
  96. package/v2Containers/CallTask/tests/actions.test.js +18 -0
  97. package/v2Containers/CallTask/tests/index.test.js +10 -0
  98. package/v2Containers/CallTask/tests/reducer.test.js +9 -0
  99. package/v2Containers/CallTask/tests/sagas.test.js +15 -0
  100. package/v2Containers/CallTask/tests/selectors.test.js +10 -0
  101. package/v2Containers/Cap/actions.js +64 -0
  102. package/v2Containers/Cap/constants.js +24 -0
  103. package/v2Containers/Cap/index.js +349 -0
  104. package/v2Containers/Cap/messsages.js +63 -0
  105. package/v2Containers/Cap/reducer.js +111 -0
  106. package/v2Containers/Cap/sagas.js +143 -0
  107. package/v2Containers/Cap/selectors.js +85 -0
  108. package/v2Containers/Cap/tests/index.test.js +16 -0
  109. package/v2Containers/Cap/tests/selectors.test.js +28 -0
  110. package/v2Containers/ChannelTemplates/actions.js +20 -0
  111. package/v2Containers/ChannelTemplates/constants.js +8 -0
  112. package/v2Containers/ChannelTemplates/index.js +48 -0
  113. package/v2Containers/ChannelTemplates/messages.js +13 -0
  114. package/v2Containers/ChannelTemplates/reducer.js +34 -0
  115. package/v2Containers/ChannelTemplates/sagas.js +32 -0
  116. package/v2Containers/ChannelTemplates/selectors.js +25 -0
  117. package/v2Containers/ChannelTemplates/tests/actions.test.js +18 -0
  118. package/v2Containers/ChannelTemplates/tests/index.test.js +10 -0
  119. package/v2Containers/ChannelTemplates/tests/reducer.test.js +9 -0
  120. package/v2Containers/ChannelTemplates/tests/sagas.test.js +15 -0
  121. package/v2Containers/ChannelTemplates/tests/selectors.test.js +10 -0
  122. package/v2Containers/CreativesContainer/SlideBoxContent.js +257 -0
  123. package/v2Containers/CreativesContainer/SlideBoxFooter.js +45 -0
  124. package/v2Containers/CreativesContainer/SlideBoxHeader.js +70 -0
  125. package/v2Containers/CreativesContainer/actions.js +27 -0
  126. package/v2Containers/CreativesContainer/constants.js +16 -0
  127. package/v2Containers/CreativesContainer/index.js +483 -0
  128. package/v2Containers/CreativesContainer/index.scss +27 -0
  129. package/v2Containers/CreativesContainer/messages.js +293 -0
  130. package/v2Containers/CreativesContainer/reducer.js +29 -0
  131. package/v2Containers/CreativesContainer/sagas.js +11 -0
  132. package/v2Containers/CreativesContainer/selectors.js +30 -0
  133. package/v2Containers/CreativesContainer/tests/actions.test.js +18 -0
  134. package/v2Containers/CreativesContainer/tests/index.test.js +10 -0
  135. package/v2Containers/CreativesContainer/tests/reducer.test.js +9 -0
  136. package/v2Containers/CreativesContainer/tests/sagas.test.js +15 -0
  137. package/v2Containers/CreativesContainer/tests/selectors.test.js +10 -0
  138. package/v2Containers/Dashboard/actions.js +15 -0
  139. package/v2Containers/Dashboard/constants.js +7 -0
  140. package/v2Containers/Dashboard/index.js +54 -0
  141. package/v2Containers/Dashboard/messages.js +13 -0
  142. package/v2Containers/Dashboard/reducer.js +21 -0
  143. package/v2Containers/Dashboard/sagas.js +11 -0
  144. package/v2Containers/Dashboard/selectors.js +25 -0
  145. package/v2Containers/Dashboard/tests/actions.test.js +18 -0
  146. package/v2Containers/Dashboard/tests/index.test.js +10 -0
  147. package/v2Containers/Dashboard/tests/reducer.test.js +9 -0
  148. package/v2Containers/Dashboard/tests/sagas.test.js +15 -0
  149. package/v2Containers/Dashboard/tests/selectors.test.js +10 -0
  150. package/v2Containers/Ebill/_ebill.scss +5 -0
  151. package/v2Containers/Ebill/actions.js +43 -0
  152. package/v2Containers/Ebill/constants.js +20 -0
  153. package/v2Containers/Ebill/index.js +1261 -0
  154. package/v2Containers/Ebill/messages.js +73 -0
  155. package/v2Containers/Ebill/reducer.js +72 -0
  156. package/v2Containers/Ebill/sagas.js +65 -0
  157. package/v2Containers/Ebill/selectors.js +25 -0
  158. package/v2Containers/Ebill/tests/actions.test.js +18 -0
  159. package/v2Containers/Ebill/tests/index.test.js +10 -0
  160. package/v2Containers/Ebill/tests/reducer.test.js +9 -0
  161. package/v2Containers/Ebill/tests/sagas.test.js +15 -0
  162. package/v2Containers/Ebill/tests/selectors.test.js +10 -0
  163. package/v2Containers/Email/_email.scss +140 -0
  164. package/v2Containers/Email/actions.js +86 -0
  165. package/v2Containers/Email/constants.js +37 -0
  166. package/v2Containers/Email/index.js +2703 -0
  167. package/v2Containers/Email/initialSchema.js +540 -0
  168. package/v2Containers/Email/messages.js +237 -0
  169. package/v2Containers/Email/reducer.js +147 -0
  170. package/v2Containers/Email/sagas.js +133 -0
  171. package/v2Containers/Email/selectors.js +34 -0
  172. package/v2Containers/Email/tests/actions.test.js +18 -0
  173. package/v2Containers/Email/tests/index.test.js +10 -0
  174. package/v2Containers/Email/tests/reducer.test.js +9 -0
  175. package/v2Containers/Email/tests/sagas.test.js +15 -0
  176. package/v2Containers/Email/tests/selectors.test.js +10 -0
  177. package/v2Containers/EmailWrapper/actions.js +15 -0
  178. package/v2Containers/EmailWrapper/constants.js +7 -0
  179. package/v2Containers/EmailWrapper/index.js +258 -0
  180. package/v2Containers/EmailWrapper/messages.js +57 -0
  181. package/v2Containers/EmailWrapper/reducer.js +23 -0
  182. package/v2Containers/EmailWrapper/sagas.js +11 -0
  183. package/v2Containers/EmailWrapper/selectors.js +25 -0
  184. package/v2Containers/EmailWrapper/tests/actions.test.js +18 -0
  185. package/v2Containers/EmailWrapper/tests/index.test.js +10 -0
  186. package/v2Containers/EmailWrapper/tests/reducer.test.js +9 -0
  187. package/v2Containers/EmailWrapper/tests/sagas.test.js +15 -0
  188. package/v2Containers/EmailWrapper/tests/selectors.test.js +10 -0
  189. package/v2Containers/LanguageProvider/actions.js +17 -0
  190. package/v2Containers/LanguageProvider/constants.js +8 -0
  191. package/v2Containers/LanguageProvider/index.js +46 -0
  192. package/v2Containers/LanguageProvider/reducer.js +30 -0
  193. package/v2Containers/LanguageProvider/selectors.js +20 -0
  194. package/v2Containers/LanguageProvider/tests/actions.test.js +19 -0
  195. package/v2Containers/LanguageProvider/tests/index.test.js +49 -0
  196. package/v2Containers/LanguageProvider/tests/reducer.test.js +20 -0
  197. package/v2Containers/LanguageProvider/tests/selectors.test.js +15 -0
  198. package/v2Containers/Line/Create/_lineCreate.scss +43 -0
  199. package/v2Containers/Line/Create/actions.js +90 -0
  200. package/v2Containers/Line/Create/constants.js +39 -0
  201. package/v2Containers/Line/Create/index.js +822 -0
  202. package/v2Containers/Line/Create/messages.js +173 -0
  203. package/v2Containers/Line/Create/reducer.js +99 -0
  204. package/v2Containers/Line/Create/sagas.js +107 -0
  205. package/v2Containers/Line/Create/selectors.js +36 -0
  206. package/v2Containers/Line/Edit/_lineEdit.scss +21 -0
  207. package/v2Containers/Line/Edit/actions.js +79 -0
  208. package/v2Containers/Line/Edit/constants.js +27 -0
  209. package/v2Containers/Line/Edit/index.js +1050 -0
  210. package/v2Containers/Line/Edit/messages.js +157 -0
  211. package/v2Containers/Line/Edit/reducer.js +83 -0
  212. package/v2Containers/Line/Edit/sagas.js +81 -0
  213. package/v2Containers/Line/Edit/selectors.js +29 -0
  214. package/v2Containers/Line/Edit/tests/actions.test.js +18 -0
  215. package/v2Containers/Line/Edit/tests/index.test.js +10 -0
  216. package/v2Containers/Line/Edit/tests/reducer.test.js +9 -0
  217. package/v2Containers/Line/Edit/tests/sagas.test.js +15 -0
  218. package/v2Containers/Line/Edit/tests/selectors.test.js +10 -0
  219. package/v2Containers/Login/assets/images/capillary_logo.png +0 -0
  220. package/v2Containers/Login/components/LoginForm/index.js +59 -0
  221. package/v2Containers/Login/components/LoginForm/messages.js +21 -0
  222. package/v2Containers/Login/components/LoginForm/tests/index.test.js +10 -0
  223. package/v2Containers/Login/index.js +106 -0
  224. package/v2Containers/Login/messages.js +21 -0
  225. package/v2Containers/Login/selectors.js +25 -0
  226. package/v2Containers/Login/tests/index.test.js +10 -0
  227. package/v2Containers/Login/tests/sagas.test.js +15 -0
  228. package/v2Containers/Login/tests/selectors.test.js +10 -0
  229. package/v2Containers/MobilePush/Create/_mobilePushCreate.scss +41 -0
  230. package/v2Containers/MobilePush/Create/actions.js +52 -0
  231. package/v2Containers/MobilePush/Create/constants.js +24 -0
  232. package/v2Containers/MobilePush/Create/index.js +1759 -0
  233. package/v2Containers/MobilePush/Create/messages.js +237 -0
  234. package/v2Containers/MobilePush/Create/reducer.js +72 -0
  235. package/v2Containers/MobilePush/Create/sagas.js +60 -0
  236. package/v2Containers/MobilePush/Create/selectors.js +28 -0
  237. package/v2Containers/MobilePush/Create/tests/actions.test.js +18 -0
  238. package/v2Containers/MobilePush/Create/tests/index.test.js +10 -0
  239. package/v2Containers/MobilePush/Create/tests/reducer.test.js +9 -0
  240. package/v2Containers/MobilePush/Create/tests/sagas.test.js +15 -0
  241. package/v2Containers/MobilePush/Create/tests/selectors.test.js +10 -0
  242. package/v2Containers/MobilePush/Edit/_mobilePushCreate.scss +38 -0
  243. package/v2Containers/MobilePush/Edit/actions.js +91 -0
  244. package/v2Containers/MobilePush/Edit/constants.js +35 -0
  245. package/v2Containers/MobilePush/Edit/index.js +1851 -0
  246. package/v2Containers/MobilePush/Edit/messages.js +253 -0
  247. package/v2Containers/MobilePush/Edit/reducer.js +113 -0
  248. package/v2Containers/MobilePush/Edit/sagas.js +119 -0
  249. package/v2Containers/MobilePush/Edit/selectors.js +32 -0
  250. package/v2Containers/MobilePush/Edit/tests/actions.test.js +18 -0
  251. package/v2Containers/MobilePush/Edit/tests/index.test.js +10 -0
  252. package/v2Containers/MobilePush/Edit/tests/reducer.test.js +9 -0
  253. package/v2Containers/MobilePush/Edit/tests/sagas.test.js +15 -0
  254. package/v2Containers/MobilePush/Edit/tests/selectors.test.js +10 -0
  255. package/v2Containers/MobilePush/commonMethods.js +249 -0
  256. package/v2Containers/MobilePush/eventsMap.js +127 -0
  257. package/v2Containers/MobilePush/initialSchema.js +1739 -0
  258. package/v2Containers/MobilepushWrapper/_mobilepushWrapper.scss +18 -0
  259. package/v2Containers/MobilepushWrapper/index.js +136 -0
  260. package/v2Containers/MobilepushWrapper/messages.js +29 -0
  261. package/v2Containers/MobilepushWrapper/tests/index.test.js +10 -0
  262. package/v2Containers/NotFoundPage/index.js +25 -0
  263. package/v2Containers/NotFoundPage/messages.js +13 -0
  264. package/v2Containers/NotFoundPage/tests/index.test.js +17 -0
  265. package/v2Containers/Sms/Create/_smsCreate.scss +58 -0
  266. package/v2Containers/Sms/Create/actions.js +27 -0
  267. package/v2Containers/Sms/Create/constants.js +16 -0
  268. package/v2Containers/Sms/Create/index.js +1017 -0
  269. package/v2Containers/Sms/Create/messages.js +85 -0
  270. package/v2Containers/Sms/Create/reducer.js +41 -0
  271. package/v2Containers/Sms/Create/sagas.js +35 -0
  272. package/v2Containers/Sms/Create/selectors.js +28 -0
  273. package/v2Containers/Sms/Create/tests/actions.test.js +18 -0
  274. package/v2Containers/Sms/Create/tests/index.test.js +10 -0
  275. package/v2Containers/Sms/Create/tests/reducer.test.js +9 -0
  276. package/v2Containers/Sms/Create/tests/sagas.test.js +15 -0
  277. package/v2Containers/Sms/Create/tests/selectors.test.js +10 -0
  278. package/v2Containers/Sms/Edit/actions.js +45 -0
  279. package/v2Containers/Sms/Edit/constants.js +18 -0
  280. package/v2Containers/Sms/Edit/index.js +1018 -0
  281. package/v2Containers/Sms/Edit/messages.js +89 -0
  282. package/v2Containers/Sms/Edit/reducer.js +52 -0
  283. package/v2Containers/Sms/Edit/sagas.js +50 -0
  284. package/v2Containers/Sms/Edit/selectors.js +32 -0
  285. package/v2Containers/Sms/Edit/tests/actions.test.js +18 -0
  286. package/v2Containers/Sms/Edit/tests/index.test.js +10 -0
  287. package/v2Containers/Sms/Edit/tests/reducer.test.js +9 -0
  288. package/v2Containers/Sms/Edit/tests/sagas.test.js +15 -0
  289. package/v2Containers/Sms/Edit/tests/selectors.test.js +10 -0
  290. package/v2Containers/Sms/initialSchema.js +281 -0
  291. package/v2Containers/TagList/_tagList.scss +8 -0
  292. package/v2Containers/TagList/actions.js +15 -0
  293. package/v2Containers/TagList/constants.js +7 -0
  294. package/v2Containers/TagList/index.js +236 -0
  295. package/v2Containers/TagList/messages.js +13 -0
  296. package/v2Containers/TagList/reducer.js +23 -0
  297. package/v2Containers/TagList/sagas.js +11 -0
  298. package/v2Containers/TagList/selectors.js +25 -0
  299. package/v2Containers/TagList/tests/actions.test.js +18 -0
  300. package/v2Containers/TagList/tests/index.test.js +10 -0
  301. package/v2Containers/TagList/tests/reducer.test.js +9 -0
  302. package/v2Containers/TagList/tests/sagas.test.js +15 -0
  303. package/v2Containers/TagList/tests/selectors.test.js +10 -0
  304. package/v2Containers/Templates/_templates.scss +349 -0
  305. package/v2Containers/Templates/actions.js +110 -0
  306. package/v2Containers/Templates/constants.js +45 -0
  307. package/v2Containers/Templates/index.js +1725 -0
  308. package/v2Containers/Templates/messages.js +278 -0
  309. package/v2Containers/Templates/reducer.js +142 -0
  310. package/v2Containers/Templates/sagas.js +180 -0
  311. package/v2Containers/Templates/selectors.js +68 -0
  312. package/v2Containers/Templates/tests/actions.test.js +18 -0
  313. package/v2Containers/Templates/tests/index.test.js +10 -0
  314. package/v2Containers/Templates/tests/reducer.test.js +9 -0
  315. package/v2Containers/Templates/tests/sagas.test.js +15 -0
  316. package/v2Containers/Templates/tests/selectors.test.js +10 -0
  317. package/v2Containers/TemplatesV2/_templatesV2.scss +5 -0
  318. package/v2Containers/TemplatesV2/actions.js +16 -0
  319. package/v2Containers/TemplatesV2/constants.js +10 -0
  320. package/v2Containers/TemplatesV2/index.js +217 -0
  321. package/v2Containers/TemplatesV2/messages.js +29 -0
  322. package/v2Containers/TemplatesV2/selectors.js +25 -0
  323. package/v2Containers/TemplatesV2/tests/actions.test.js +18 -0
  324. package/v2Containers/TemplatesV2/tests/index.test.js +10 -0
  325. package/v2Containers/TemplatesV2/tests/reducer.test.js +9 -0
  326. package/v2Containers/TemplatesV2/tests/sagas.test.js +15 -0
  327. package/v2Containers/TemplatesV2/tests/selectors.test.js +10 -0
  328. package/v2Containers/TestPage/constants.js +7 -0
  329. package/v2Containers/TestPage/index.js +31 -0
  330. package/v2Containers/TestPage/messages.js +13 -0
  331. package/v2Containers/TestPage/reducer.js +21 -0
  332. package/v2Containers/TestPage/sagas.js +11 -0
  333. package/v2Containers/Testv2/actions.js +15 -0
  334. package/v2Containers/Testv2/constants.js +7 -0
  335. package/v2Containers/Testv2/index.js +47 -0
  336. package/v2Containers/Testv2/messages.js +13 -0
  337. package/v2Containers/Testv2/reducer.js +23 -0
  338. package/v2Containers/Testv2/sagas.js +11 -0
  339. package/v2Containers/Testv2/selectors.js +25 -0
  340. package/v2Containers/Testv2/tests/actions.test.js +18 -0
  341. package/v2Containers/Testv2/tests/index.test.js +10 -0
  342. package/v2Containers/Testv2/tests/reducer.test.js +9 -0
  343. package/v2Containers/Testv2/tests/sagas.test.js +15 -0
  344. package/v2Containers/Testv2/tests/selectors.test.js +10 -0
  345. package/v2Containers/WeChat/MapTemplates/_mapTemplates.scss +8 -0
  346. package/v2Containers/WeChat/MapTemplates/actions.js +52 -0
  347. package/v2Containers/WeChat/MapTemplates/constants.js +28 -0
  348. package/v2Containers/WeChat/MapTemplates/index.js +1385 -0
  349. package/v2Containers/WeChat/MapTemplates/messages.js +73 -0
  350. package/v2Containers/WeChat/MapTemplates/reducer.js +74 -0
  351. package/v2Containers/WeChat/MapTemplates/sagas.js +86 -0
  352. package/v2Containers/WeChat/MapTemplates/selectors.js +25 -0
  353. package/v2Containers/WeChat/MapTemplates/tests/actions.test.js +18 -0
  354. package/v2Containers/WeChat/MapTemplates/tests/index.test.js +10 -0
  355. package/v2Containers/WeChat/MapTemplates/tests/reducer.test.js +9 -0
  356. package/v2Containers/WeChat/MapTemplates/tests/sagas.test.js +15 -0
  357. package/v2Containers/WeChat/MapTemplates/tests/selectors.test.js +10 -0
  358. package/v2Containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +57 -0
  359. package/v2Containers/WeChat/RichmediaTemplates/Create/actions.js +36 -0
  360. package/v2Containers/WeChat/RichmediaTemplates/Create/constants.js +15 -0
  361. package/v2Containers/WeChat/RichmediaTemplates/Create/index.js +1053 -0
  362. package/v2Containers/WeChat/RichmediaTemplates/Create/messages.js +141 -0
  363. package/v2Containers/WeChat/RichmediaTemplates/Create/reducer.js +60 -0
  364. package/v2Containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +497 -0
  365. package/v2Containers/WeChat/RichmediaTemplates/Create/sagas.js +48 -0
  366. package/v2Containers/WeChat/RichmediaTemplates/Create/selectors.js +37 -0
  367. package/v2Containers/WeChat/RichmediaTemplates/Create/tests/actions.test.js +18 -0
  368. package/v2Containers/WeChat/RichmediaTemplates/Create/tests/index.test.js +10 -0
  369. package/v2Containers/WeChat/RichmediaTemplates/Create/tests/reducer.test.js +9 -0
  370. package/v2Containers/WeChat/RichmediaTemplates/Create/tests/sagas.test.js +15 -0
  371. package/v2Containers/WeChat/RichmediaTemplates/Create/tests/selectors.test.js +10 -0
  372. package/v2Containers/WeChat/RichmediaTemplates/Edit/actions.js +20 -0
  373. package/v2Containers/WeChat/RichmediaTemplates/Edit/constants.js +10 -0
  374. package/v2Containers/WeChat/RichmediaTemplates/Edit/index.js +116 -0
  375. package/v2Containers/WeChat/RichmediaTemplates/Edit/messages.js +13 -0
  376. package/v2Containers/WeChat/RichmediaTemplates/Edit/reducer.js +28 -0
  377. package/v2Containers/WeChat/RichmediaTemplates/Edit/sagas.js +32 -0
  378. package/v2Containers/WeChat/RichmediaTemplates/Edit/selectors.js +30 -0
  379. package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/actions.test.js +18 -0
  380. package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/index.test.js +10 -0
  381. package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/reducer.test.js +9 -0
  382. package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/sagas.test.js +15 -0
  383. package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/selectors.test.js +10 -0
  384. package/v2Containers/WeChat/RichmediaTemplates/View/actions.js +15 -0
  385. package/v2Containers/WeChat/RichmediaTemplates/View/constants.js +7 -0
  386. package/v2Containers/WeChat/RichmediaTemplates/View/index.js +47 -0
  387. package/v2Containers/WeChat/RichmediaTemplates/View/messages.js +13 -0
  388. package/v2Containers/WeChat/RichmediaTemplates/View/reducer.js +23 -0
  389. package/v2Containers/WeChat/RichmediaTemplates/View/sagas.js +11 -0
  390. package/v2Containers/WeChat/RichmediaTemplates/View/selectors.js +25 -0
  391. package/v2Containers/WeChat/RichmediaTemplates/View/tests/actions.test.js +18 -0
  392. package/v2Containers/WeChat/RichmediaTemplates/View/tests/index.test.js +10 -0
  393. package/v2Containers/WeChat/RichmediaTemplates/View/tests/reducer.test.js +9 -0
  394. package/v2Containers/WeChat/RichmediaTemplates/View/tests/sagas.test.js +15 -0
  395. package/v2Containers/WeChat/RichmediaTemplates/View/tests/selectors.test.js +10 -0
@@ -0,0 +1,157 @@
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: 'app.containers.Line.Edit.ImageUploadLabel',
11
+ defaultMessage: 'Upload Image',
12
+ },
13
+ "Enter template name*": {
14
+ id: 'app.containers.Line.Edit.enterTemplateNameImportant',
15
+ defaultMessage: 'Enter template name*',
16
+ },
17
+ "Enter template name": {
18
+ id: 'app.containers.Line.Edit.enterTemplateName',
19
+ defaultMessage: 'Enter template name',
20
+ },
21
+ "Template name cannot be empty": {
22
+ id: 'app.containers.Line.Edit.templateCantEmpty',
23
+ defaultMessage: 'Template name cannot be empty',
24
+ },
25
+ "Discard Changes": {
26
+ id: 'app.containers.Line.Edit.discardChanges',
27
+ defaultMessage: 'Discard Changes',
28
+ },
29
+ "Cancel": {
30
+ id: 'app.containers.Line.Edit.cancel',
31
+ defaultMessage: 'Cancel',
32
+ },
33
+ "Save": {
34
+ id: 'app.containers.Line.Edit.save',
35
+ defaultMessage: 'Save',
36
+ },
37
+ "Select Line Template": {
38
+ id: 'app.containers.Line.Edit.selectLineTemplate',
39
+ defaultMessage: 'Select Line Template',
40
+ },
41
+ "Template": {
42
+ id: 'app.containers.Line.Edit.template',
43
+ defaultMessage: 'Template',
44
+ },
45
+ "Title*": {
46
+ id: 'app.containers.Line.Edit.titleLabel',
47
+ defaultMessage: 'Title*',
48
+ },
49
+ "Title": {
50
+ id: 'app.containers.Line.Edit.title',
51
+ defaultMessage: 'Title',
52
+ },
53
+ "Please input message title name.": {
54
+ id: 'app.containers.Line.Edit.titleNameInvalid',
55
+ defaultMessage: 'Please enter the message title',
56
+ },
57
+ "Template message has unsupported/missing tags!": {
58
+ id: 'app.containers.Line.Edit.messageHasUnsupportedTag',
59
+ defaultMessage: 'Please check the message content for unsupported/missing tags',
60
+ },
61
+ "Tags": {
62
+ id: 'app.containers.Line.Edit.Tags',
63
+ defaultMessage: 'Tags',
64
+ },
65
+ "Message*": {
66
+ id: 'app.containers.Line.Edit.messageLabel',
67
+ defaultMessage: 'Message*',
68
+ },
69
+ "Message": {
70
+ id: 'app.containers.Line.Edit.message',
71
+ defaultMessage: 'Message',
72
+ },
73
+ "Please input mobile push template content.": {
74
+ id: 'app.containers.Line.Edit.inputLineTemplateContent',
75
+ defaultMessage: 'Please enter the message content',
76
+ },
77
+ "Template title has unsupported/missing tags.": {
78
+ id: 'app.containers.Line.Edit.titleHasUnsupportedTag',
79
+ defaultMessage: 'Please check the message content for unsupported/missing tags',
80
+ },
81
+ "Template name cannot be empty.": {
82
+ id: 'app.containers.Line.Edit.templateNameNotEmpty',
83
+ defaultMessage: 'Please provide a template name ',
84
+ },
85
+ "Message title has unsupported/missing tags!": {
86
+ id: 'app.containers.Line.Edit.messageTitleWithUnsupportedTag',
87
+ defaultMessage: 'Please check the message content for unsupported/missing tags',
88
+ },
89
+ "Image": {
90
+ id: 'app.containers.Line.Edit.Image',
91
+ defaultMessage: 'Image',
92
+ },
93
+ "Max file size acceptable is 5mb": {
94
+ id: 'app.containers.Line.Edit.maxUploadFileSize',
95
+ defaultMessage: 'Max file size acceptable is 5mb',
96
+ },
97
+ "Please upload Image": {
98
+ id: 'app.containers.Line.Edit.pleaseUploadImage',
99
+ defaultMessage: 'Please upload Image',
100
+ },
101
+ "Upload Image": {
102
+ id: 'app.containers.Line.Edit.uploadImage',
103
+ defaultMessage: 'Upload Image',
104
+ },
105
+ "Line Template Edited Successfully": {
106
+ id: 'app.containers.Line.Edit.templateEditedSuccessfully',
107
+ defaultMessage: 'Line Template Edited Successfully',
108
+ },
109
+ "somethingWentWrong": {
110
+ id: 'app.containers.Line.Edit.somethingWentWrong',
111
+ defaultMessage: 'Something Went Wrong!!',
112
+ },
113
+ "Do you really want to go back? All your temporary changes will be lost!": {
114
+ id: 'app.containers.Line.Edit.goBackConfirmation',
115
+ defaultMessage: "Going back will discard all the changes you've made. Continue?",
116
+ },
117
+ "Name and Description": {
118
+ id: 'app.containers.Line.Edit.nameAndDescription',
119
+ defaultMessage: 'Name and Description',
120
+ },
121
+ "Button 1": {
122
+ id: 'app.containers.Line.Edit.button1',
123
+ defaultMessage: 'Button 1',
124
+ },
125
+ "Button 2": {
126
+ id: 'app.containers.Line.Edit.button2',
127
+ defaultMessage: 'Button 2',
128
+ },
129
+ "File size cannot be more than 5mb": {
130
+ id: 'app.containers.Line.Edit.uploadFileSizeError',
131
+ defaultMessage: 'File size cannot be more than 5mb',
132
+ },
133
+ "value cannot be empty.": {
134
+ id: 'app.containers.Line.Edit.valueCantEmpty',
135
+ defaultMessage: 'value cannot be empty.',
136
+ },
137
+ "Uploading Image...": {
138
+ id: 'app.containers.Line.Edit.uploadingImage',
139
+ defaultMessage: 'Uploading Image...',
140
+ },
141
+ "Campaigns": {
142
+ id: 'app.containers.Line.Edit.Campaigns',
143
+ defaultMessage: 'Campaigns',
144
+ },
145
+ "Creatives": {
146
+ id: 'app.containers.Line.Edit.Creatives',
147
+ defaultMessage: 'Creatives',
148
+ },
149
+ "Line": {
150
+ id: 'app.containers.Line.Edit.mobilePush',
151
+ defaultMessage: 'Mobile Push',
152
+ },
153
+ "template not configured,": {
154
+ id: 'app.containers.Line.Edit.templateNotConfigured',
155
+ defaultMessage: 'template not configured,',
156
+ },
157
+ });
@@ -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,81 @@
1
+ import { call, put, takeLatest, take, cancel } from 'redux-saga/effects';
2
+ import { LOCATION_CHANGE } from 'react-router-redux';
3
+ // import { schema, normalize } from 'normalizr';
4
+ import * as Api from '../../../services/api';
5
+ import * as types from './constants';
6
+
7
+ // Individual exports for testing
8
+ export function* editTemplate(template) {
9
+ let errorMsg;
10
+ try {
11
+ console.log('saga editTemplate line', template);
12
+ const result = yield call(Api.createLineTemplate, template);
13
+ console.log('saga editTemplate success line', result);
14
+ if (result.message || result.status.code === 500) {
15
+ errorMsg = result.message;
16
+ }
17
+ yield put({ type: types.EDIT_TEMPLATE_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
18
+ } catch (error) {
19
+ yield put({ type: types.EDIT_TEMPLATE_FAILURE, error, errorMsg });
20
+ }
21
+ }
22
+
23
+ export function* getTemplateDetails(id) {
24
+ try {
25
+ console.log('saga get Template details line', id);
26
+ const result = yield call(Api.getTemplateDetails, id);
27
+ // const sidebar = result.response.sidebar;
28
+ yield put({ type: types.GET_TEMPLATE_DETAILS_SUCCESS, data: result.response });
29
+ } catch (error) {
30
+ yield put({ type: types.GET_TEMPLATE_DETAILS_FAILURE, error });
31
+ }
32
+ }
33
+
34
+ export function* uploadAsset(file, assetType, fileParams, mode) {
35
+ try {
36
+ const result = yield call(Api.uploadFile, file, assetType, fileParams, mode);
37
+ yield put({ type: types.UPLOAD_ASSET_SUCCESS, data: result.response.asset, statusCode: result.status ? result.status.code : '' });
38
+ } catch (error) {
39
+ yield put({ type: types.UPLOAD_ASSET_FAILURE, error });
40
+ }
41
+ }
42
+
43
+ export function* getLineTemplatesList(params) {
44
+ try {
45
+ console.log('Saga param line ', params.channel, params.queryParams);
46
+ const result = yield call(Api.getAllTemplates, {channel: params.channel, queryParams: params.queryParams});
47
+ yield put({ type: types.GET_LINE_TEMPLATES_LIST_SUCCESS, data: result.response.templates, templateData: result.response.mapped});
48
+ } catch (error) {
49
+ yield put({ type: types.GET_LINE_TEMPLATES_LIST_FAILURE, error });
50
+ }
51
+ }
52
+
53
+ function* watchEditTemplate() {
54
+ const watcher = yield takeLatest(types.EDIT_TEMPLATE_REQUEST, editTemplate);
55
+ yield take(LOCATION_CHANGE);
56
+ yield cancel(watcher);
57
+ }
58
+
59
+ function* watchGetTemplateDetails() {
60
+ const watcher = yield takeLatest(types.GET_TEMPLATE_DETAILS_REQUEST, getTemplateDetails);
61
+ yield take(LOCATION_CHANGE);
62
+ yield cancel(watcher);
63
+ }
64
+
65
+ function* watchUploadAsset() {
66
+ const watcher = yield takeLatest(types.UPLOAD_ASSET_REQUEST, uploadAsset);
67
+ yield take(LOCATION_CHANGE);
68
+ yield cancel(watcher);
69
+ }
70
+
71
+ function* watchLineTemplatesList() {
72
+ const watcher = yield takeLatest(types.GET_LINE_TEMPLATES_LIST_REQUEST, getLineTemplatesList);
73
+ yield take(LOCATION_CHANGE);
74
+ yield cancel(watcher);
75
+ }
76
+
77
+ // All sagas to be loaded
78
+ export default [
79
+ watchEditTemplate, watchGetTemplateDetails, watchLineTemplatesList,
80
+ watchUploadAsset,
81
+ ];
@@ -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,18 @@
1
+
2
+ import {
3
+ defaultAction,
4
+ } from '../actions';
5
+ import {
6
+ DEFAULT_ACTION,
7
+ } from '../constants';
8
+
9
+ describe('Create actions', () => {
10
+ describe('Default Action', () => {
11
+ it('has a type of DEFAULT_ACTION', () => {
12
+ const expected = {
13
+ type: DEFAULT_ACTION,
14
+ };
15
+ expect(defaultAction()).toEqual(expected);
16
+ });
17
+ });
18
+ });
@@ -0,0 +1,10 @@
1
+ // import React from 'react';
2
+ // import { shallow } from 'enzyme';
3
+
4
+ // import { Create } from '../index';
5
+
6
+ describe('<Create />', () => {
7
+ it('Expect to have unit tests specified', () => {
8
+ expect(true).toEqual(false);
9
+ });
10
+ });
@@ -0,0 +1,9 @@
1
+
2
+ import { fromJS } from 'immutable';
3
+ import createReducer from '../reducer';
4
+
5
+ describe('createReducer', () => {
6
+ it('returns the initial state', () => {
7
+ expect(createReducer(undefined, {})).toEqual(fromJS({}));
8
+ });
9
+ });
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Test sagas
3
+ */
4
+
5
+ /* eslint-disable redux-saga/yield-effects */
6
+ // import { take, call, put, select } from 'redux-saga/effects';
7
+ // import { defaultSaga } from '../sagas';
8
+
9
+ // const generator = defaultSaga();
10
+
11
+ describe('defaultSaga Saga', () => {
12
+ it('Expect to have unit tests specified', () => {
13
+ expect(true).toEqual(false);
14
+ });
15
+ });
@@ -0,0 +1,10 @@
1
+ // import { fromJS } from 'immutable';
2
+ // import { makeSelectCreateDomain } from '../selectors';
3
+
4
+ // const selector = makeSelectCreateDomain();
5
+
6
+ describe('makeSelectCreateDomain', () => {
7
+ it('Expect to have unit tests specified', () => {
8
+ expect(true).toEqual(false);
9
+ });
10
+ });
@@ -0,0 +1,59 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ import { Form, Icon } from 'antd';
4
+ import { CapInput, CapButton } from '@capillarytech/cap-ui-library';
5
+ const FormItem = Form.Item;
6
+
7
+ class NormalLoginForm extends React.Component {
8
+ handleSubmit = (e) => {
9
+ e.preventDefault();
10
+ this.props.form.validateFields((err, values) => {
11
+ if (!err) {
12
+ this.props.authenticate(values);
13
+ }
14
+ });
15
+ }
16
+
17
+ render() {
18
+ const { getFieldDecorator } = this.props.form;
19
+ return (
20
+ <Form onSubmit={this.handleSubmit} className="login-form">
21
+ <FormItem className="login-form-item">
22
+ {getFieldDecorator('username', {
23
+ rules: [{ required: true, message: 'Please input your username!' }],
24
+ })(
25
+ <CapInput prefix={<Icon type="user" style={{ fontSize: 13 }} />} placeholder="Username" />
26
+ )}
27
+ </FormItem>
28
+ <FormItem className="login-form-item">
29
+ {getFieldDecorator('password', {
30
+ rules: [{ required: true, message: 'Please input your Password!' }],
31
+ })(
32
+ <CapInput prefix={<Icon type="lock" style={{ fontSize: 13 }} />} type="password" placeholder="Password" />
33
+ )}
34
+ </FormItem>
35
+ {this.props.isError
36
+ ? <FormItem>
37
+ <span style={{color: "red"}}>{"Invalid or Incorrect credentials!"}</span>
38
+ </FormItem>
39
+ : null
40
+ }
41
+ <FormItem>
42
+ <CapButton loading={this.props.loginInProgress} type="primary" htmlType="submit" className="login-form-button">
43
+ Log in
44
+ </CapButton>
45
+ </FormItem>
46
+ </Form>
47
+ );
48
+ }
49
+ }
50
+
51
+ NormalLoginForm.propTypes = {
52
+ authenticate: PropTypes.func.isRequired,
53
+ loginInProgress: PropTypes.bool,
54
+ isError: PropTypes.bool,
55
+ form: PropTypes.object,
56
+ };
57
+
58
+ const WrappedNormalLoginForm = Form.create()(NormalLoginForm);
59
+ export default WrappedNormalLoginForm;
@@ -0,0 +1,21 @@
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: 'reon.modules.Login.components.LoginForm.input.username',
11
+ defaultMessage: 'Username or Email',
12
+ },
13
+ password: {
14
+ id: 'reon.modules.Login.components.LoginForm.input.password',
15
+ defaultMessage: 'Password',
16
+ },
17
+ loginButton: {
18
+ id: 'reon.modules.Login.components.LoginForm.input.loginButton',
19
+ defaultMessage: 'Login',
20
+ },
21
+ });
@@ -0,0 +1,10 @@
1
+ // import React from 'react';
2
+ // import { shallow } from 'enzyme';
3
+
4
+ // import LoginForm from '../index';
5
+
6
+ describe('<LoginForm />', () => {
7
+ it('Expect to have unit tests specified', () => {
8
+ expect(true).toEqual(false);
9
+ });
10
+ });
@@ -0,0 +1,106 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ import { connect } from 'react-redux';
4
+ import Helmet from 'react-helmet';
5
+ import { FormattedMessage } from 'react-intl';
6
+ import { routerActions } from 'react-router-redux';
7
+ import { Row, Col } from 'antd';
8
+ import { bindActionCreators } from 'redux';
9
+ import { createStructuredSelector } from 'reselect';
10
+ import makeSelectLogin from './selectors';
11
+ import messages from './messages';
12
+ import config from '../../config/app';
13
+ import LoginForm from './components/LoginForm';
14
+ import * as actions from '../../containers/Cap/actions';
15
+ import { UserIsNotAuthenticated } from '../../utils/authWrapper';
16
+ import loaderGif from '../../assets/loading_img.gif';
17
+ const logo = require('./assets/images/capillary_logo.png');
18
+
19
+ export class Login extends React.Component { // eslint-disable-line react/prefer-stateless-function
20
+ constructor(props) {
21
+ super(props);
22
+ this.state = {
23
+ message: '',
24
+ isLoginError: false,
25
+ };
26
+ }
27
+
28
+ componentWillMount() {
29
+ const isAuthenticated = this.props.Login.token !== '';
30
+ const replace = this.props.replace;
31
+ if ((this.props.Login.login_progress === false) && (this.props.Login.fetching_userdata === false) && isAuthenticated) {
32
+ replace(process.env.NODE_ENV === 'production' ? config.production.dashboard_url : config.development.dashboard_url);
33
+ }
34
+ }
35
+
36
+ componentWillReceiveProps(nextProps) {
37
+ const isAuthenticated = nextProps.Login.token !== undefined && nextProps.Login.token !== '';
38
+ const wasAuthenticated = this.props.Login.token !== undefined && this.props.Login.token !== '';
39
+ if (this.props.Login && this.props.Login.isError) {
40
+ this.setState({ isLoginError: true });
41
+ } else {
42
+ this.setState({ isLoginError: false });
43
+ }
44
+
45
+ if (!wasAuthenticated && isAuthenticated) {
46
+ let redirectUrl = process.env.NODE_ENV === 'production' ? config.production.dashboard_url : config.development.dashboard_url;
47
+ if (this.props.location.query.redirect) redirectUrl = this.props.location.query.redirect;
48
+ this.props.router.push({ pathname: redirectUrl, state: {} });
49
+ this.props.router.go(redirectUrl);
50
+ }
51
+ }
52
+
53
+ render() {
54
+ const loginProgress = this.props.Login.login_progress;
55
+ return (
56
+ <div className={this.props.Login.fetching_userdata ? "opacity-class" : ""}>
57
+ <FormattedMessage {...messages.pageTitle}>{(message) =>
58
+ <Helmet
59
+ title={message}
60
+ meta={[
61
+ { name: 'description', content: 'Login Page' },
62
+ ]}
63
+ />}
64
+ </FormattedMessage>
65
+ <Row align="middle" justify="center" type="flex" className="login-container">
66
+ {process.env.NODE_ENV === "production"
67
+ ? <div className="cap-loader-box">
68
+ <img
69
+ className="loader-image"
70
+ src={loaderGif}
71
+ alt="Capillary"/>
72
+ </div>
73
+ : <Col className="login-box" style={{textAlign: 'center'}}>
74
+ <h2 className="ui image header">
75
+ <img alt="" src={logo} className="login-logo" />
76
+ </h2>
77
+ <LoginForm isError={this.state.isLoginError} authenticate={this.props.actions.authenticate} loginInProgress={loginProgress} />
78
+ </Col>
79
+ }
80
+ </Row>
81
+ </div>
82
+ );
83
+ }
84
+ }
85
+
86
+ Login.propTypes = {
87
+ actions: PropTypes.object.isRequired,
88
+ Login: PropTypes.object,
89
+ replace: PropTypes.func,
90
+ login_progress: PropTypes.bool,
91
+ location: PropTypes.object,
92
+ router: PropTypes.object,
93
+ };
94
+
95
+ const mapStateToProps = createStructuredSelector({
96
+ Login: makeSelectLogin(),
97
+ });
98
+
99
+ function mapDispatchToProps(dispatch) {
100
+ return {
101
+ actions: bindActionCreators(actions, dispatch),
102
+ replace: routerActions.replace,
103
+ };
104
+ }
105
+
106
+ export default UserIsNotAuthenticated(connect(mapStateToProps, mapDispatchToProps)(Login));
@@ -0,0 +1,21 @@
1
+ /*
2
+ * Login Messages
3
+ *
4
+ * This contains all the text for the Login component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ pageTitle: {
10
+ id: 'app.containers.Login.pageTitle',
11
+ defaultMessage: 'Login',
12
+ },
13
+ header: {
14
+ id: 'app.containers.Login.header',
15
+ defaultMessage: 'This is Login container change !',
16
+ },
17
+ invalidCredential: {
18
+ id: 'app.containers.Login.invalidCredential',
19
+ defaultMessage: 'Invalid Username or Password',
20
+ },
21
+ });
@@ -0,0 +1,25 @@
1
+ import { createSelector } from 'reselect';
2
+
3
+ /**
4
+ * Direct selector to the login state domain
5
+ */
6
+ const selectLoginDomain = () => (state) => state.get('cap');
7
+
8
+ /**
9
+ * Other specific selectors
10
+ */
11
+
12
+
13
+ /**
14
+ * Default selector used by Login
15
+ */
16
+
17
+ const makeSelectLogin = () => createSelector(
18
+ selectLoginDomain(),
19
+ (substate) => substate.toJS()
20
+ );
21
+
22
+ export default makeSelectLogin;
23
+ export {
24
+ selectLoginDomain,
25
+ };
@@ -0,0 +1,10 @@
1
+ // import React from 'react';
2
+ // import { shallow } from 'enzyme';
3
+
4
+ // import { Login } from '../index';
5
+
6
+ describe('<Login />', () => {
7
+ it('Expect to have unit tests specified', () => {
8
+ expect(true).toEqual(false);
9
+ });
10
+ });