@capillarytech/creatives-library 8.0.136 → 8.0.137-alpha.1

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 (298) hide show
  1. package/constants/unified.js +189 -0
  2. package/package.json +1 -1
  3. package/services/getSchema.js +1 -1
  4. package/services/localStorageApi.js +1 -0
  5. package/tests/i18n.test.js +1 -1
  6. package/utils/common.js +2 -2
  7. package/utils/createMobilePushPayload.js +0 -1
  8. package/utils/tagValidations.js +1 -1
  9. package/utils/tests/checkStore.test.js +1 -1
  10. package/utils/tests/customAuth.test.js +1 -1
  11. package/utils/transformerUtils.js +1 -1
  12. package/v2Components/CapTagList/index.js +9 -14
  13. package/v2Components/Carousel/style.scss +1 -1
  14. package/v2Components/EmailMobilePreview/index.js +2 -2
  15. package/v2Components/FormBuilder/index.js +2 -2
  16. package/v2Components/TemplatePreview/_templatePreview.scss +0 -10
  17. package/v2Components/TemplatePreview/index.js +2 -3
  18. package/v2Containers/Cap/tests/saga.test.js +1 -1
  19. package/v2Containers/Email/index.js +1 -1
  20. package/v2Containers/FTP/index.js +1 -1
  21. package/v2Containers/Line/Container/Text/index.js +1 -1
  22. package/v2Containers/Line/Container/_lineCreate.scss +2 -4
  23. package/v2Containers/MobilePushNew/components/MediaUploaders.js +0 -1
  24. package/v2Containers/MobilePushNew/components/tests/MediaUploaders.test.js +271 -0
  25. package/v2Containers/MobilePushNew/components/tests/PlatformContentFields.test.js +189 -0
  26. package/v2Containers/MobilePushNew/index.scss +9 -16
  27. package/v2Containers/Sms/Create/index.js +2 -2
  28. package/v2Containers/Sms/Edit/index.js +1 -1
  29. package/v2Containers/TagList/index.js +1 -1
  30. package/v2Containers/TagList/utils.js +1 -1
  31. package/v2Containers/Templates/index.js +3 -3
  32. package/v2Containers/Templates/sagas.js +1 -1
  33. package/components/BreadCrumbs/index.js +0 -65
  34. package/components/BreadCrumbs/messages.js +0 -13
  35. package/components/CapTagList/index.js +0 -235
  36. package/components/CapTagList/messages.js +0 -45
  37. package/components/Card/_customCard.scss +0 -40
  38. package/components/Card/index.js +0 -78
  39. package/components/Card/tests/__snapshots__/index.test.js.snap +0 -22
  40. package/components/Card/tests/index.test.js +0 -20
  41. package/components/CardGrid/index.js +0 -71
  42. package/components/Ckeditor/index.js +0 -238
  43. package/components/Ckeditor/messages.js +0 -13
  44. package/components/Ckeditor/style.scss +0 -3
  45. package/components/Component/index.js +0 -29
  46. package/components/CustomPopOver/index.js +0 -81
  47. package/components/CustomPopOver/messages.js +0 -17
  48. package/components/DateFilter/index.js +0 -349
  49. package/components/DateFilter/messages.js +0 -57
  50. package/components/DateRange/index.js +0 -114
  51. package/components/DateRange/messages.js +0 -25
  52. package/components/Edmeditor/index.js +0 -65
  53. package/components/Edmeditor/messages.js +0 -13
  54. package/components/EmailPreview/_emailPreview.scss +0 -119
  55. package/components/EmailPreview/assets/images/iPad.svg +0 -10
  56. package/components/EmailPreview/assets/images/mobile.png +0 -0
  57. package/components/EmailPreview/index.js +0 -107
  58. package/components/EmailPreview/messages.js +0 -33
  59. package/components/Footer/index.js +0 -27
  60. package/components/Footer/messages.js +0 -13
  61. package/components/FormBuilder/_formBuilder.scss +0 -83
  62. package/components/FormBuilder/index.js +0 -3279
  63. package/components/FormBuilder/messages.js +0 -61
  64. package/components/Header/index.js +0 -44
  65. package/components/Header/messages.js +0 -29
  66. package/components/ImagePreview/_imagePreview.scss +0 -63
  67. package/components/ImagePreview/index.js +0 -52
  68. package/components/ImagePreview/messages.js +0 -17
  69. package/components/PageHeader/_pageHeader.scss +0 -22
  70. package/components/PageHeader/index.js +0 -37
  71. package/components/PageHeader/messages.js +0 -13
  72. package/components/Pagination/_pagination.scss +0 -5
  73. package/components/Pagination/index.js +0 -49
  74. package/components/PreviewSideBar/_previewsidebar.scss +0 -28
  75. package/components/PreviewSideBar/index.js +0 -152
  76. package/components/PreviewSideBar/messages.js +0 -41
  77. package/components/Sidebar/_sidebar.scss +0 -115
  78. package/components/Sidebar/index.js +0 -214
  79. package/components/Sidebar/messages.js +0 -21
  80. package/components/SlideBox/_slideBox.scss +0 -63
  81. package/components/SlideBox/index.js +0 -47
  82. package/components/SlideBox/tests/index.test.js +0 -103
  83. package/components/SmsEditor/index.js +0 -55
  84. package/components/SmsTest/index.js +0 -117
  85. package/components/SmsTest/messages.js +0 -21
  86. package/components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +0 -42
  87. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +0 -141
  88. package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +0 -21
  89. package/components/TemplatePreview/_templatePreview.scss +0 -642
  90. package/components/TemplatePreview/assets/images/WECHAT_5x.png +0 -0
  91. package/components/TemplatePreview/assets/images/androidPushMessage.svg +0 -45
  92. package/components/TemplatePreview/assets/images/home-screen-android.svg +0 -21
  93. package/components/TemplatePreview/assets/images/home-screen-ios.svg +0 -16
  94. package/components/TemplatePreview/assets/images/iPhonePushMessage.svg +0 -135
  95. package/components/TemplatePreview/assets/images/mobile.svg +0 -24
  96. package/components/TemplatePreview/assets/images/sms-body.png +0 -0
  97. package/components/TemplatePreview/assets/images/sms-icon.png +0 -0
  98. package/components/TemplatePreview/assets/images/sms_mobile.png +0 -0
  99. package/components/TemplatePreview/assets/images/sms_mobile_android.svg +0 -22
  100. package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +0 -16
  101. package/components/TemplatePreview/assets/images/user-icon.svg +0 -19
  102. package/components/TemplatePreview/assets/images/wechat-mobile.svg +0 -78
  103. package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +0 -20
  104. package/components/TemplatePreview/index.js +0 -617
  105. package/components/TemplatePreview/messages.js +0 -78
  106. package/components/Toastr/index.js +0 -60
  107. package/components/Toastr/messages.js +0 -13
  108. package/components/ToastrMessage/index.js +0 -113
  109. package/components/ToastrMessage/messages.js +0 -17
  110. package/components/TopBar/_topbar.scss +0 -46
  111. package/components/TopBar/assets/images/capillary_logo.png +0 -0
  112. package/components/TopBar/assets/images/old_capillary_logo.png +0 -0
  113. package/components/TopBar/index.js +0 -113
  114. package/components/TopBar/messages.js +0 -29
  115. package/containers/App/actions.js +0 -7
  116. package/containers/App/constants.js +0 -114
  117. package/containers/App/index.js +0 -52
  118. package/containers/App/reducer.js +0 -19
  119. package/containers/App/sagas.js +0 -31
  120. package/containers/App/selectors.js +0 -25
  121. package/containers/App/test/saga.test.js +0 -11
  122. package/containers/Assets/Gallery/_gallery.scss +0 -126
  123. package/containers/Assets/Gallery/actions.js +0 -37
  124. package/containers/Assets/Gallery/constants.js +0 -23
  125. package/containers/Assets/Gallery/index.js +0 -473
  126. package/containers/Assets/Gallery/messages.js +0 -93
  127. package/containers/Assets/Gallery/reducer.js +0 -81
  128. package/containers/Assets/Gallery/sagas.js +0 -80
  129. package/containers/Assets/Gallery/selectors.js +0 -25
  130. package/containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +0 -9
  131. package/containers/Assets/Gallery/tests/actions.test.js +0 -25
  132. package/containers/Assets/Gallery/tests/reducer.test.js +0 -96
  133. package/containers/Assets/Gallery/tests/saga.test.js +0 -157
  134. package/containers/Cap/actions.js +0 -66
  135. package/containers/Cap/constants.js +0 -25
  136. package/containers/Cap/index.js +0 -402
  137. package/containers/Cap/messages.js +0 -75
  138. package/containers/Cap/reducer.js +0 -113
  139. package/containers/Cap/sagas.js +0 -159
  140. package/containers/Cap/selectors.js +0 -75
  141. package/containers/Cap/tests/__snapshots__/index.test.js.snap +0 -2269
  142. package/containers/Cap/tests/index.test.js +0 -22
  143. package/containers/Cap/tests/saga.test.js +0 -284
  144. package/containers/Dashboard/actions.js +0 -15
  145. package/containers/Dashboard/constants.js +0 -7
  146. package/containers/Dashboard/index.js +0 -76
  147. package/containers/Dashboard/messages.js +0 -13
  148. package/containers/Dashboard/reducer.js +0 -21
  149. package/containers/Dashboard/sagas.js +0 -17
  150. package/containers/Dashboard/selectors.js +0 -25
  151. package/containers/Dashboard/test/saga.test.js +0 -9
  152. package/containers/Ebill/_ebill.scss +0 -5
  153. package/containers/Ebill/actions.js +0 -43
  154. package/containers/Ebill/constants.js +0 -20
  155. package/containers/Ebill/index.js +0 -1278
  156. package/containers/Ebill/messages.js +0 -77
  157. package/containers/Ebill/reducer.js +0 -72
  158. package/containers/Ebill/sagas.js +0 -74
  159. package/containers/Ebill/selectors.js +0 -25
  160. package/containers/Ebill/test/saga.test.js +0 -11
  161. package/containers/Email/_email.scss +0 -141
  162. package/containers/Email/actions.js +0 -81
  163. package/containers/Email/constants.js +0 -36
  164. package/containers/Email/index.js +0 -3325
  165. package/containers/Email/messages.js +0 -289
  166. package/containers/Email/reducer.js +0 -142
  167. package/containers/Email/sagas.js +0 -135
  168. package/containers/Email/selectors.js +0 -31
  169. package/containers/Email/test/saga.test.js +0 -671
  170. package/containers/LanguageProvider/actions.js +0 -17
  171. package/containers/LanguageProvider/constants.js +0 -8
  172. package/containers/LanguageProvider/index.js +0 -80
  173. package/containers/LanguageProvider/reducer.js +0 -30
  174. package/containers/LanguageProvider/selectors.js +0 -20
  175. package/containers/LanguageProvider/tests/actions.test.js +0 -19
  176. package/containers/LanguageProvider/tests/index.test.js +0 -78
  177. package/containers/LanguageProvider/tests/reducer.test.js +0 -20
  178. package/containers/LanguageProvider/tests/selectors.test.js +0 -15
  179. package/containers/Line/Create/_lineCreate.scss +0 -54
  180. package/containers/Line/Create/actions.js +0 -90
  181. package/containers/Line/Create/constants.js +0 -39
  182. package/containers/Line/Create/index.js +0 -836
  183. package/containers/Line/Create/messages.js +0 -189
  184. package/containers/Line/Create/reducer.js +0 -99
  185. package/containers/Line/Create/sagas.js +0 -121
  186. package/containers/Line/Create/selectors.js +0 -36
  187. package/containers/Line/Create/tests/saga.test.js +0 -202
  188. package/containers/Line/Edit/_lineEdit.scss +0 -35
  189. package/containers/Line/Edit/actions.js +0 -79
  190. package/containers/Line/Edit/constants.js +0 -27
  191. package/containers/Line/Edit/index.js +0 -1050
  192. package/containers/Line/Edit/messages.js +0 -177
  193. package/containers/Line/Edit/reducer.js +0 -83
  194. package/containers/Line/Edit/sagas.js +0 -80
  195. package/containers/Line/Edit/selectors.js +0 -29
  196. package/containers/Line/Edit/test/saga.test.js +0 -160
  197. package/containers/Login/assets/images/capillary_logo.png +0 -0
  198. package/containers/Login/components/LoginForm/index.js +0 -62
  199. package/containers/Login/components/LoginForm/messages.js +0 -33
  200. package/containers/Login/index.js +0 -130
  201. package/containers/Login/messages.js +0 -25
  202. package/containers/Login/selectors.js +0 -25
  203. package/containers/MobilePush/Create/_mobilePushCreate.scss +0 -39
  204. package/containers/MobilePush/Create/actions.js +0 -46
  205. package/containers/MobilePush/Create/constants.js +0 -23
  206. package/containers/MobilePush/Create/index.js +0 -2303
  207. package/containers/MobilePush/Create/messages.js +0 -269
  208. package/containers/MobilePush/Create/reducer.js +0 -70
  209. package/containers/MobilePush/Create/sagas.js +0 -74
  210. package/containers/MobilePush/Create/selectors.js +0 -28
  211. package/containers/MobilePush/Create/test/saga.test.js +0 -19
  212. package/containers/MobilePush/Edit/_mobilePushCreate.scss +0 -39
  213. package/containers/MobilePush/Edit/actions.js +0 -91
  214. package/containers/MobilePush/Edit/constants.js +0 -35
  215. package/containers/MobilePush/Edit/index.js +0 -2601
  216. package/containers/MobilePush/Edit/messages.js +0 -266
  217. package/containers/MobilePush/Edit/reducer.js +0 -112
  218. package/containers/MobilePush/Edit/sagas.js +0 -126
  219. package/containers/MobilePush/Edit/selectors.js +0 -29
  220. package/containers/MobilePush/Edit/tests/saga.test.js +0 -255
  221. package/containers/NotFoundPage/index.js +0 -25
  222. package/containers/NotFoundPage/messages.js +0 -13
  223. package/containers/NotFoundPage/tests/index.test.js +0 -17
  224. package/containers/Sms/Create/_smsCreate.scss +0 -42
  225. package/containers/Sms/Create/actions.js +0 -27
  226. package/containers/Sms/Create/constants.js +0 -16
  227. package/containers/Sms/Create/index.js +0 -1488
  228. package/containers/Sms/Create/messages.js +0 -109
  229. package/containers/Sms/Create/reducer.js +0 -41
  230. package/containers/Sms/Create/sagas.js +0 -40
  231. package/containers/Sms/Create/selectors.js +0 -28
  232. package/containers/Sms/Create/test/saga.test.js +0 -11
  233. package/containers/Sms/Edit/actions.js +0 -40
  234. package/containers/Sms/Edit/constants.js +0 -17
  235. package/containers/Sms/Edit/index.js +0 -1472
  236. package/containers/Sms/Edit/messages.js +0 -105
  237. package/containers/Sms/Edit/reducer.js +0 -50
  238. package/containers/Sms/Edit/sagas.js +0 -60
  239. package/containers/Sms/Edit/selectors.js +0 -32
  240. package/containers/Sms/Edit/test/saga.test.js +0 -13
  241. package/containers/TagList/_tagList.scss +0 -8
  242. package/containers/TagList/actions.js +0 -15
  243. package/containers/TagList/constants.js +0 -32
  244. package/containers/TagList/index.js +0 -236
  245. package/containers/TagList/messages.js +0 -13
  246. package/containers/TagList/reducer.js +0 -23
  247. package/containers/TagList/sagas.js +0 -11
  248. package/containers/TagList/selectors.js +0 -25
  249. package/containers/Templates/_templates.scss +0 -333
  250. package/containers/Templates/actions.js +0 -103
  251. package/containers/Templates/constants.js +0 -60
  252. package/containers/Templates/index.js +0 -1756
  253. package/containers/Templates/messages.js +0 -337
  254. package/containers/Templates/reducer.js +0 -142
  255. package/containers/Templates/sagas.js +0 -163
  256. package/containers/Templates/selectors.js +0 -28
  257. package/containers/Templates/test/saga.test.js +0 -241
  258. package/containers/WeChat/MapTemplates/_mapTemplates.scss +0 -8
  259. package/containers/WeChat/MapTemplates/actions.js +0 -52
  260. package/containers/WeChat/MapTemplates/constants.js +0 -28
  261. package/containers/WeChat/MapTemplates/index.js +0 -1610
  262. package/containers/WeChat/MapTemplates/messages.js +0 -157
  263. package/containers/WeChat/MapTemplates/reducer.js +0 -74
  264. package/containers/WeChat/MapTemplates/sagas.js +0 -84
  265. package/containers/WeChat/MapTemplates/selectors.js +0 -25
  266. package/containers/WeChat/MapTemplates/test/saga.test.js +0 -155
  267. package/containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +0 -57
  268. package/containers/WeChat/RichmediaTemplates/Create/actions.js +0 -36
  269. package/containers/WeChat/RichmediaTemplates/Create/constants.js +0 -15
  270. package/containers/WeChat/RichmediaTemplates/Create/index.js +0 -1071
  271. package/containers/WeChat/RichmediaTemplates/Create/messages.js +0 -165
  272. package/containers/WeChat/RichmediaTemplates/Create/reducer.js +0 -60
  273. package/containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +0 -497
  274. package/containers/WeChat/RichmediaTemplates/Create/sagas.js +0 -51
  275. package/containers/WeChat/RichmediaTemplates/Create/selectors.js +0 -37
  276. package/containers/WeChat/RichmediaTemplates/Create/test/saga.test.js +0 -13
  277. package/containers/WeChat/RichmediaTemplates/Edit/actions.js +0 -20
  278. package/containers/WeChat/RichmediaTemplates/Edit/constants.js +0 -10
  279. package/containers/WeChat/RichmediaTemplates/Edit/index.js +0 -136
  280. package/containers/WeChat/RichmediaTemplates/Edit/messages.js +0 -13
  281. package/containers/WeChat/RichmediaTemplates/Edit/reducer.js +0 -28
  282. package/containers/WeChat/RichmediaTemplates/Edit/sagas.js +0 -36
  283. package/containers/WeChat/RichmediaTemplates/Edit/selectors.js +0 -30
  284. package/containers/WeChat/RichmediaTemplates/Edit/test/saga.test.js +0 -12
  285. package/containers/WeChat/RichmediaTemplates/View/actions.js +0 -15
  286. package/containers/WeChat/RichmediaTemplates/View/constants.js +0 -7
  287. package/containers/WeChat/RichmediaTemplates/View/index.js +0 -47
  288. package/containers/WeChat/RichmediaTemplates/View/messages.js +0 -21
  289. package/containers/WeChat/RichmediaTemplates/View/reducer.js +0 -23
  290. package/containers/WeChat/RichmediaTemplates/View/sagas.js +0 -11
  291. package/containers/WeChat/RichmediaTemplates/View/selectors.js +0 -25
  292. package/utils/asyncInjectors.js +0 -78
  293. package/utils/callNativeEvent.js +0 -16
  294. package/utils/checkStore.js +0 -21
  295. package/utils/customAuthWrapper.js +0 -62
  296. package/utils/customConnectedAuthWrapper.js +0 -26
  297. package/utils/jed.js +0 -1497
  298. package/utils/smsCharCount.js +0 -351
