@capillarytech/creatives-library 8.0.140 → 8.0.142-alpha.0

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 (314) hide show
  1. package/constants/unified.js +189 -0
  2. package/index.js +4 -2
  3. package/initialReducer.js +0 -2
  4. package/package.json +1 -1
  5. package/routes.js +136 -202
  6. package/services/api.js +0 -5
  7. package/services/getSchema.js +1 -1
  8. package/services/localStorageApi.js +1 -0
  9. package/tests/i18n.test.js +1 -1
  10. package/utils/authWrapper.js +1 -1
  11. package/utils/common.js +2 -2
  12. package/utils/tagValidations.js +1 -1
  13. package/utils/tests/authWrapper.test.js +1 -1
  14. package/utils/tests/checkStore.test.js +1 -1
  15. package/utils/tests/customAuth.test.js +1 -1
  16. package/utils/transformerUtils.js +1 -1
  17. package/v2Components/CapTagList/index.js +9 -14
  18. package/v2Components/Carousel/style.scss +1 -1
  19. package/v2Components/EmailMobilePreview/index.js +2 -2
  20. package/v2Components/FormBuilder/index.js +2 -3
  21. package/v2Components/MobilePushPreviewV2/index.js +0 -8
  22. package/v2Components/TemplatePreview/index.js +4 -29
  23. package/v2Containers/BeeEditor/index.js +0 -1
  24. package/v2Containers/Cap/tests/saga.test.js +1 -1
  25. package/v2Containers/CreativesContainer/SlideBoxContent.js +8 -26
  26. package/v2Containers/CreativesContainer/index.js +2 -12
  27. package/v2Containers/Email/index.js +1 -8
  28. package/v2Containers/FTP/index.js +1 -1
  29. package/v2Containers/InApp/actions.js +0 -7
  30. package/v2Containers/InApp/constants.js +1 -5
  31. package/v2Containers/InApp/index.js +53 -76
  32. package/v2Containers/InApp/reducer.js +0 -17
  33. package/v2Containers/InApp/sagas.js +0 -27
  34. package/v2Containers/InApp/selectors.js +1 -23
  35. package/v2Containers/Line/Container/Text/index.js +1 -1
  36. package/v2Containers/Sms/Create/index.js +2 -2
  37. package/v2Containers/Sms/Edit/index.js +1 -1
  38. package/v2Containers/TagList/index.js +1 -1
  39. package/v2Containers/TagList/utils.js +1 -1
  40. package/v2Containers/Templates/index.js +1 -1
  41. package/v2Containers/Templates/sagas.js +1 -1
  42. package/components/BreadCrumbs/index.js +0 -65
  43. package/components/BreadCrumbs/messages.js +0 -13
  44. package/components/CapTagList/index.js +0 -235
  45. package/components/CapTagList/messages.js +0 -45
  46. package/components/Card/_customCard.scss +0 -40
  47. package/components/Card/index.js +0 -78
  48. package/components/Card/tests/__snapshots__/index.test.js.snap +0 -22
  49. package/components/Card/tests/index.test.js +0 -20
  50. package/components/CardGrid/index.js +0 -71
  51. package/components/Ckeditor/index.js +0 -238
  52. package/components/Ckeditor/messages.js +0 -13
  53. package/components/Ckeditor/style.scss +0 -3
  54. package/components/Component/index.js +0 -29
  55. package/components/CustomPopOver/index.js +0 -81
  56. package/components/CustomPopOver/messages.js +0 -17
  57. package/components/DateFilter/index.js +0 -349
  58. package/components/DateFilter/messages.js +0 -57
  59. package/components/DateRange/index.js +0 -114
  60. package/components/DateRange/messages.js +0 -25
  61. package/components/Edmeditor/index.js +0 -65
  62. package/components/Edmeditor/messages.js +0 -13
  63. package/components/EmailPreview/_emailPreview.scss +0 -119
  64. package/components/EmailPreview/assets/images/iPad.svg +0 -10
  65. package/components/EmailPreview/assets/images/mobile.png +0 -0
  66. package/components/EmailPreview/index.js +0 -107
  67. package/components/EmailPreview/messages.js +0 -33
  68. package/components/Footer/index.js +0 -27
  69. package/components/Footer/messages.js +0 -13
  70. package/components/FormBuilder/_formBuilder.scss +0 -83
  71. package/components/FormBuilder/index.js +0 -3279
  72. package/components/FormBuilder/messages.js +0 -61
  73. package/components/Header/index.js +0 -44
  74. package/components/Header/messages.js +0 -29
  75. package/components/ImagePreview/_imagePreview.scss +0 -63
  76. package/components/ImagePreview/index.js +0 -52
  77. package/components/ImagePreview/messages.js +0 -17
  78. package/components/PageHeader/_pageHeader.scss +0 -22
  79. package/components/PageHeader/index.js +0 -37
  80. package/components/PageHeader/messages.js +0 -13
  81. package/components/Pagination/_pagination.scss +0 -5
  82. package/components/Pagination/index.js +0 -49
  83. package/components/PreviewSideBar/_previewsidebar.scss +0 -28
  84. package/components/PreviewSideBar/index.js +0 -152
  85. package/components/PreviewSideBar/messages.js +0 -41
  86. package/components/Sidebar/_sidebar.scss +0 -115
  87. package/components/Sidebar/index.js +0 -214
  88. package/components/Sidebar/messages.js +0 -21
  89. package/components/SlideBox/_slideBox.scss +0 -63
  90. package/components/SlideBox/index.js +0 -47
  91. package/components/SlideBox/tests/index.test.js +0 -103
  92. package/components/SmsEditor/index.js +0 -55
  93. package/components/SmsTest/index.js +0 -117
  94. package/components/SmsTest/messages.js +0 -21
  95. package/components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +0 -42
  96. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +0 -141
  97. package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +0 -21
  98. package/components/TemplatePreview/_templatePreview.scss +0 -642
  99. package/components/TemplatePreview/assets/images/WECHAT_5x.png +0 -0
  100. package/components/TemplatePreview/assets/images/androidPushMessage.svg +0 -45
  101. package/components/TemplatePreview/assets/images/home-screen-android.svg +0 -21
  102. package/components/TemplatePreview/assets/images/home-screen-ios.svg +0 -16
  103. package/components/TemplatePreview/assets/images/iPhonePushMessage.svg +0 -135
  104. package/components/TemplatePreview/assets/images/mobile.svg +0 -24
  105. package/components/TemplatePreview/assets/images/sms-body.png +0 -0
  106. package/components/TemplatePreview/assets/images/sms-icon.png +0 -0
  107. package/components/TemplatePreview/assets/images/sms_mobile.png +0 -0
  108. package/components/TemplatePreview/assets/images/sms_mobile_android.svg +0 -22
  109. package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +0 -16
  110. package/components/TemplatePreview/assets/images/user-icon.svg +0 -19
  111. package/components/TemplatePreview/assets/images/wechat-mobile.svg +0 -78
  112. package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +0 -20
  113. package/components/TemplatePreview/index.js +0 -617
  114. package/components/TemplatePreview/messages.js +0 -78
  115. package/components/Toastr/index.js +0 -60
  116. package/components/Toastr/messages.js +0 -13
  117. package/components/ToastrMessage/index.js +0 -113
  118. package/components/ToastrMessage/messages.js +0 -17
  119. package/components/TopBar/_topbar.scss +0 -46
  120. package/components/TopBar/assets/images/capillary_logo.png +0 -0
  121. package/components/TopBar/assets/images/old_capillary_logo.png +0 -0
  122. package/components/TopBar/index.js +0 -113
  123. package/components/TopBar/messages.js +0 -29
  124. package/containers/App/actions.js +0 -7
  125. package/containers/App/constants.js +0 -114
  126. package/containers/App/index.js +0 -52
  127. package/containers/App/reducer.js +0 -19
  128. package/containers/App/sagas.js +0 -31
  129. package/containers/App/selectors.js +0 -25
  130. package/containers/App/test/saga.test.js +0 -11
  131. package/containers/Assets/Gallery/_gallery.scss +0 -126
  132. package/containers/Assets/Gallery/actions.js +0 -37
  133. package/containers/Assets/Gallery/constants.js +0 -23
  134. package/containers/Assets/Gallery/index.js +0 -473
  135. package/containers/Assets/Gallery/messages.js +0 -93
  136. package/containers/Assets/Gallery/reducer.js +0 -81
  137. package/containers/Assets/Gallery/sagas.js +0 -80
  138. package/containers/Assets/Gallery/selectors.js +0 -25
  139. package/containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +0 -9
  140. package/containers/Assets/Gallery/tests/actions.test.js +0 -25
  141. package/containers/Assets/Gallery/tests/reducer.test.js +0 -96
  142. package/containers/Assets/Gallery/tests/saga.test.js +0 -157
  143. package/containers/Cap/actions.js +0 -66
  144. package/containers/Cap/constants.js +0 -25
  145. package/containers/Cap/index.js +0 -402
  146. package/containers/Cap/messages.js +0 -75
  147. package/containers/Cap/reducer.js +0 -113
  148. package/containers/Cap/sagas.js +0 -159
  149. package/containers/Cap/selectors.js +0 -75
  150. package/containers/Cap/tests/__snapshots__/index.test.js.snap +0 -2270
  151. package/containers/Cap/tests/index.test.js +0 -22
  152. package/containers/Cap/tests/saga.test.js +0 -284
  153. package/containers/Dashboard/actions.js +0 -15
  154. package/containers/Dashboard/constants.js +0 -7
  155. package/containers/Dashboard/index.js +0 -76
  156. package/containers/Dashboard/messages.js +0 -13
  157. package/containers/Dashboard/reducer.js +0 -21
  158. package/containers/Dashboard/sagas.js +0 -17
  159. package/containers/Dashboard/selectors.js +0 -25
  160. package/containers/Dashboard/test/saga.test.js +0 -9
  161. package/containers/Ebill/_ebill.scss +0 -5
  162. package/containers/Ebill/actions.js +0 -43
  163. package/containers/Ebill/constants.js +0 -20
  164. package/containers/Ebill/index.js +0 -1278
  165. package/containers/Ebill/messages.js +0 -77
  166. package/containers/Ebill/reducer.js +0 -72
  167. package/containers/Ebill/sagas.js +0 -74
  168. package/containers/Ebill/selectors.js +0 -25
  169. package/containers/Ebill/test/saga.test.js +0 -11
  170. package/containers/Email/_email.scss +0 -141
  171. package/containers/Email/actions.js +0 -81
  172. package/containers/Email/constants.js +0 -36
  173. package/containers/Email/index.js +0 -3325
  174. package/containers/Email/messages.js +0 -289
  175. package/containers/Email/reducer.js +0 -142
  176. package/containers/Email/sagas.js +0 -135
  177. package/containers/Email/selectors.js +0 -31
  178. package/containers/Email/test/saga.test.js +0 -671
  179. package/containers/LanguageProvider/actions.js +0 -17
  180. package/containers/LanguageProvider/constants.js +0 -8
  181. package/containers/LanguageProvider/index.js +0 -80
  182. package/containers/LanguageProvider/reducer.js +0 -30
  183. package/containers/LanguageProvider/selectors.js +0 -20
  184. package/containers/LanguageProvider/tests/actions.test.js +0 -19
  185. package/containers/LanguageProvider/tests/index.test.js +0 -78
  186. package/containers/LanguageProvider/tests/reducer.test.js +0 -20
  187. package/containers/LanguageProvider/tests/selectors.test.js +0 -15
  188. package/containers/Line/Create/_lineCreate.scss +0 -54
  189. package/containers/Line/Create/actions.js +0 -90
  190. package/containers/Line/Create/constants.js +0 -39
  191. package/containers/Line/Create/index.js +0 -836
  192. package/containers/Line/Create/messages.js +0 -189
  193. package/containers/Line/Create/reducer.js +0 -99
  194. package/containers/Line/Create/sagas.js +0 -121
  195. package/containers/Line/Create/selectors.js +0 -36
  196. package/containers/Line/Create/tests/saga.test.js +0 -202
  197. package/containers/Line/Edit/_lineEdit.scss +0 -35
  198. package/containers/Line/Edit/actions.js +0 -79
  199. package/containers/Line/Edit/constants.js +0 -27
  200. package/containers/Line/Edit/index.js +0 -1050
  201. package/containers/Line/Edit/messages.js +0 -177
  202. package/containers/Line/Edit/reducer.js +0 -83
  203. package/containers/Line/Edit/sagas.js +0 -80
  204. package/containers/Line/Edit/selectors.js +0 -29
  205. package/containers/Line/Edit/test/saga.test.js +0 -160
  206. package/containers/Login/assets/images/capillary_logo.png +0 -0
  207. package/containers/Login/components/LoginForm/index.js +0 -62
  208. package/containers/Login/components/LoginForm/messages.js +0 -33
  209. package/containers/Login/index.js +0 -130
  210. package/containers/Login/messages.js +0 -25
  211. package/containers/Login/selectors.js +0 -25
  212. package/containers/MobilePush/Create/_mobilePushCreate.scss +0 -39
  213. package/containers/MobilePush/Create/actions.js +0 -46
  214. package/containers/MobilePush/Create/constants.js +0 -23
  215. package/containers/MobilePush/Create/index.js +0 -2303
  216. package/containers/MobilePush/Create/messages.js +0 -269
  217. package/containers/MobilePush/Create/reducer.js +0 -70
  218. package/containers/MobilePush/Create/sagas.js +0 -74
  219. package/containers/MobilePush/Create/selectors.js +0 -28
  220. package/containers/MobilePush/Create/test/saga.test.js +0 -19
  221. package/containers/MobilePush/Edit/_mobilePushCreate.scss +0 -39
  222. package/containers/MobilePush/Edit/actions.js +0 -91
  223. package/containers/MobilePush/Edit/constants.js +0 -35
  224. package/containers/MobilePush/Edit/index.js +0 -2601
  225. package/containers/MobilePush/Edit/messages.js +0 -266
  226. package/containers/MobilePush/Edit/reducer.js +0 -112
  227. package/containers/MobilePush/Edit/sagas.js +0 -126
  228. package/containers/MobilePush/Edit/selectors.js +0 -29
  229. package/containers/MobilePush/Edit/tests/saga.test.js +0 -255
  230. package/containers/NotFoundPage/index.js +0 -25
  231. package/containers/NotFoundPage/messages.js +0 -13
  232. package/containers/NotFoundPage/tests/index.test.js +0 -17
  233. package/containers/Sms/Create/_smsCreate.scss +0 -42
  234. package/containers/Sms/Create/actions.js +0 -27
  235. package/containers/Sms/Create/constants.js +0 -16
  236. package/containers/Sms/Create/index.js +0 -1488
  237. package/containers/Sms/Create/messages.js +0 -109
  238. package/containers/Sms/Create/reducer.js +0 -41
  239. package/containers/Sms/Create/sagas.js +0 -40
  240. package/containers/Sms/Create/selectors.js +0 -28
  241. package/containers/Sms/Create/test/saga.test.js +0 -11
  242. package/containers/Sms/Edit/actions.js +0 -40
  243. package/containers/Sms/Edit/constants.js +0 -17
  244. package/containers/Sms/Edit/index.js +0 -1472
  245. package/containers/Sms/Edit/messages.js +0 -105
  246. package/containers/Sms/Edit/reducer.js +0 -50
  247. package/containers/Sms/Edit/sagas.js +0 -60
  248. package/containers/Sms/Edit/selectors.js +0 -32
  249. package/containers/Sms/Edit/test/saga.test.js +0 -13
  250. package/containers/TagList/_tagList.scss +0 -8
  251. package/containers/TagList/actions.js +0 -15
  252. package/containers/TagList/constants.js +0 -32
  253. package/containers/TagList/index.js +0 -236
  254. package/containers/TagList/messages.js +0 -13
  255. package/containers/TagList/reducer.js +0 -23
  256. package/containers/TagList/sagas.js +0 -11
  257. package/containers/TagList/selectors.js +0 -25
  258. package/containers/Templates/_templates.scss +0 -333
  259. package/containers/Templates/actions.js +0 -103
  260. package/containers/Templates/constants.js +0 -60
  261. package/containers/Templates/index.js +0 -1756
  262. package/containers/Templates/messages.js +0 -337
  263. package/containers/Templates/reducer.js +0 -142
  264. package/containers/Templates/sagas.js +0 -163
  265. package/containers/Templates/selectors.js +0 -28
  266. package/containers/Templates/test/saga.test.js +0 -241
  267. package/containers/WeChat/MapTemplates/_mapTemplates.scss +0 -8
  268. package/containers/WeChat/MapTemplates/actions.js +0 -52
  269. package/containers/WeChat/MapTemplates/constants.js +0 -28
  270. package/containers/WeChat/MapTemplates/index.js +0 -1610
  271. package/containers/WeChat/MapTemplates/messages.js +0 -157
  272. package/containers/WeChat/MapTemplates/reducer.js +0 -74
  273. package/containers/WeChat/MapTemplates/sagas.js +0 -84
  274. package/containers/WeChat/MapTemplates/selectors.js +0 -25
  275. package/containers/WeChat/MapTemplates/test/saga.test.js +0 -155
  276. package/containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +0 -57
  277. package/containers/WeChat/RichmediaTemplates/Create/actions.js +0 -36
  278. package/containers/WeChat/RichmediaTemplates/Create/constants.js +0 -15
  279. package/containers/WeChat/RichmediaTemplates/Create/index.js +0 -1071
  280. package/containers/WeChat/RichmediaTemplates/Create/messages.js +0 -165
  281. package/containers/WeChat/RichmediaTemplates/Create/reducer.js +0 -60
  282. package/containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +0 -497
  283. package/containers/WeChat/RichmediaTemplates/Create/sagas.js +0 -51
  284. package/containers/WeChat/RichmediaTemplates/Create/selectors.js +0 -37
  285. package/containers/WeChat/RichmediaTemplates/Create/test/saga.test.js +0 -13
  286. package/containers/WeChat/RichmediaTemplates/Edit/actions.js +0 -20
  287. package/containers/WeChat/RichmediaTemplates/Edit/constants.js +0 -10
  288. package/containers/WeChat/RichmediaTemplates/Edit/index.js +0 -136
  289. package/containers/WeChat/RichmediaTemplates/Edit/messages.js +0 -13
  290. package/containers/WeChat/RichmediaTemplates/Edit/reducer.js +0 -28
  291. package/containers/WeChat/RichmediaTemplates/Edit/sagas.js +0 -36
  292. package/containers/WeChat/RichmediaTemplates/Edit/selectors.js +0 -30
  293. package/containers/WeChat/RichmediaTemplates/Edit/test/saga.test.js +0 -12
  294. package/containers/WeChat/RichmediaTemplates/View/actions.js +0 -15
  295. package/containers/WeChat/RichmediaTemplates/View/constants.js +0 -7
  296. package/containers/WeChat/RichmediaTemplates/View/index.js +0 -47
  297. package/containers/WeChat/RichmediaTemplates/View/messages.js +0 -21
  298. package/containers/WeChat/RichmediaTemplates/View/reducer.js +0 -23
  299. package/containers/WeChat/RichmediaTemplates/View/sagas.js +0 -11
  300. package/containers/WeChat/RichmediaTemplates/View/selectors.js +0 -25
  301. package/utils/asyncInjectors.js +0 -78
  302. package/utils/callNativeEvent.js +0 -16
  303. package/utils/checkStore.js +0 -21
  304. package/utils/customAuthWrapper.js +0 -62
  305. package/utils/customConnectedAuthWrapper.js +0 -26
  306. package/v2Components/TemplatePreview/assets/images/empty_android.svg +0 -8
  307. package/v2Components/TemplatePreview/assets/images/empty_ios.svg +0 -5
  308. package/v2Containers/BeePopupEditor/constants.js +0 -10
  309. package/v2Containers/BeePopupEditor/index.js +0 -169
  310. package/v2Containers/InappAdvanced/index.js +0 -459
  311. package/v2Containers/InappAdvanced/index.scss +0 -11
  312. package/v2Containers/InappWrapper/_inappWrapper.scss +0 -19
  313. package/v2Containers/InappWrapper/index.js +0 -192
  314. package/v2Containers/InappWrapper/messages.js +0 -38