@@ -1,473 +0,0 @@
1
- /*
2
- *
3
- * Gallery
4
- *
5
- */
6
-
7
- import PropTypes from 'prop-types';
8
-
9
- import React from 'react';
10
- import { connect } from 'react-redux';
11
- import { bindActionCreators, compose } from 'redux';
12
- import Helmet from 'react-helmet';
13
- import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
14
- import { createStructuredSelector } from 'reselect';
15
- import moment from "moment";
16
- import _ from "lodash";
17
- import { CapInput, CapButton } from '@capillarytech/cap-react-ui-library';
18
- import { Spin, Popover, Select } from 'antd';
19
- import makeSelectGallery from './selectors';
20
- import messages from './messages';
21
- import * as actions from './actions';
22
- import { UserIsAuthenticated } from '../../../utils/authWrapper';
23
- import CardGrid from '../../../components/CardGrid';
24
- import * as globalActions from '../../../containers/Cap/actions';
25
- import {getMessageObject} from '../../../utils/messageUtils';
26
- import SlideBox from '../../../components/SlideBox';
27
- import PageHeader from '../../../components/PageHeader';
28
- import Pagination from '../../../components/Pagination';
29
- import * as commonUtil from '../../../utils/common';
30
- import './_gallery.scss';
31
- import injectSaga from '../../../utils/injectSaga';
32
- import injectReducer from '../../../utils/injectReducer';
33
- import reducer from './reducer';
34
- import { gallerySaga } from './sagas';
35
-
36
- const Option = Select.Option;
37
-
38
- export class Gallery extends React.Component { // eslint-disable-line react/prefer-stateless-function
39
- constructor(props) {
40
- super(props);
41
- this.state = {
42
- searchText: '',
43
- selectedAsset: {},
44
- showImagePreviewModal: false,
45
- hoveredItem: '',
46
- showEmbeddedPreview: false,
47
- page: 1,
48
- perPageLimit: 25,
49
- totalCount: 0,
50
- };
51
- this.uploadImages = this.uploadImages.bind(this);
52
- this.openFileDialog = this.openFileDialog.bind(this);
53
- this.searchAsset = this.searchAsset.bind(this);
54
- this.openPreviewMode = this.openPreviewMode.bind(this);
55
- this.renderAssetPreviewModal = this.renderAssetPreviewModal.bind(this);
56
- this.toggleImagePreview = this.toggleImagePreview.bind(this);
57
- this.selectAsset = this.selectAsset.bind(this);
58
- this.handleGallery = this.handleGallery.bind(this);
59
- this.deleteAsset = this.deleteAsset.bind(this);
60
- this.handleOnHoverItem = this.handleOnHoverItem.bind(this);
61
- this.unmountEvent = this.unmountEvent.bind(this);
62
- this.handleSortingChange = this.handleSortingChange.bind(this);
63
- this.openEmbeddedPreviewMode = this.openEmbeddedPreviewMode.bind(this);
64
- this.hideEmbeddedPreviewMode = this.hideEmbeddedPreviewMode.bind(this);
65
- this.delayTimer = 0;
66
- }
67
-
68
- componentDidMount() {
69
- const params = {
70
- name: this.state.searchText,
71
- sortBy: 'Most Recent',
72
- };
73
- this.getAllAssets({params});
74
- this.props.actions.getUserList();
75
- window.addEventListener("message", this.handleGallery, false);
76
- }
77
-
78
- componentWillReceiveProps(nextProps) {
79
-
80
- if ( !_.isEqual(nextProps.Gallery.uploadAssetSuccess, this.props.Gallery.uploadAssetSuccess) && nextProps.Gallery.uploadAssetSuccess) {
81
- if (this.props.location.query.type === 'embedded' && nextProps.Gallery.uploadedAssetData) {
82
-
83
- const response = {
84
- action: "selectAsset",
85
- value: JSON.stringify(nextProps.Gallery.uploadedAssetData),
86
- };
87
- parent.postMessage(JSON.stringify(response), '*');
88
- }
89
- const message = getMessageObject('success', this.props.intl.formatMessage(messages.assetUploadSuccess), true);
90
- this.props.globalActions.addMessageToQueue(message);
91
- const params = {
92
- name: this.state.searchText,
93
- };
94
- this.getAllAssets({params});
95
- }
96
- if (!this.props.Gallery.fetchingAllAssets && !_.isEmpty(this.props.Gallery.assetList) && this.props.Gallery.assetList[0] && this.props.Gallery.assetList[0].totalCount && this.state.totalCount === 0) {
97
- this.setState({totalCount: this.props.Gallery.assetList[0].totalCount});
98
- }
99
- if ( !_.isEqual(nextProps.Gallery.assetUploading, this.props.Gallery.assetUploading) && !nextProps.Gallery.uploadAssetSuccess && !nextProps.Gallery.assetUploading) {
100
- const message = getMessageObject('error', this.props.intl.formatMessage(messages.assetUploadFailed), true);
101
- this.props.globalActions.addMessageToQueue(message);
102
- }
103
-
104
- if (!nextProps.Gallery.deletingAsset && !nextProps.Gallery.assetDeleteError && !_.isEqual(nextProps.Gallery.deletingAsset, this.props.Gallery.deletingAsset)) {
105
- const message = getMessageObject('success', this.props.intl.formatMessage(messages.assetDeleteSuccess), true);
106
- this.props.globalActions.addMessageToQueue(message);
107
- const params = {
108
- name: this.state.searchText,
109
- sortBy: 'Most Recent',
110
- };
111
- this.getAllAssets({params});
112
- }
113
- if (!nextProps.Gallery.deletingAsset && nextProps.Gallery.assetDeleteError && !_.isEqual(nextProps.Gallery.deletingAsset, this.props.Gallery.deletingAsset)) {
114
- const message = getMessageObject('error', this.props.intl.formatMessage(messages.assetDeleteFailed), true);
115
- this.props.globalActions.addMessageToQueue(message);
116
- }
117
- }
118
-
119
- componentWillUnmount() {
120
- window.removeEventListener("message", this.handleGallery, false);
121
- }
122
-
123
- getAllAssets = ({params, getNextPage, resetPage}, isReRender = false) => {
124
- let queryParams = params;
125
- let page = this.state.page;
126
- if (!this.props.Gallery.fetchingAllAssets && ((resetPage || (page === 1 && this.state.totalCount === 0) || page <= (this.state.totalCount / this.state.perPageLimit)) || isReRender )) {
127
- if (getNextPage) {
128
- page += 1;
129
- }
130
-
131
- let totalCount = this.state.totalCount;
132
- if (resetPage) {
133
- page = 1;
134
- totalCount = 0;
135
- }
136
- if ((!params || _.isEmpty(params))) {
137
- queryParams = {
138
- sortBy: this.state.sortBy,
139
- };
140
- }
141
- if (this.state.searchText !== "") {
142
- queryParams = {...queryParams, name: this.state.searchText};
143
- }
144
- this.setState({page, totalCount}, () => {
145
- queryParams.page = page;
146
- queryParams.perPage = this.state.perPageLimit;
147
- this.props.actions.getAllAssets('image', queryParams);
148
- });
149
- }
150
- };
151
-
152
- deleteAsset(asset) {
153
- this.props.actions.deleteAssetById(asset._id, asset.type);
154
- }
155
-
156
- handleGallery = (e) => {
157
- const type = e.data;
158
- switch (type) {
159
- case 'unmount':
160
- this.unmountEvent();
161
- break;
162
- default:
163
- break;
164
- }
165
- };
166
-
167
- handleSortingChange(value) {
168
- const params = {
169
- name: this.state.searchText,
170
- sortBy: value,
171
- };
172
- this.getAllAssets({params, resetPage: true});
173
- }
174
- unmountEvent() {
175
- window.removeEventListener("message", this.handleGallery, false);
176
- }
177
-
178
- handleOnHoverItem(isHovering, id) {
179
- if (isHovering) {
180
- this.setState({hoveredItem: id});
181
- } else {
182
- this.setState({hoveredItem: ''});
183
- }
184
- }
185
-
186
- toggleImagePreview() {
187
- this.setState({ showImagePreviewModal: !this.state.showImagePreviewModal });
188
- }
189
-
190
- selectAsset() {
191
- const response = {
192
- action: "selectAsset",
193
- value: JSON.stringify(this.state.selectedAsset),
194
- };
195
- parent.postMessage(JSON.stringify(response), '*');
196
- }
197
-
198
- openPreviewMode(selectedAsset) {
199
- const asset = selectedAsset;
200
- if (this.props.location.query.type !== 'embedded') {
201
- this.toggleImagePreview();
202
- } else {
203
- asset.showButtons = asset.showButtons ? !asset.showButtons : true;
204
- }
205
- this.setState({selectedAsset: asset});
206
- }
207
-
208
- hideEmbeddedPreviewMode() {
209
- this.setState({selectedAsset: {}, showEmbeddedPreview: false});
210
- }
211
-
212
- openEmbeddedPreviewMode(selectAsset) {
213
- this.setState({selectedAsset: selectAsset, showEmbeddedPreview: true});
214
- }
215
-
216
- searchAsset(value) {
217
- this.setState({searchText: value}, () => {
218
- this.delay(() => {
219
- const params = {
220
- name: this.state.searchText,
221
- };
222
- if (this.state.sortBy) {
223
- params.sortBy = this.state.sortBy;
224
- }
225
- this.getAllAssets({params, resetPage: true});
226
- }, 1000);
227
- });
228
- }
229
-
230
- delay(callback, ms) {
231
- clearTimeout(this.delayTimer);
232
- this.delayTimer = setTimeout(callback, ms);
233
- }
234
-
235
- uploadImages(e, {files}) {
236
- e.preventDefault();
237
- const _URL = window.URL || window.webkitURL;
238
- for (const file in files) {
239
- if (files.hasOwnProperty(file)) {
240
- const img = new Image();
241
- const that = this;
242
- img.src = _URL.createObjectURL(files[file]);
243
- img.onload = function () {
244
- const fileParams = {
245
- width: this.width,
246
- height: this.height,
247
- };
248
- that.props.actions.uploadAsset(files[file], 'image', fileParams);
249
- };
250
- }
251
- }
252
- }
253
-
254
- prepareData() {
255
- const data = [];
256
- const assetList = this.props.Gallery.assetList;
257
- _.forEach(assetList, (asset) => {
258
- const tmpData = {};
259
- tmpData.id = asset._id;
260
- const updateDateTime = (moment().format('DD-MM-YYYY') === moment(asset.updatedAt).format('DD-MM-YYYY')) ? moment(asset.updatedAt).format('hh:mma') : moment(asset.updatedAt).format('DD-MM-YYYY');
261
- tmpData.content = (
262
- <div className="image-container" onClick={() => this.openPreviewMode(asset)}>
263
- <img style={{width: '100%'}} src={asset.metaInfo.secure_file_path ? asset.metaInfo.secure_file_path : asset.metaInfo.public_url} alt={asset.name} />
264
- <div className={asset.showButtons ? 'overlay show-overlay' : 'overlay hide'}>
265
- <div>
266
- <CapButton type="secondary" className="select-button" onClick={(e) => this.selectAsset(e)}>
267
- <FormattedMessage {...messages.select} />
268
- </CapButton>
269
- </div>
270
- <div>
271
- <CapButton type="cancel" className="preview-button" onClick={() => this.openEmbeddedPreviewMode(asset)}>
272
- <FormattedMessage {...messages.preview} />
273
- </CapButton>
274
- </div>
275
- </div>
276
- </div>
277
- );
278
- tmpData.footer = (
279
- <div className="card-footer-wrapper">
280
- <div className="card-title-container">
281
- <div className="card-title-wrapper">
282
- <p className="card-title" onClick={() => this.openPreviewMode(asset)}>{asset.name}</p>
283
- </div>
284
- <div className="more-icon-wrapper">
285
- <Popover
286
- placement="leftTop"
287
- content={<div style={{ cursor: 'pointer'}}><p onClick={() => this.deleteAsset(asset)}>
288
- <FormattedMessage {...messages.delete} />
289
- </p></div>} trigger="click">
290
- <i className="material-icons creative-icons">more_vert</i>
291
- </Popover>
292
- </div>
293
- </div>
294
- <p className="card-detail"><FormattedMessage {...messages.uploadedAt} />: {updateDateTime}</p>
295
- </div>
296
- );
297
- data.push(tmpData);
298
- });
299
- return data;
300
- }
301
-
302
- openFileDialog() {
303
- document.getElementById("fileName").click();
304
- }
305
-
306
- renderAssetPreviewModal() {
307
- const slideboxContent = (
308
- <div style={{height: "75vh", width: '55vw'}}>
309
- <div style={{overflow: 'hidden', textAlign: 'center'}}>
310
- <div style={{ display: 'table', height: '75vh', width: '55vw', background: 'url(https://s3.amazonaws.com/test_files_cache_bkp/intouch_creative_assets/1720b7f7e78860c1f905.svg)' }}>
311
- <div style={{ display: 'table-cell', height: "75vh", verticalAlign: 'middle' }}>
312
- <img style={{maxWidth: '100%', maxHeight: '100%'}} src={this.state.selectedAsset.metaInfo.secure_file_path ? this.state.selectedAsset.metaInfo.secure_file_path : this.state.selectedAsset.metaInfo.public_url} alt={this.state.selectedAsset.name} />
313
- </div>
314
- </div>
315
- <a href={this.state.selectedAsset.metaInfo.public_url} target="_blank" style={{ position: 'fixed', right: '55px', bottom: '18vh' }} ><i className="material-icons" style={{ color: '#2E89DF', cursor: 'pointer' }}>fullscreen</i></a>
316
- </div>
317
- <div style={{ fontSize: '14px', color: '#333333', lineHeight: '24px', fontFamily: 'OpenSans', textAlign: 'center', paddingTop: '10px'}}>
318
- <p style={{marginBottom: '0px'}}><span><FormattedMessage {...messages.dimensions} />: </span> <span>{`${this.state.selectedAsset.metaInfo.width}X${this.state.selectedAsset.metaInfo.height} px`}</span></p>
319
- <p style={{marginBottom: '0px'}}><span><FormattedMessage {...messages.size} />: </span> <span>{(!isNaN(this.state.selectedAsset.metaInfo.file_size) ? `${(parseFloat(this.state.selectedAsset.metaInfo.file_size) / 1024).toFixed(2)} KB` : this.state.selectedAsset.metaInfo.file_size )}</span></p>
320
- <p style={{marginBottom: '0px'}}><span><FormattedMessage {...messages.uploadedOn} />: </span> <span>{moment(this.state.selectedAsset.updatedAt).format('DD MMM YYYY hh:mm A')}</span></p>
321
- <p><span><FormattedMessage {...messages.uploadedBy} />: </span> <span>{commonUtil.getUserNameById(parseInt(this.state.selectedAsset.updatedBy, 10), commonUtil.getMergedUserList(this.props.Gallery.userList))}</span></p>
322
- {/* <p><span>URL: </span> <span>{this.state.selectedAsset.metaInfo.publicUrl}</span></p> */}
323
- </div>
324
- </div>
325
- );
326
-
327
- return (
328
- <SlideBox
329
- header={this.state.selectedAsset.name}
330
- content={slideboxContent}
331
- show={this.state.showImagePreviewModal}
332
- handleClose={this.toggleImagePreview}
333
- />
334
- );
335
- }
336
-
337
- render() {
338
- const filterContent = (
339
- <div className="action-container" style={{ display: 'inline-flex', width: '100%'}}>
340
- <div style={{ marginTop: '8px', width: '50%'}}>
341
- <CapInput
342
- className="search-text"
343
- style={{width: '210px'}}
344
- placeholder={this.props.intl.formatMessage(messages.searchText)}
345
- prefix={<i className="material-icons" style={{color: '#707070', fontSize: '16px'}}>search</i>}
346
- value={this.state.searchText}
347
- onChange={(e) => this.searchAsset(e.target.value)}
348
- />
349
- </div>
350
- <div style={{ textAlign: 'right', marginTop: '16px', width: '50%'}}>
351
- <span className="select-font">
352
- <FormattedMessage {...messages.sortby} />
353
- </span>
354
- <Select
355
- style={{marginLeft: '8px', width: 120, borderLeft: 'none', borderRight: 'none', borderTop: 'none'}}
356
- className="select-font"
357
- defaultValue="Most Recent"
358
- onChange={this.handleSortingChange}
359
- >
360
- <Option className="select-font" value="Most Recent">
361
- <FormattedMessage {...messages.mostRecent} />
362
- </Option>
363
- <Option className="select-font" value="Alphabetically">
364
- <FormattedMessage {...messages.alphabetically} />
365
- </Option>
366
- </Select>
367
- </div>
368
- </div>
369
- );
370
- const actionComponents = (
371
- <form encType="multipart/form-data" id="myForm">
372
- <input style={{ display: 'none'}} id="fileName" type="file" onClick={(e) => {e.target.value=null}} onChange={(e) => this.uploadImages(e, {files: e.target.files})} accept="image/*" multiple/>
373
- <CapButton type={this.props.location.query.type !== 'embedded' ? 'primary' : 'secondary'} onClick={(e) => this.openFileDialog(e)} style={{float: 'right'}}>
374
- <FormattedMessage {...messages.upload} />
375
- </CapButton>
376
- </form>
377
- );
378
- const pageHeading = (this.props.location.query.type === 'embedded') ? '' : (<FormattedMessage {...messages.gallery} />);
379
-
380
- return (
381
- <div>
382
- {/*<Spin spinning={this.props.Gallery.assetUploading || this.props.Gallery.fetchingAllAssets}>*/}
383
- <Helmet
384
- title={this.props.intl.formatMessage(messages.gallery)}
385
- />
386
- {/* this.props.location.query.type !== 'embedded' && <Row style={{marginBottom: '16px'}}>
387
- <Col>
388
- <Breadcrumb>
389
- <Breadcrumb.Item>Campaigns</Breadcrumb.Item>
390
- <Breadcrumb.Item>Creatives</Breadcrumb.Item>
391
- <Breadcrumb.Item>Images Gallery</Breadcrumb.Item>
392
- </Breadcrumb>
393
- </Col>
394
- </Row> */}
395
-
396
- {!this.state.showEmbeddedPreview && <PageHeader pageHeading={pageHeading} actionComponents={actionComponents} />}
397
-
398
- {this.state.showEmbeddedPreview ?
399
- <div className="embedded-preview-wrapper">
400
- <div className="embedded-preview-header" onClick={this.hideEmbeddedPreviewMode}>
401
- <p className="embedded-preview-header-wrapper" style={{display: 'inline-flex'}}>
402
- <i className="material-icons">arrow_back</i>
403
- <span className="embedded-preview-header-text">
404
- <FormattedMessage {...messages.backToGallery} />
405
- </span>
406
- </p>
407
- </div>
408
- <div style={{height: "75vh", width: '100%'}}>
409
- <div style={{overflow: 'hidden', textAlign: 'center'}}>
410
- <div style={{ display: 'table', height: '75vh', width: '85vw', background: 'url(https://s3.amazonaws.com/test_files_cache_bkp/intouch_creative_assets/1720b7f7e78860c1f905.svg)' }}>
411
- <div style={{ height: "75vh", display: 'table-cell', verticalAlign: 'middle' }}>
412
- <img style={{maxWidth: '100%', maxHeight: '100%'}} src={this.state.selectedAsset.metaInfo.secure_file_path ? this.state.selectedAsset.metaInfo.secure_file_path : this.state.selectedAsset.metaInfo.public_url} alt={this.state.selectedAsset.name} />
413
- </div>
414
- </div>
415
- <a href={this.state.selectedAsset.metaInfo.public_url} target="_blank" style={{ position: 'fixed', right: '24px', bottom: '17vh' }} ><i className="material-icons" style={{ color: '#2E89DF', cursor: 'pointer' }}>fullscreen</i></a>
416
- </div>
417
- <div style={{ fontSize: '14px', color: '#333333', lineHeight: '24px', fontFamily: 'OpenSans', textAlign: 'center', paddingTop: '10px'}}>
418
- <p><span><FormattedMessage {...messages.dimensions} />: </span> <span>{`${this.state.selectedAsset.metaInfo.width}X${this.state.selectedAsset.metaInfo.height} px`}</span></p>
419
- <p><span><FormattedMessage {...messages.size} />: </span> <span>{this.state.selectedAsset.metaInfo.file_size}</span></p>
420
- <p><span><FormattedMessage {...messages.uploadedOn} />: </span> <span>{moment(this.state.selectedAsset.updatedAt).format('DD MMM YYYY hh:mm A')}</span></p>
421
- {/* <p><span>URL: </span> <span>{this.state.selectedAsset.metaInfo.publicUrl}</span></p> */}
422
- </div>
423
- </div>
424
- </div> :
425
- <Spin spinning={this.props.Gallery.assetUploading || this.props.Gallery.fetchingAllAssets}>
426
- <Pagination onPageChange={() => { this.getAllAssets({getNextPage: true}); }} paginationSelector="pagination-container">
427
- <CardGrid
428
- listItem={this.prepareData()}
429
- filterContent={filterContent}
430
- onHoverItem={this.handleOnHoverItem}
431
- onItemClick={this.handleOnHoverItem}
432
- colNumber={this.props.location.query.type === 'embedded' ? 2 : 4}
433
- enablePagination
434
- />
435
- </Pagination>
436
- </Spin>
437
- }
438
- {this.state.showImagePreviewModal && this.renderAssetPreviewModal()}
439
- {/*</Spin>*/}
440
- </div>
441
- );
442
- }
443
- }
444
-
445
- Gallery.propTypes = {
446
- actions: PropTypes.object.isRequired,
447
- Gallery: PropTypes.object,
448
- globalActions: PropTypes.object,
449
- location: PropTypes.object,
450
- intl: intlShape.isRequired,
451
- };
452
-
453
- const mapStateToProps = createStructuredSelector({
454
- Gallery: makeSelectGallery(),
455
- });
456
-
457
- function mapDispatchToProps(dispatch) {
458
- return {
459
- actions: bindActionCreators(actions, dispatch),
460
- globalActions: bindActionCreators(globalActions, dispatch),
461
- };
462
- }
463
-
464
- const withConnect = connect(mapStateToProps, mapDispatchToProps);
465
- const withSaga = injectSaga({ key: 'gallery', saga: gallerySaga });
466
- const withReducer = injectReducer({ key: 'gallery', reducer });
467
-
468
- export default compose(
469
- UserIsAuthenticated,
470
- withSaga,
471
- withReducer,
472
- withConnect,
473
- )(injectIntl(Gallery));
@@ -1,93 +0,0 @@
1
- /*
2
- * Gallery Messages
3
- *
4
- * This contains all the text for the Gallery component.
5
- */
6
- import { defineMessages } from 'react-intl';
7
-
8
- export default defineMessages({
9
- uploadedAt: {
10
- id: 'creatives.containers.Assets.Gallery.uploadedAt',
11
- defaultMessage: 'Uploaded at ',
12
- },
13
- uploadedOn: {
14
- id: 'creatives.containers.Assets.Gallery.uploadedOn',
15
- defaultMessage: 'Uploaded on ',
16
- },
17
- uploadedBy: {
18
- id: 'creatives.containers.Assets.Gallery.uploadedBy',
19
- defaultMessage: 'Uploaded by ',
20
- },
21
- upload: {
22
- id: 'creatives.containers.Assets.Gallery.upload',
23
- defaultMessage: 'Upload image',
24
- },
25
- imagePreview: {
26
- id: 'creatives.containers.Assets.Gallery.imagePreview',
27
- defaultMessage: 'Image preview',
28
- },
29
- size: {
30
- id: 'creatives.containers.Assets.Gallery.size',
31
- defaultMessage: 'Size',
32
- },
33
- dimensions: {
34
- id: 'creatives.containers.Assets.Gallery.dimensions',
35
- defaultMessage: 'Dimensions',
36
- },
37
- gallery: {
38
- id: 'creatives.containers.Assets.Gallery.gallery',
39
- defaultMessage: 'Gallery',
40
- },
41
- backToGallery: {
42
- id: 'creatives.containers.Assets.Gallery.backToGallery',
43
- defaultMessage: 'Back to image gallery',
44
- },
45
- mostRecent: {
46
- id: 'creatives.containers.Assets.Gallery.mostRecent',
47
- defaultMessage: 'Most recent',
48
- },
49
- alphabetically: {
50
- id: 'creatives.containers.Assets.Gallery.alphabetically',
51
- defaultMessage: 'Alphabetically',
52
- },
53
- sortby: {
54
- id: 'creatives.containers.Assets.Gallery.sortby',
55
- defaultMessage: 'Sort by',
56
- },
57
- delete: {
58
- id: 'creatives.containers.Assets.Gallery.delete',
59
- defaultMessage: 'Delete',
60
- },
61
- search: {
62
- id: 'creatives.containers.Assets.Gallery.search',
63
- defaultMessage: 'Search',
64
- },
65
- select: {
66
- id: 'creatives.containers.Assets.Gallery.select',
67
- defaultMessage: 'Select',
68
- },
69
- preview: {
70
- id: 'creatives.containers.Assets.Gallery.preview',
71
- defaultMessage: 'Preview',
72
- },
73
- assetUploadSuccess: {
74
- id: 'creatives.containers.Assets.Gallery.assetUploadSuccess',
75
- defaultMessage: 'Image uploaded successfully',
76
- },
77
- assetUploadFailed: {
78
- id: 'creatives.containers.Assets.Gallery.assetUploadFailed',
79
- defaultMessage: 'Image uploaded failed',
80
- },
81
- assetDeleteSuccess: {
82
- id: 'creatives.containers.Assets.Gallery.assetDeleteSuccess',
83
- defaultMessage: 'Image deleted successfully.',
84
- },
85
- assetDeleteFailed: {
86
- id: 'creatives.containers.Assets.Gallery.assetDeleteFailed',
87
- defaultMessage: 'Image deletion failed.',
88
- },
89
- searchText: {
90
- id: 'creatives.components.CapTagList.searchText',
91
- defaultMessage: 'Search',
92
- },
93
- });
@@ -1,81 +0,0 @@
1
- /*
2
- *
3
- * Gallery reducer
4
- *
5
- */
6
-
7
- import { fromJS } from 'immutable';
8
- import * as types from './constants';
9
-
10
- const initialState = fromJS({
11
- assetList: [],
12
- assetUploading: false,
13
- fetchingAllAssets: false,
14
- });
15
-
16
- function galleryReducer(state = initialState, action) {
17
- switch (action.type) {
18
- case types.GET_ALL_ASSETS_REQUEST:
19
- return state
20
- .set('fetchingAllAssets', true)
21
- .set('fetchAllAssetSuccess', false);
22
- case types.GET_ALL_ASSETS_SUCCESS:
23
- if (action.isReset) {
24
- return state
25
- .set('assetList', fromJS(action.data.assets))
26
- .set('fetchingAllAssets', false)
27
- .set('fetchAllAssetSuccess', true);
28
- }
29
- return state
30
- .set('assetList', fromJS(state.get('assetList').toJS().concat(action.data.assets)))
31
- .set('fetchingAllAssets', false)
32
- .set('fetchAllAssetSuccess', true);
33
- case types.GET_ALL_ASSETS_FAILURE:
34
- return state
35
- .set('fetchingAllAssets', false)
36
- .set('fetchAllAssetSuccess', false);
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.DELETE_ASSET_REQUEST:
51
- return state
52
- .set('deletingAsset', true)
53
- .set('assetDeleteError', false).set("itemDeleted", false);
54
- case types.DELETE_ASSET_SUCCESS:
55
- return state
56
- .set('deletingAsset', false).set("itemDeleted", true);
57
- case types.DELETE_ASSET_FAILURE:
58
- return state
59
- .set('deletingAsset', false)
60
- .set('assetDeleteError', true).set("itemDeleted", false);
61
- case types.GET_USER_LIST_REQUEST:
62
- return state
63
- .set('fetchingUserList', true)
64
- .set('userList', fromJS({}))
65
- .set('userListFetchError', false);
66
- case types.GET_USER_LIST_SUCCESS:
67
- return state
68
- .set('fetchingUserList', false)
69
- .set('userList', fromJS(action.data))
70
- .set('userListFetchError', false);
71
- case types.GET_USER_LIST_FAILURE:
72
- return state
73
- .set('fetchingUserList', false)
74
- .set('userList', fromJS({}))
75
- .set('userListFetchError', true);
76
- default:
77
- return state;
78
- }
79
- }
80
-
81
- export default galleryReducer;