@@ -1,169 +0,0 @@
1
- import React, { useEffect, useRef, useState } from 'react';
2
- import PropTypes from 'prop-types';
3
- import { injectIntl } from 'react-intl';
4
- import { connect } from 'react-redux';
5
- // import { bindActionCreators } from 'redux';
6
- import { createStructuredSelector } from 'reselect';
7
- import { UserIsAuthenticated } from '../../utils/authWrapper';
8
- import TagList from '../TagList';
9
- import { ANDROID, BEE_LAYOUT_OPTIONS, MOBILE, UNSUBSCRIBE } from './constants';
10
- import emptyAndroidSvg from '../../v2Components/TemplatePreview/assets/images/empty_android.svg';
11
- import emptyIosSvg from '../../v2Components/TemplatePreview/assets/images/empty_ios.svg';
12
- function BeePopupEditor(props) {
13
- const {
14
- uid,
15
- id,
16
- tokenData,
17
- saveBeeInstance,
18
- saveBeeData,
19
- beeJson,
20
- templateLayoutType,
21
- moduleFilterEnabled,
22
- label,
23
- location,
24
- injectedTags,
25
- className,
26
- userLocale,
27
- selectedOfferDetails,
28
- tags,
29
- onContextChange,
30
- device,
31
- } = props;
32
-
33
- let beePluginInstance = null;
34
- let intervalTimer;
35
- const savedCallback = useRef();
36
-
37
- const [visibleTaglist, setVisibleTaglist] = useState(false);
38
- const [selectedTag, setSelectedTag] = useState({});
39
- const filteredTags = (tags || []).filter((obj) => obj.definition.value !== UNSUBSCRIBE);
40
-
41
- useEffect(() => {
42
- const beeConfig = {
43
- uid,
44
- trackChanges: true,
45
- container: 'bee-plugin-container',
46
- workspace: {
47
- popup: {
48
- backgroundImageMobile: device === ANDROID ? emptyAndroidSvg : emptyIosSvg,
49
- layout: BEE_LAYOUT_OPTIONS[templateLayoutType],
50
- customStyles: {
51
- container: {
52
- width: "90%",
53
- margin: "1.5rem",
54
- },
55
- },
56
- },
57
- stage: MOBILE,
58
- hideStageToggle: true,
59
- },
60
- contentDialog: {
61
- mergeTags: {
62
- label: 'Add Label',
63
- handler: async (resolve, reject) => {
64
- // this will open tag modal
65
- await setVisibleTaglist(true);
66
- // until tag modal will not open promise will not execute
67
- // once tag modal is opened it will start 2 sec interval to wait use has selected any tag or cancel the tag selection
68
- const promise = new Promise((resolveP) => {
69
- intervalTimer = setInterval(() => {
70
- // this will execute, if user cancel the tag selection
71
- if ((savedCallback.current || {}).close === true) {
72
- reject();
73
- clearInterval(intervalTimer);
74
- return;
75
- }
76
- // this block is checking use has selected any tag or not
77
- if (Object.keys(savedCallback.current || {}).length > 0) {
78
- resolveP(savedCallback.current);
79
- setSelectedTag({});
80
- clearInterval(intervalTimer);
81
- }
82
- }, 2000);
83
- });
84
- // once prmise will resolve , pass the resolve data to handler to show tags in bee edior
85
- const result = await promise;
86
- resolve(result);
87
- },
88
- },
89
- },
90
- onChange: (jsonFile, htmlFile) => {
91
- saveBeeData(jsonFile, htmlFile, device);
92
- },
93
- };
94
- window.BeePlugin.create(tokenData, beeConfig, (instance) => {
95
- beePluginInstance = instance;
96
- const parseJson = JSON.parse(beeJson);
97
- beePluginInstance.start(parseJson);
98
- saveBeeInstance(beePluginInstance);
99
- });
100
- return () => clearInterval(intervalTimer);
101
- }, [templateLayoutType]);
102
-
103
- useEffect(() => {
104
- savedCallback.current = Object.keys(selectedTag).length > 0 && selectedTag;
105
- }, [selectedTag]);
106
-
107
- const onTagSelect = (result) => {
108
- const msg = {
109
- name: result,
110
- value: `{{${result}}}`,
111
- };
112
- setSelectedTag(msg);
113
- setVisibleTaglist(false);
114
- };
115
-
116
- const onCancelTagList = () => {
117
- setVisibleTaglist(false);
118
- setSelectedTag({close: true});
119
- };
120
-
121
- return (
122
- <>
123
- <div id="bee-plugin-container" style={{ height: "650px" }}></div>
124
- <TagList
125
- moduleFilterEnabled={moduleFilterEnabled}
126
- label={label}
127
- onTagSelect={onTagSelect}
128
- location={location}
129
- tags={filteredTags}
130
- injectedTags={injectedTags}
131
- className={className}
132
- id={id}
133
- userLocale={userLocale}
134
- selectedOfferDetails={selectedOfferDetails}
135
- visibleTaglist={visibleTaglist}
136
- hidePopover
137
- modalProps={{
138
- onCancel: onCancelTagList,
139
- style: { left: 135, top: 250 },
140
- className: "bee-editor-tag-list",
141
- }}
142
- onContextChange={onContextChange}
143
- />
144
- </>
145
- );
146
- }
147
- BeePopupEditor.propTypes = {
148
- saveBeeData: PropTypes.func.isRequired,
149
- saveBeeInstance: PropTypes.func.isRequired,
150
- beeJson: PropTypes.object.isRequired,
151
- tokenData: PropTypes.object.isRequired,
152
- uid: PropTypes.string.isRequired,
153
- templateLayoutType: PropTypes.string.isRequired,
154
- id: PropTypes.string.isRequired,
155
- moduleFilterEnabled: PropTypes.bool.isRequired,
156
- label: PropTypes.string.isRequired,
157
- location: PropTypes.object.isRequired,
158
- injectedTags: PropTypes.array.isRequired,
159
- className: PropTypes.string.isRequired,
160
- userLocale: PropTypes.string.isRequired,
161
- selectedOfferDetails: PropTypes.object.isRequired,
162
- tags: PropTypes.array.isRequired,
163
- onContextChange: PropTypes.func.isRequired,
164
- device: PropTypes.string.isRequired,
165
- };
166
- const mapStateToProps = () => createStructuredSelector({});
167
-
168
- function mapDispatchToProps() {}
169
- export default UserIsAuthenticated(connect(mapStateToProps, mapDispatchToProps)(injectIntl(BeePopupEditor)));
@@ -1,459 +0,0 @@
1
- import React, { useState, useEffect } from "react";
2
- import isEmpty from 'lodash/isEmpty';
3
- import get from 'lodash/get';
4
- import { bindActionCreators } from "redux";
5
- import { createStructuredSelector } from "reselect";
6
- import { injectIntl, FormattedMessage } from "react-intl";
7
- import { DAEMON } from '@capillarytech/vulcan-react-sdk/utils/sagaInjectorTypes';
8
- import CapHeading from "@capillarytech/cap-ui-library/CapHeading";
9
- import CapSpin from "@capillarytech/cap-ui-library/CapSpin";
10
- import CapSelect from "@capillarytech/cap-ui-library/CapSelect";
11
- import CapRow from "@capillarytech/cap-ui-library/CapRow";
12
- import CapButton from "@capillarytech/cap-ui-library/CapButton";
13
- import CapTab from "@capillarytech/cap-ui-library/CapTab";
14
- import CapNotification from "@capillarytech/cap-ui-library/CapNotification";
15
- import {
16
- makeSelectInApp,
17
- makeSelectAccount,
18
- makeSelectBeePopupBuilderTokenFetching,
19
- makeSelectBeePopupBuilderToken,
20
- } from "../InApp/selectors";
21
- import {
22
- isLoadingMetaEntities,
23
- makeSelectMetaEntities,
24
- setInjectedTags,
25
- selectCurrentOrgDetails,
26
- } from "../Cap/selectors";
27
- import * as inAppActions from "../InApp/actions";
28
- import '../InApp/index.scss';
29
- import './index.scss';
30
- import messages from "../InApp/messages";
31
- import globalMessages from "../Cap/messages";
32
- import withCreatives from "../../hoc/withCreatives";
33
-
34
- import {
35
- ANDROID,
36
- DEVICE_SUPPORTED,
37
- INAPP_MESSAGE_LAYOUT_TYPES,
38
- IOS,
39
- LAYOUT_RADIO_OPTIONS,
40
- } from "../InApp/constants";
41
- import { INAPP, SMS } from "../CreativesContainer/constants";
42
- import {
43
- ALL, TAG, EMBEDDED, DEFAULT, FULL, LIBRARY,
44
- } from "../Whatsapp/constants";
45
- import BeePopupEditor from "../BeePopupEditor";
46
- import injectReducer from '../../utils/injectReducer';
47
- import v2InAppReducer from '../InApp/reducer';
48
- import { v2InAppSagas } from '../InApp/sagas';
49
- import injectSaga from '../../utils/injectSaga';
50
-
51
- let editContent = {};
52
-
53
- export const InappAdvanced = (props) => {
54
- const {
55
- intl,
56
- actions,
57
- isFullMode,
58
- onCreateComplete,
59
- params,
60
- templateData = {},
61
- editData = {},
62
- accountData = {},
63
- globalActions,
64
- location,
65
- getDefaultTags,
66
- supportedTags,
67
- metaEntities,
68
- injectedTags,
69
- getFormData,
70
- templateName,
71
- setTemplateName,
72
- beePopupBuilderTokenFetching,
73
- beePopupBuilderToken,
74
- } = props || {};
75
-
76
- const { formatMessage } = intl;
77
- const [androidBeeJson, setAndroidBeeJson] = useState('{}');
78
- const [androidBeeHtml, setAndroidBeeHtml] = useState(null);
79
- const [iosBeeJson, setIosBeeJson] = useState('{}');
80
- const [iosBeeHtml, setIosBeeHtml] = useState(null);
81
- const [beeInstance, setBeeInstance] = useState(null);
82
-
83
- const [templateLayoutType, setTemplateLayoutType] = useState(
84
- INAPP_MESSAGE_LAYOUT_TYPES.MODAL
85
- );
86
- const [accountId, setAccountId] = useState("");
87
- const [accessToken, setAccessToken] = useState("");
88
- const [accountName, setAccountName] = useState("");
89
- const [spin, setSpin] = useState(false);
90
- const [panes, setPanes] = useState(ANDROID);
91
- //for tag only
92
- const [tags, updateTags] = useState([]);
93
- //for edit only
94
- const [isEditFlow, setEditFlow] = useState(false);
95
- const [templateDate, setTemplateDate] = useState("");
96
-
97
- //fetching bee popup builder token
98
- useEffect(() => {
99
- actions.getBeePopupBuilderToken();
100
- }, []);
101
-
102
- //gets account details
103
- useEffect(() => {
104
- const accountObj = accountData?.selectedWeChatAccount || {};
105
- if (!isEmpty(accountObj)) {
106
- const {
107
- sourceAccountIdentifier = "",
108
- configs = {},
109
- name = "",
110
- } = accountObj;
111
- const isAndroidSupported = configs?.android === DEVICE_SUPPORTED;
112
- // DEVICE_SUPPORTED is '1', which indicates if the particular account is supported, and '0' if the devive is not supported
113
- //get deep link keys in an array
114
- setPanes(isAndroidSupported ? ANDROID : IOS);
115
- setAccountId(sourceAccountIdentifier);
116
- setAccessToken(configs?.accessToken || "");
117
- setAccountName(name);
118
- }
119
- }, [accountData?.selectedWeChatAccount]);
120
-
121
- useEffect(() => {
122
- const {
123
- name = "",
124
- versions = {},
125
- createdAt = "",
126
- } = isFullMode ? editData?.templateDetails || {} : templateData || {};
127
- editContent = get(versions, `base.content`, {});
128
- if (editContent && !isEmpty(editContent)) {
129
- setEditFlow(true);
130
- setTemplateName(name);
131
- setTemplateDate(createdAt);
132
- setTemplateLayoutType(editContent?.ANDROID?.bodyType);
133
- const androidContent = editContent?.ANDROID;
134
- if (!isEmpty(androidContent)) {
135
- const {
136
- beeJson: androidJson,
137
- beeHtml: androidHtml,
138
- } = androidContent || {};
139
- setAndroidBeeJson(androidJson);
140
- setAndroidBeeHtml(androidHtml);
141
- }
142
- const iosContent = editContent?.IOS;
143
- if (!isEmpty(iosContent)) {
144
- const {
145
- beeJson: iosJson,
146
- beeHtml: iosHtml,
147
- } = iosContent || {};
148
- setIosBeeJson(iosJson);
149
- setIosBeeHtml(iosHtml);
150
- }
151
- }
152
- }, [editData.templateDetails || templateData]);
153
-
154
- // tag Code start from here
155
- useEffect(() => {
156
- //fetching tags
157
- const { type, module } = location.query || {};
158
- const isEmbedded = type === EMBEDDED;
159
- const context = isEmbedded ? module : DEFAULT;
160
- const embedded = isEmbedded ? type : FULL;
161
- const query = {
162
- layout: SMS,
163
- type: TAG,
164
- context,
165
- embedded,
166
- };
167
- if (getDefaultTags) {
168
- query.context = getDefaultTags;
169
- }
170
- globalActions.fetchSchemaForEntity(query);
171
- }, []);
172
-
173
- useEffect(() => {
174
- let tag = get(metaEntities, `tags.standard`, []);
175
- const { type, module } = location.query || {};
176
- if (type === EMBEDDED && module === LIBRARY && !getDefaultTags) {
177
- tag = supportedTags;
178
- }
179
- updateTags(tag);
180
- }, [metaEntities]);
181
-
182
- const handleOnTagsContextChange = (data) => {
183
- const { type } = location.query || {};
184
- const tempData = (data || '').toLowerCase();
185
- const isEmbedded = type === EMBEDDED;
186
- const embedded = isEmbedded ? type : FULL;
187
- const context = tempData === ALL ? DEFAULT : tempData;
188
- const query = {
189
- layout: SMS,
190
- type: TAG,
191
- context,
192
- embedded,
193
- };
194
- globalActions.fetchSchemaForEntity(query);
195
- };
196
-
197
- const onTemplateLayoutTypeChange = (value) => {
198
- setTemplateLayoutType(value);
199
- };
200
-
201
- const saveBeeInstance = (instance) => {
202
- setBeeInstance(instance);
203
- };
204
-
205
- const saveBeeData = (json, html, device) => {
206
- if (device === ANDROID) {
207
- setAndroidBeeJson(json);
208
- setAndroidBeeHtml(html);
209
- } else {
210
- setIosBeeJson(json);
211
- setIosBeeHtml(html);
212
- }
213
- };
214
-
215
- const PANES = [
216
- {
217
- content: (
218
- <CapSpin spinning={beePopupBuilderTokenFetching}>
219
- {beePopupBuilderToken?.uuid && panes === ANDROID && (
220
- <BeePopupEditor
221
- uid={beePopupBuilderToken?.uuid}
222
- tokenData={beePopupBuilderToken}
223
- id="androidBeePopupBuilder"
224
- saveBeeData={saveBeeData}
225
- saveBeeInstance={saveBeeInstance}
226
- templateLayoutType={templateLayoutType}
227
- tags={tags}
228
- onContextChange={handleOnTagsContextChange}
229
- moduleFilterEnabled={isFullMode}
230
- beeJson={androidBeeJson}
231
- beeHtml={androidBeeHtml}
232
- device={ANDROID}
233
- />
234
- )}
235
- </CapSpin>
236
- ),
237
- tab: <FormattedMessage {...messages.Android} />,
238
- key: ANDROID,
239
- isSupported: get(accountData, 'selectedWeChatAccount.configs.android') === DEVICE_SUPPORTED,
240
- },
241
- {
242
- content: (
243
- <CapSpin spinning={beePopupBuilderTokenFetching}>
244
- {beePopupBuilderToken?.uuid && panes === IOS && (
245
- <BeePopupEditor
246
- uid={beePopupBuilderToken?.uuid}
247
- tokenData={beePopupBuilderToken}
248
- id="iosBeePopupBuilder"
249
- saveBeeData={saveBeeData}
250
- saveBeeInstance={saveBeeInstance}
251
- templateLayoutType={templateLayoutType}
252
- tags={tags}
253
- onContextChange={handleOnTagsContextChange}
254
- moduleFilterEnabled={isFullMode}
255
- beeJson={iosBeeJson}
256
- beeHtml={iosBeeHtml}
257
- device={IOS}
258
- />
259
- )}
260
- </CapSpin>
261
- ),
262
- tab: <FormattedMessage {...messages.Ios} />,
263
- key: IOS,
264
- isSupported: get(accountData, 'selectedWeChatAccount.configs.ios') === DEVICE_SUPPORTED,
265
- },
266
- ];
267
-
268
- const createPayload = () => {
269
- const commonDevicePayload = {
270
- luid: "{{luid}}",
271
- cuid: "{{cuid}}",
272
- communicationId: "{{communicationId}}",
273
- isBEEeditor: true,
274
- };
275
- const accountObj = accountData?.selectedWeChatAccount || {};
276
- const {
277
- sourceAccountIdentifier = "",
278
- id,
279
- } = accountObj;
280
- const data = {
281
- name: templateName,
282
- versions: {
283
- base: {
284
- content: {
285
- ANDROID: {
286
- ...commonDevicePayload,
287
- bodyType: templateLayoutType,
288
- beeJson: androidBeeJson,
289
- beeHtml: androidBeeHtml,
290
- } || {},
291
- IOS: {
292
- ...commonDevicePayload,
293
- bodyType: templateLayoutType,
294
- beeJson: iosBeeJson,
295
- beeHtml: iosBeeHtml,
296
- custom: [],
297
- } || {},
298
- },
299
- },
300
- },
301
- type: INAPP,
302
- definition: {
303
- accountId: id,
304
- licenseCode: sourceAccountIdentifier,
305
- },
306
- };
307
- return data;
308
- };
309
-
310
- const actionCallback = ({ errorMessage }) => {
311
- if (!errorMessage) {
312
- CapNotification.success({
313
- message: isEditFlow ? formatMessage(messages.inAppEditNotification, {
314
- name: templateName,
315
- }) : formatMessage(messages.inAppCreateNotification, {
316
- name: templateName,
317
- }),
318
- });
319
- actions.clearCreateResponse();
320
- } else {
321
- CapNotification.error({
322
- message: JSON.stringify(errorMessage),
323
- });
324
- }
325
- };
326
-
327
- const onCreateInApp = () => {
328
- setSpin(true);
329
- actions.createInAppTemplate(createPayload(), (resp, errorMessage) => {
330
- actionCallback({ resp, errorMessage });
331
- if (!errorMessage) {
332
- onCreateComplete();
333
- } else {
334
- setSpin(false);
335
- }
336
- });
337
- };
338
-
339
- const onEditInApp = () => {
340
- setSpin(true);
341
- actions.editTemplate(
342
- {
343
- ...createPayload(),
344
- _id: params?.id,
345
- },
346
- (resp, errorMessage) => {
347
- actionCallback({ resp, errorMessage });
348
- if (!errorMessage) {
349
- onCreateComplete();
350
- } else {
351
- setSpin(false);
352
- }
353
- },
354
- );
355
- };
356
-
357
- const onDoneCallback = () => {
358
- if (isFullMode) {
359
- if (isEditFlow) {
360
- return onEditInApp;
361
- }
362
- return onCreateInApp;
363
- }
364
- return () => getFormData({
365
- value: createPayload(),
366
- _id: params && params.id,
367
- validity: true,
368
- type: INAPP,
369
- });
370
- };
371
-
372
- return (
373
- <CapSpin spinning={spin}>
374
- <CapRow className="cap-inapp-creatives">
375
- {/* Creative layout type*/}
376
- {(isFullMode || !isEditFlow) && (
377
- <>
378
- <CapRow className="inapp-creative-layout">
379
- <CapHeading type="h4">
380
- <FormattedMessage {...messages.creativeLayout} />
381
- </CapHeading>
382
- <CapHeading type="h6" className="inapp-creative-layout-desc">
383
- <FormattedMessage {...messages.creativeLayoutDesc} />
384
- </CapHeading>
385
- </CapRow>
386
- <CapSelect
387
- id="inapp-layout-dropdown"
388
- options={LAYOUT_RADIO_OPTIONS}
389
- value={templateLayoutType}
390
- onChange={onTemplateLayoutTypeChange}
391
- />
392
- </>
393
- )}
394
- {/* device tab */}
395
- <CapTab
396
- panes={PANES.filter(
397
- (devicePane) => devicePane?.isSupported === true
398
- )}
399
- onChange={(value) => {
400
- setPanes(value);
401
- }}
402
- activeKey={panes}
403
- defaultActiveKey={panes}
404
- className="inapp-template-device-tab"
405
- />
406
- <div className="inapp-scroll-div" />
407
- </CapRow>
408
- <div className={`inapp-footer ${!isFullMode && `inapp-footer-lib`}`}>
409
- {
410
- <>
411
- <CapButton
412
- onClick={onDoneCallback()}
413
- className="inapp-create-btn"
414
- >
415
- {isEditFlow ? (
416
- isFullMode ? (
417
- <FormattedMessage {...messages.update} />
418
- ) : (
419
- <FormattedMessage {...globalMessages.done} />
420
- )
421
- ) : isFullMode ? (
422
- <FormattedMessage {...messages.create} />
423
- ) : (
424
- <FormattedMessage {...globalMessages.done} />
425
- )}
426
- </CapButton>
427
- </>
428
- }
429
- </div>
430
- </CapSpin>
431
- );
432
- };
433
-
434
- const mapStateToProps = createStructuredSelector({
435
- editData: makeSelectInApp(),
436
- accountData: makeSelectAccount(),
437
- metaEntities: makeSelectMetaEntities(),
438
- loadingTags: isLoadingMetaEntities(),
439
- injectedTags: setInjectedTags(),
440
- currentOrgDetails: selectCurrentOrgDetails(),
441
- beePopupBuilderTokenFetching: makeSelectBeePopupBuilderTokenFetching(),
442
- beePopupBuilderToken: makeSelectBeePopupBuilderToken(),
443
- });
444
-
445
- const mapDispatchToProps = (dispatch) => ({
446
- actions: bindActionCreators(inAppActions, dispatch),
447
- });
448
-
449
- const withReducer = injectReducer({ key: 'inapp', reducer: v2InAppReducer });
450
- const withInAppSaga = injectSaga({ key: 'inapp', saga: v2InAppSagas, mode: DAEMON });
451
-
452
- export default withCreatives({
453
- WrappedComponent: injectIntl(InappAdvanced),
454
- mapStateToProps,
455
- mapDispatchToProps,
456
- userAuth: true,
457
- sagas: [withInAppSaga],
458
- reducers: [withReducer],
459
- });
@@ -1,11 +0,0 @@
1
- @import '~@capillarytech/cap-ui-library/styles/_variables.scss';
2
- .cap-inapp-creatives {
3
- #inapp-layout-dropdown {
4
- width: 20.5rem;
5
- }
6
- .inapp-creative-layout {
7
- margin-top: $CAP_SPACE_04;
8
- margin-bottom: $CAP_SPACE_08;
9
- }
10
- }
11
-
@@ -1,19 +0,0 @@
1
- .inapp-wrapper {
2
-
3
- .ant-radio-group.cap-radioCard-v2 {
4
- .ant-radio-button-wrapper{
5
- width: 284px;
6
- height: 258px;
7
- }
8
- .ant-card-body {
9
- padding: 1rem;
10
- }
11
- }
12
- }
13
- .template-name-inapp {
14
- width: 580px;
15
- margin-bottom: 1.5rem;
16
- .ant-input {
17
- height: 40px;
18
- }
19
- }