@plusscommunities/pluss-core-app 6.1.7 → 6.1.8-auth.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 (320) hide show
  1. package/dist/module/actions/FollowerActions.js +4 -4
  2. package/dist/module/actions/FollowerActions.js.map +1 -1
  3. package/dist/module/actions/MediaActions.js +1 -1
  4. package/dist/module/actions/MediaActions.js.map +1 -1
  5. package/dist/module/actions/ResidentActions.js +1 -1
  6. package/dist/module/actions/ResidentActions.js.map +1 -1
  7. package/dist/module/actions/UserActions.js +1 -1
  8. package/dist/module/actions/UserActions.js.map +1 -1
  9. package/dist/module/actions/UserSettingsActions.js +1 -1
  10. package/dist/module/actions/UserSettingsActions.js.map +1 -1
  11. package/dist/module/actions/index.js +5 -5
  12. package/dist/module/actions/index.js.map +1 -1
  13. package/dist/module/actions/types.js +16 -16
  14. package/dist/module/actions/types.js.map +1 -1
  15. package/dist/module/apis/analyticsActions.js +5 -5
  16. package/dist/module/apis/analyticsActions.js.map +1 -1
  17. package/dist/module/apis/contactActions.js +6 -6
  18. package/dist/module/apis/contactActions.js.map +1 -1
  19. package/dist/module/apis/eventActions.js +28 -28
  20. package/dist/module/apis/eventActions.js.map +1 -1
  21. package/dist/module/apis/fileActions.js +21 -28
  22. package/dist/module/apis/fileActions.js.map +1 -1
  23. package/dist/module/apis/followerActions.js +8 -8
  24. package/dist/module/apis/followerActions.js.map +1 -1
  25. package/dist/module/apis/index.js +12 -12
  26. package/dist/module/apis/index.js.map +1 -1
  27. package/dist/module/apis/notificationActions.js +17 -17
  28. package/dist/module/apis/notificationActions.js.map +1 -1
  29. package/dist/module/apis/profileActions.js +4 -4
  30. package/dist/module/apis/profileActions.js.map +1 -1
  31. package/dist/module/apis/reactionActions.js +15 -15
  32. package/dist/module/apis/reactionActions.js.map +1 -1
  33. package/dist/module/apis/settingActions.js +6 -6
  34. package/dist/module/apis/settingActions.js.map +1 -1
  35. package/dist/module/apis/stringActions.js +8 -8
  36. package/dist/module/apis/stringActions.js.map +1 -1
  37. package/dist/module/apis/typeActions.js +4 -4
  38. package/dist/module/apis/typeActions.js.map +1 -1
  39. package/dist/module/apis/userActions.js +8 -8
  40. package/dist/module/apis/userActions.js.map +1 -1
  41. package/dist/module/assets/icons/fontawesome/fa-brands-400.ttf +0 -0
  42. package/dist/module/assets/icons/fontawesome/fa-light-300.ttf +0 -0
  43. package/dist/module/assets/icons/fontawesome/fa-regular-400.ttf +0 -0
  44. package/dist/module/assets/icons/fontawesome/fa-solid-900.ttf +0 -0
  45. package/dist/module/assets/icons/fontawesome/fa-thin-100.ttf +0 -0
  46. package/dist/module/assets/icons/fontawesome/fa7-glyphmap.json +4205 -0
  47. package/dist/module/colours.js +26 -29
  48. package/dist/module/colours.js.map +1 -1
  49. package/dist/module/components/AddButton.js +8 -8
  50. package/dist/module/components/AddButton.js.map +1 -1
  51. package/dist/module/components/AddToCalendarButton.js +30 -29
  52. package/dist/module/components/AddToCalendarButton.js.map +1 -1
  53. package/dist/module/components/Attachment.js +10 -9
  54. package/dist/module/components/Attachment.js.map +1 -1
  55. package/dist/module/components/AudienceSelectorLauncher.js +11 -11
  56. package/dist/module/components/AudienceSelectorLauncher.js.map +1 -1
  57. package/dist/module/components/AudienceSelectorPage.js +45 -44
  58. package/dist/module/components/AudienceSelectorPage.js.map +1 -1
  59. package/dist/module/components/AutoOffsetImage.js +13 -13
  60. package/dist/module/components/AutoOffsetImage.js.map +1 -1
  61. package/dist/module/components/BackButton.js +10 -10
  62. package/dist/module/components/BackButton.js.map +1 -1
  63. package/dist/module/components/CalendarPopup.js +21 -21
  64. package/dist/module/components/CalendarPopup.js.map +1 -1
  65. package/dist/module/components/CategoryTabs.js +30 -29
  66. package/dist/module/components/CategoryTabs.js.map +1 -1
  67. package/dist/module/components/CommentReply.js +36 -34
  68. package/dist/module/components/CommentReply.js.map +1 -1
  69. package/dist/module/components/CommentSection.js +74 -74
  70. package/dist/module/components/CommentSection.js.map +1 -1
  71. package/dist/module/components/ConfirmPopup.js +21 -20
  72. package/dist/module/components/ConfirmPopup.js.map +1 -1
  73. package/dist/module/components/ConfirmationPopup.js +11 -11
  74. package/dist/module/components/ConfirmationPopup.js.map +1 -1
  75. package/dist/module/components/DocumentUploader.js +253 -0
  76. package/dist/module/components/DocumentUploader.js.map +1 -0
  77. package/dist/module/components/DropDownItem.js +14 -13
  78. package/dist/module/components/DropDownItem.js.map +1 -1
  79. package/dist/module/components/DropDownMenu.js +5 -5
  80. package/dist/module/components/DropDownMenu.js.map +1 -1
  81. package/dist/module/components/EmptyStateMain.js +10 -9
  82. package/dist/module/components/EmptyStateMain.js.map +1 -1
  83. package/dist/module/components/EmptyStateWidget.js +7 -6
  84. package/dist/module/components/EmptyStateWidget.js.map +1 -1
  85. package/dist/module/components/FontScaleButton.js +5 -4
  86. package/dist/module/components/FontScaleButton.js.map +1 -1
  87. package/dist/module/components/FontScalePopup.js +11 -10
  88. package/dist/module/components/FontScalePopup.js.map +1 -1
  89. package/dist/module/components/Forbidden.js +13 -13
  90. package/dist/module/components/Forbidden.js.map +1 -1
  91. package/dist/module/components/FormCard.js +4 -4
  92. package/dist/module/components/FormCard.js.map +1 -1
  93. package/dist/module/components/FormCardSection.js +20 -18
  94. package/dist/module/components/FormCardSection.js.map +1 -1
  95. package/dist/module/components/FormCardSectionOptionLauncher.js +13 -12
  96. package/dist/module/components/FormCardSectionOptionLauncher.js.map +1 -1
  97. package/dist/module/components/FormattedText.js +18 -16
  98. package/dist/module/components/FormattedText.js.map +1 -1
  99. package/dist/module/components/GenericInput.js +24 -21
  100. package/dist/module/components/GenericInput.js.map +1 -1
  101. package/dist/module/components/GenericInputSection.js +27 -26
  102. package/dist/module/components/GenericInputSection.js.map +1 -1
  103. package/dist/module/components/Header.js +70 -69
  104. package/dist/module/components/Header.js.map +1 -1
  105. package/dist/module/components/Icon.js +109 -0
  106. package/dist/module/components/Icon.js.map +1 -0
  107. package/dist/module/components/ImagePopup.js +237 -77
  108. package/dist/module/components/ImagePopup.js.map +1 -1
  109. package/dist/module/components/ImageUploadProgress.js +10 -9
  110. package/dist/module/components/ImageUploadProgress.js.map +1 -1
  111. package/dist/module/components/ImageUploader.js +22 -13
  112. package/dist/module/components/ImageUploader.js.map +1 -1
  113. package/dist/module/components/InlineButton.js +9 -8
  114. package/dist/module/components/InlineButton.js.map +1 -1
  115. package/dist/module/components/Input.js +28 -26
  116. package/dist/module/components/Input.js.map +1 -1
  117. package/dist/module/components/LoadingCircles.js +20 -20
  118. package/dist/module/components/LoadingCircles.js.map +1 -1
  119. package/dist/module/components/LoadingIndicator.js +11 -11
  120. package/dist/module/components/LoadingIndicator.js.map +1 -1
  121. package/dist/module/components/LoadingStateWidget.js +5 -5
  122. package/dist/module/components/LoadingStateWidget.js.map +1 -1
  123. package/dist/module/components/MediaPlayer.js +32 -32
  124. package/dist/module/components/MediaPlayer.js.map +1 -1
  125. package/dist/module/components/MiddlePopup.js +9 -9
  126. package/dist/module/components/MiddlePopup.js.map +1 -1
  127. package/dist/module/components/PDFPopup.js +36 -36
  128. package/dist/module/components/PDFPopup.js.map +1 -1
  129. package/dist/module/components/PlussChat.js +234 -146
  130. package/dist/module/components/PlussChat.js.map +1 -1
  131. package/dist/module/components/PlussChatMessage.js +75 -38
  132. package/dist/module/components/PlussChatMessage.js.map +1 -1
  133. package/dist/module/components/PlussChatTime.js +18 -17
  134. package/dist/module/components/PlussChatTime.js.map +1 -1
  135. package/dist/module/components/Popup.js +20 -19
  136. package/dist/module/components/Popup.js.map +1 -1
  137. package/dist/module/components/PopupMenu.js +15 -14
  138. package/dist/module/components/PopupMenu.js.map +1 -1
  139. package/dist/module/components/PositionedImage.js +20 -20
  140. package/dist/module/components/PositionedImage.js.map +1 -1
  141. package/dist/module/components/ProfilePic.js +10 -10
  142. package/dist/module/components/ProfilePic.js.map +1 -1
  143. package/dist/module/components/RadioButton.js +10 -9
  144. package/dist/module/components/RadioButton.js.map +1 -1
  145. package/dist/module/components/Reaction.js +18 -17
  146. package/dist/module/components/Reaction.js.map +1 -1
  147. package/dist/module/components/Reactions.js +7 -7
  148. package/dist/module/components/Reactions.js.map +1 -1
  149. package/dist/module/components/SharingTools.js +29 -28
  150. package/dist/module/components/SharingTools.js.map +1 -1
  151. package/dist/module/components/Spinner.js +5 -5
  152. package/dist/module/components/Spinner.js.map +1 -1
  153. package/dist/module/components/StickyFooter.js +6 -6
  154. package/dist/module/components/StickyFooter.js.map +1 -1
  155. package/dist/module/components/Text.js +57 -0
  156. package/dist/module/components/Text.js.map +1 -0
  157. package/dist/module/components/TickIcon.js +6 -6
  158. package/dist/module/components/TickIcon.js.map +1 -1
  159. package/dist/module/components/Toggle.js +10 -9
  160. package/dist/module/components/Toggle.js.map +1 -1
  161. package/dist/module/components/TouchableSearchBar.js +18 -17
  162. package/dist/module/components/TouchableSearchBar.js.map +1 -1
  163. package/dist/module/components/UserListPopup.js +20 -19
  164. package/dist/module/components/UserListPopup.js.map +1 -1
  165. package/dist/module/components/UserListing.js +41 -40
  166. package/dist/module/components/UserListing.js.map +1 -1
  167. package/dist/module/components/VideoPopup.js +20 -20
  168. package/dist/module/components/VideoPopup.js.map +1 -1
  169. package/dist/module/components/WarningPopup.js +21 -20
  170. package/dist/module/components/WarningPopup.js.map +1 -1
  171. package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js +13 -13
  172. package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js.map +1 -1
  173. package/dist/module/components/expo-image-picker-multiple/ImageTile.js +24 -23
  174. package/dist/module/components/expo-image-picker-multiple/ImageTile.js.map +1 -1
  175. package/dist/module/components/index.js +59 -57
  176. package/dist/module/components/index.js.map +1 -1
  177. package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js +90 -58
  178. package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js.map +1 -1
  179. package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js +64 -64
  180. package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js.map +1 -1
  181. package/dist/module/config.js +6 -1
  182. package/dist/module/config.js.map +1 -1
  183. package/dist/module/constants.js +3 -3
  184. package/dist/module/constants.js.map +1 -1
  185. package/dist/module/helper.js +83 -82
  186. package/dist/module/helper.js.map +1 -1
  187. package/dist/module/index.js +12 -12
  188. package/dist/module/index.js.map +1 -1
  189. package/dist/module/js/images/detectFaces.js +6 -6
  190. package/dist/module/js/images/detectFaces.js.map +1 -1
  191. package/dist/module/js/images/findLandmarkRange.js +8 -8
  192. package/dist/module/js/images/findLandmarkRange.js.map +1 -1
  193. package/dist/module/js/images/getScaledOffset.js.map +1 -1
  194. package/dist/module/js/site/getSiteLevelFromState.js +2 -2
  195. package/dist/module/js/site/getSiteLevelFromState.js.map +1 -1
  196. package/dist/module/js/site/isTVEnabled.js +2 -2
  197. package/dist/module/js/site/isTVEnabled.js.map +1 -1
  198. package/dist/module/session.js +2 -2
  199. package/dist/module/session.js.map +1 -1
  200. package/dist/module/styles.js +17 -17
  201. package/dist/module/styles.js.map +1 -1
  202. package/dist/module/withNavigationFocus.js +30 -0
  203. package/dist/module/withNavigationFocus.js.map +1 -0
  204. package/package.json +4 -1
  205. package/src/actions/FollowerActions.js +36 -32
  206. package/src/actions/MediaActions.js +25 -20
  207. package/src/actions/ResidentActions.js +26 -21
  208. package/src/actions/UserActions.js +22 -22
  209. package/src/actions/UserSettingsActions.js +11 -11
  210. package/src/actions/index.js +5 -5
  211. package/src/actions/types.js +16 -16
  212. package/src/apis/analyticsActions.js +17 -17
  213. package/src/apis/contactActions.js +20 -20
  214. package/src/apis/eventActions.js +153 -144
  215. package/src/apis/fileActions.js +19 -27
  216. package/src/apis/followerActions.js +29 -29
  217. package/src/apis/index.js +12 -12
  218. package/src/apis/notificationActions.js +44 -44
  219. package/src/apis/profileActions.js +8 -8
  220. package/src/apis/reactionActions.js +81 -73
  221. package/src/apis/settingActions.js +15 -15
  222. package/src/apis/stringActions.js +29 -25
  223. package/src/apis/typeActions.js +10 -10
  224. package/src/apis/userActions.js +93 -93
  225. package/src/assets/icons/fontawesome/fa-brands-400.ttf +0 -0
  226. package/src/assets/icons/fontawesome/fa-light-300.ttf +0 -0
  227. package/src/assets/icons/fontawesome/fa-regular-400.ttf +0 -0
  228. package/src/assets/icons/fontawesome/fa-solid-900.ttf +0 -0
  229. package/src/assets/icons/fontawesome/fa-thin-100.ttf +0 -0
  230. package/src/assets/icons/fontawesome/fa7-glyphmap.json +4205 -0
  231. package/src/colours.js +116 -96
  232. package/src/components/AddButton.js +32 -27
  233. package/src/components/AddToCalendarButton.js +236 -202
  234. package/src/components/Attachment.js +59 -36
  235. package/src/components/AudienceSelectorLauncher.js +52 -48
  236. package/src/components/AudienceSelectorPage.js +353 -311
  237. package/src/components/AutoOffsetImage.js +237 -196
  238. package/src/components/BackButton.js +57 -41
  239. package/src/components/CalendarPopup.js +127 -97
  240. package/src/components/CategoryTabs.js +208 -163
  241. package/src/components/CommentReply.js +363 -309
  242. package/src/components/CommentSection.js +974 -782
  243. package/src/components/ConfirmPopup.js +141 -110
  244. package/src/components/ConfirmationPopup.js +80 -69
  245. package/src/components/DocumentUploader.js +255 -0
  246. package/src/components/DropDownItem.js +70 -60
  247. package/src/components/DropDownMenu.js +31 -27
  248. package/src/components/EmptyStateMain.js +51 -44
  249. package/src/components/EmptyStateWidget.js +47 -38
  250. package/src/components/FontScaleButton.js +29 -25
  251. package/src/components/FontScalePopup.js +67 -56
  252. package/src/components/Forbidden.js +48 -46
  253. package/src/components/FormCard.js +21 -17
  254. package/src/components/FormCardSection.js +284 -233
  255. package/src/components/FormCardSectionOptionLauncher.js +72 -46
  256. package/src/components/FormattedText.js +128 -111
  257. package/src/components/GenericInput.js +168 -136
  258. package/src/components/GenericInputSection.js +209 -161
  259. package/src/components/Header.js +620 -474
  260. package/src/components/Icon.js +119 -0
  261. package/src/components/ImagePopup.js +425 -206
  262. package/src/components/ImageUploadProgress.js +49 -41
  263. package/src/components/ImageUploader.js +23 -13
  264. package/src/components/InlineButton.js +79 -69
  265. package/src/components/Input.js +190 -156
  266. package/src/components/LoadingCircles.js +233 -233
  267. package/src/components/LoadingIndicator.js +87 -76
  268. package/src/components/LoadingStateWidget.js +47 -37
  269. package/src/components/MediaPlayer.js +416 -387
  270. package/src/components/MiddlePopup.js +50 -32
  271. package/src/components/PDFPopup.js +198 -159
  272. package/src/components/PlussChat.js +1271 -986
  273. package/src/components/PlussChatMessage.js +330 -262
  274. package/src/components/PlussChatTime.js +57 -53
  275. package/src/components/Popup.js +138 -116
  276. package/src/components/PopupMenu.js +140 -110
  277. package/src/components/PositionedImage.js +281 -237
  278. package/src/components/ProfilePic.js +122 -113
  279. package/src/components/RadioButton.js +76 -52
  280. package/src/components/Reaction.js +134 -96
  281. package/src/components/Reactions.js +65 -63
  282. package/src/components/SharingTools.js +136 -122
  283. package/src/components/Spinner.js +13 -13
  284. package/src/components/StickyFooter.js +36 -26
  285. package/src/components/Text.js +62 -0
  286. package/src/components/TickIcon.js +20 -20
  287. package/src/components/Toggle.js +74 -73
  288. package/src/components/TouchableSearchBar.js +68 -50
  289. package/src/components/UserListPopup.js +161 -124
  290. package/src/components/UserListing.js +273 -238
  291. package/src/components/VideoPopup.js +110 -96
  292. package/src/components/WarningPopup.js +92 -71
  293. package/src/components/expo-image-picker-multiple/ImageBrowser.js +288 -256
  294. package/src/components/expo-image-picker-multiple/ImageTile.js +108 -84
  295. package/src/components/index.js +59 -57
  296. package/src/components/react-native-expo-image-cropper/ExpoImageManipulator.js +442 -358
  297. package/src/components/react-native-expo-image-cropper/ImageCropOverlay.js +420 -324
  298. package/src/config.js +5 -0
  299. package/src/constants.js +8 -8
  300. package/src/helper.js +469 -438
  301. package/src/index.js +24 -12
  302. package/src/js/images/detectFaces.js +27 -20
  303. package/src/js/images/findLandmarkRange.js +97 -90
  304. package/src/js/images/getScaledOffset.js +80 -75
  305. package/src/js/site/getSiteLevelFromState.js +26 -26
  306. package/src/js/site/isTVEnabled.js +10 -10
  307. package/src/session.js +2 -2
  308. package/src/styles.js +61 -61
  309. package/src/withNavigationFocus.js +28 -0
  310. package/dist/module/components/TextStyle.js +0 -45
  311. package/dist/module/components/TextStyle.js.map +0 -1
  312. package/dist/module/fonts/index.js +0 -2
  313. package/dist/module/fonts/index.js.map +0 -1
  314. package/dist/module/fonts/pluss60-icons.js +0 -5
  315. package/dist/module/fonts/pluss60-icons.js.map +0 -1
  316. package/dist/module/fonts/pluss60-icons.json +0 -1097
  317. package/src/components/TextStyle.js +0 -48
  318. package/src/fonts/index.js +0 -1
  319. package/src/fonts/pluss60-icons.js +0 -6
  320. package/src/fonts/pluss60-icons.json +0 -1097
@@ -1,206 +1,247 @@
1
- import React, { Component } from 'react';
2
- import { View, Image, Animated, StyleSheet } from 'react-native';
3
- import { connect } from 'react-redux';
4
- import moment from 'moment';
5
- import { findLandmarkRange, getScaledOffset, get300, detectFaces } from '../helper';
6
- import { saveImagePosition } from '../actions';
1
+ import React, { Component } from "react";
2
+ import { View, Image, Animated, StyleSheet } from "react-native";
3
+ import { connect } from "react-redux";
4
+ import moment from "moment";
5
+ import {
6
+ findLandmarkRange,
7
+ getScaledOffset,
8
+ get300,
9
+ detectFaces,
10
+ } from "../helper";
11
+ import { saveImagePosition } from "../actions";
7
12
 
8
13
  class AutoOffsetImage extends Component {
9
- constructor(props) {
10
- super(props);
11
-
12
- this.paddingFactor = this.props.paddingFactor || 0.1;
13
-
14
- this.state = {
15
- imageStyle: {
16
- width: this.props.width,
17
- height: this.props.height,
18
- },
19
- blurRadius: new Animated.Value(100),
20
- imageSource: get300(this.props.uri),
21
- disabled: true,
22
- };
23
- }
24
-
25
- componentDidMount() {
26
- this.positionImage();
27
- }
28
-
29
- componentDidUpdate(prevProps) {
30
- if (prevProps.uri !== this.props.uri || prevProps.height !== this.props.height || prevProps.width !== this.props.width) {
31
- this.positionImage();
32
- }
33
- }
34
-
35
- onLoad = event => {
36
- if (event.nativeEvent.source.uri !== this.props.uri) {
37
- this.setState({
38
- imageSource: this.props.uri,
39
- });
40
- }
41
- // if (event.nativeEvent.source.uri === this.props.uri && !this.state.imageLoaded) {
42
- // //unblur
43
- // this.setState({
44
- // imageLoaded: true,
45
- // });
46
- // Animated.sequence([
47
- // Animated.delay(200),
48
- // Animated.timing(this.state.blurRadius, {
49
- // toValue: 0,
50
- // duration: 500,
51
- // useNativeDriver: false,
52
- // }),
53
- // ]).start();
54
- // }
55
- };
56
-
57
- positionImage = async () => {
58
- if (this.state.disabled) {
59
- return;
60
- }
61
- try {
62
- const startTime = moment().valueOf();
63
-
64
- let cachedValues;
65
- // check local cache
66
- if (this.props.imagePositions && this.props.imagePositions[this.props.uri]) {
67
- cachedValues = this.props.imagePositions[this.props.uri];
68
- }
69
- // check remote cache
70
- if (!cachedValues) {
71
- try {
72
- const response = await stringActions.getString('plussSpace', `imagefaces_${encodeURIComponent(this.props.uri)}`);
73
- cachedValues = response.data;
74
- } catch (e) {
75
- console.log('errored from cache');
76
- }
77
- // run face detection locally
78
- if (
79
- !cachedValues ||
80
- !cachedValues.faces ||
81
- !cachedValues.image ||
82
- (_.isEmpty(cachedValues.faces) &&
83
- moment()
84
- .add(-1, 'w')
85
- .valueOf() > moment(cachedValues.timestamp).valueOf())
86
- ) {
87
- cachedValues = await detectFaces(this.props.uri);
88
- }
89
- this.props.saveImagePosition(this.props.uri, cachedValues);
90
- }
91
-
92
- const image = await findLandmarkRange(this.props.uri, {
93
- targetWidth: this.props.width,
94
- targetHeight: this.props.height,
95
- cachedValues,
96
- });
97
- const scaledOffset = getScaledOffset(image.width, image.height, this.props.width, this.props.height);
98
-
99
- const { start: landmarkStart, end: landmarkEnd } = image;
100
- const { bounds: imageBounds, offset, width, height } = scaledOffset;
101
-
102
- if (landmarkStart.y < imageBounds.start.y) {
103
- // move up
104
- offset.y = -Math.max(landmarkStart.y - this.props.height * this.paddingFactor, 0); // move top to 5% above start of landmark
105
- } else if (landmarkEnd.y > imageBounds.end.y) {
106
- // move down
107
- offset.y = -Math.max(landmarkEnd.y + this.props.height * this.paddingFactor - this.props.height, 0); // move bottom to 5% below end of landmark
108
- }
109
-
110
- if (landmarkStart.x < imageBounds.start.x) {
111
- // move right
112
- offset.x = -Math.max(landmarkStart.x - this.props.width * this.paddingFactor, 0); // move left edge to 5% left of start of landmark
113
- } else if (landmarkEnd.x > imageBounds.end.x) {
114
- // move left
115
- offset.x = -Math.max(landmarkEnd.x + this.props.width * this.paddingFactor - this.props.width, 0); // move right edge to 5% left of end of landmark
116
- }
117
-
118
- this.setState({
119
- imageStyle: {
120
- width,
121
- height,
122
- top: offset.y,
123
- left: offset.x,
124
- },
125
- imageSource: this.props.uri,
126
- });
127
-
128
- const endTime = moment().valueOf();
129
- if (endTime - startTime < 500) {
130
- Animated.timing(this.state.blurRadius, {
131
- toValue: 0,
132
- duration: 0,
133
- useNativeDriver: false,
134
- }).start();
135
- }
136
- } catch (e) {
137
- this.setState({
138
- imageSource: this.props.uri,
139
- });
140
- }
141
- };
142
-
143
- render() {
144
- if (this.state.disabled) {
145
- return (
146
- <View
147
- style={[
148
- styles.container,
149
- {
150
- width: this.props.width,
151
- height: this.props.height,
152
- },
153
- this.props.style,
154
- ]}
155
- >
156
- <Image source={{ uri: this.state.imageSource }} style={[styles.image, this.state.imageStyle]} onLoad={this.onLoad} />
157
- {this.props.children}
158
- </View>
159
- );
160
- }
161
- return (
162
- <View
163
- style={[
164
- styles.container,
165
- {
166
- width: this.props.width,
167
- height: this.props.height,
168
- },
169
- this.props.style,
170
- ]}
171
- >
172
- <Animated.Image
173
- blurRadius={this.state.blurRadius}
174
- source={{ uri: this.state.imageSource }}
175
- style={[styles.image, this.state.imageStyle]}
176
- onLoad={this.onLoad}
177
- />
178
- {this.props.children}
179
- </View>
180
- );
181
- }
14
+ constructor(props) {
15
+ super(props);
16
+
17
+ this.paddingFactor = this.props.paddingFactor || 0.1;
18
+
19
+ this.state = {
20
+ imageStyle: {
21
+ width: this.props.width,
22
+ height: this.props.height,
23
+ },
24
+ blurRadius: new Animated.Value(100),
25
+ imageSource: get300(this.props.uri),
26
+ disabled: true,
27
+ };
28
+ }
29
+
30
+ componentDidMount() {
31
+ this.positionImage();
32
+ }
33
+
34
+ componentDidUpdate(prevProps) {
35
+ if (
36
+ prevProps.uri !== this.props.uri ||
37
+ prevProps.height !== this.props.height ||
38
+ prevProps.width !== this.props.width
39
+ ) {
40
+ this.positionImage();
41
+ }
42
+ }
43
+
44
+ onLoad = (event) => {
45
+ if (event.nativeEvent.source.uri !== this.props.uri) {
46
+ this.setState({
47
+ imageSource: this.props.uri,
48
+ });
49
+ }
50
+ // if (event.nativeEvent.source.uri === this.props.uri && !this.state.imageLoaded) {
51
+ // //unblur
52
+ // this.setState({
53
+ // imageLoaded: true,
54
+ // });
55
+ // Animated.sequence([
56
+ // Animated.delay(200),
57
+ // Animated.timing(this.state.blurRadius, {
58
+ // toValue: 0,
59
+ // duration: 500,
60
+ // useNativeDriver: false,
61
+ // }),
62
+ // ]).start();
63
+ // }
64
+ };
65
+
66
+ positionImage = async () => {
67
+ if (this.state.disabled) {
68
+ return;
69
+ }
70
+ try {
71
+ const startTime = moment().valueOf();
72
+
73
+ let cachedValues;
74
+ // check local cache
75
+ if (
76
+ this.props.imagePositions &&
77
+ this.props.imagePositions[this.props.uri]
78
+ ) {
79
+ cachedValues = this.props.imagePositions[this.props.uri];
80
+ }
81
+ // check remote cache
82
+ if (!cachedValues) {
83
+ try {
84
+ const response = await stringActions.getString(
85
+ "plussSpace",
86
+ `imagefaces_${encodeURIComponent(this.props.uri)}`,
87
+ );
88
+ cachedValues = response.data;
89
+ } catch (e) {
90
+ console.log("errored from cache");
91
+ }
92
+ // run face detection locally
93
+ if (
94
+ !cachedValues ||
95
+ !cachedValues.faces ||
96
+ !cachedValues.image ||
97
+ (_.isEmpty(cachedValues.faces) &&
98
+ moment().add(-1, "w").valueOf() >
99
+ moment(cachedValues.timestamp).valueOf())
100
+ ) {
101
+ cachedValues = await detectFaces(this.props.uri);
102
+ }
103
+ this.props.saveImagePosition(this.props.uri, cachedValues);
104
+ }
105
+
106
+ const image = await findLandmarkRange(this.props.uri, {
107
+ targetWidth: this.props.width,
108
+ targetHeight: this.props.height,
109
+ cachedValues,
110
+ });
111
+ const scaledOffset = getScaledOffset(
112
+ image.width,
113
+ image.height,
114
+ this.props.width,
115
+ this.props.height,
116
+ );
117
+
118
+ const { start: landmarkStart, end: landmarkEnd } = image;
119
+ const { bounds: imageBounds, offset, width, height } = scaledOffset;
120
+
121
+ if (landmarkStart.y < imageBounds.start.y) {
122
+ // move up
123
+ offset.y = -Math.max(
124
+ landmarkStart.y - this.props.height * this.paddingFactor,
125
+ 0,
126
+ ); // move top to 5% above start of landmark
127
+ } else if (landmarkEnd.y > imageBounds.end.y) {
128
+ // move down
129
+ offset.y = -Math.max(
130
+ landmarkEnd.y +
131
+ this.props.height * this.paddingFactor -
132
+ this.props.height,
133
+ 0,
134
+ ); // move bottom to 5% below end of landmark
135
+ }
136
+
137
+ if (landmarkStart.x < imageBounds.start.x) {
138
+ // move right
139
+ offset.x = -Math.max(
140
+ landmarkStart.x - this.props.width * this.paddingFactor,
141
+ 0,
142
+ ); // move left edge to 5% left of start of landmark
143
+ } else if (landmarkEnd.x > imageBounds.end.x) {
144
+ // move left
145
+ offset.x = -Math.max(
146
+ landmarkEnd.x +
147
+ this.props.width * this.paddingFactor -
148
+ this.props.width,
149
+ 0,
150
+ ); // move right edge to 5% left of end of landmark
151
+ }
152
+
153
+ this.setState({
154
+ imageStyle: {
155
+ width,
156
+ height,
157
+ top: offset.y,
158
+ left: offset.x,
159
+ },
160
+ imageSource: this.props.uri,
161
+ });
162
+
163
+ const endTime = moment().valueOf();
164
+ if (endTime - startTime < 500) {
165
+ Animated.timing(this.state.blurRadius, {
166
+ toValue: 0,
167
+ duration: 0,
168
+ useNativeDriver: false,
169
+ }).start();
170
+ }
171
+ } catch (e) {
172
+ this.setState({
173
+ imageSource: this.props.uri,
174
+ });
175
+ }
176
+ };
177
+
178
+ render() {
179
+ if (this.state.disabled) {
180
+ return (
181
+ <View
182
+ style={[
183
+ styles.container,
184
+ {
185
+ width: this.props.width,
186
+ height: this.props.height,
187
+ },
188
+ this.props.style,
189
+ ]}
190
+ >
191
+ <Image
192
+ source={{ uri: this.state.imageSource }}
193
+ style={[styles.image, this.state.imageStyle]}
194
+ onLoad={this.onLoad}
195
+ />
196
+ {this.props.children}
197
+ </View>
198
+ );
199
+ }
200
+ return (
201
+ <View
202
+ style={[
203
+ styles.container,
204
+ {
205
+ width: this.props.width,
206
+ height: this.props.height,
207
+ },
208
+ this.props.style,
209
+ ]}
210
+ >
211
+ <Animated.Image
212
+ blurRadius={this.state.blurRadius}
213
+ source={{ uri: this.state.imageSource }}
214
+ style={[styles.image, this.state.imageStyle]}
215
+ onLoad={this.onLoad}
216
+ />
217
+ {this.props.children}
218
+ </View>
219
+ );
220
+ }
182
221
  }
183
222
 
184
223
  const styles = StyleSheet.create({
185
- container: {
186
- overflow: 'hidden',
187
- },
188
- image: {
189
- position: 'absolute',
190
- top: 0,
191
- left: 0,
192
- resizeMode: 'cover',
193
- },
194
- staticImage: {
195
- resizeMode: 'cover',
196
- },
224
+ container: {
225
+ overflow: "hidden",
226
+ },
227
+ image: {
228
+ position: "absolute",
229
+ top: 0,
230
+ left: 0,
231
+ resizeMode: "cover",
232
+ },
233
+ staticImage: {
234
+ resizeMode: "cover",
235
+ },
197
236
  });
198
237
 
199
- const mapStateToProps = state => {
200
- return {
201
- imagePositions: state.media.positions,
202
- };
238
+ const mapStateToProps = (state) => {
239
+ return {
240
+ imagePositions: state.media.positions,
241
+ };
203
242
  };
204
243
 
205
- const autoOffsetImage = connect(mapStateToProps, { saveImagePosition })(AutoOffsetImage);
244
+ const autoOffsetImage = connect(mapStateToProps, { saveImagePosition })(
245
+ AutoOffsetImage,
246
+ );
206
247
  export { autoOffsetImage as AutoOffsetImage };
@@ -1,9 +1,9 @@
1
- import React, { PureComponent } from 'react';
2
- import { View, TouchableOpacity } from 'react-native';
3
- import { connect } from 'react-redux';
4
- import stylez from '../styles';
5
- import { Pl60Icon } from '../fonts';
6
- import { getMainBrandingColourFromState } from '../colours';
1
+ import React, { PureComponent } from "react";
2
+ import { View, TouchableOpacity } from "react-native";
3
+ import { connect } from "react-redux";
4
+ import stylez from "../styles";
5
+ import { FontAwesome } from "./Icon";
6
+ import { getMainBrandingColourFromState } from "../colours";
7
7
 
8
8
  /*
9
9
  Props-
@@ -14,43 +14,59 @@ Props-
14
14
  */
15
15
 
16
16
  class BackButton extends PureComponent {
17
- render() {
18
- const size = this.props.diameter || 32;
19
- const radius = size / 2;
20
- if (this.props.noClick) {
21
- return (
22
- <View
23
- style={[
24
- stylez.backButton,
25
- { backgroundColor: this.props.colourBrandingMain, height: size, width: size, borderRadius: radius },
26
- this.props.color && { backgroundColor: this.props.color },
27
- this.props.style,
28
- ]}
29
- >
30
- <Pl60Icon name={this.props.flipped ? 'chevron_right' : 'chevron_left'} style={[stylez.backButtonIcon, this.props.iconStyle]} />
31
- </View>
32
- );
33
- }
34
- return (
35
- <TouchableOpacity
36
- style={[
37
- stylez.backButton,
38
- { backgroundColor: this.props.colourBrandingMain, height: size, width: size, borderRadius: radius },
39
- this.props.color && { backgroundColor: this.props.color },
40
- this.props.style,
41
- ]}
42
- onPress={this.props.onPress}
43
- >
44
- <Pl60Icon name={this.props.flipped ? 'chevron_right' : 'chevron_left'} style={[stylez.backButtonIcon, this.props.iconStyle]} />
45
- </TouchableOpacity>
46
- );
47
- }
17
+ render() {
18
+ const size = this.props.diameter || 32;
19
+ const radius = size / 2;
20
+ if (this.props.noClick) {
21
+ return (
22
+ <View
23
+ style={[
24
+ stylez.backButton,
25
+ {
26
+ backgroundColor: this.props.colourBrandingMain,
27
+ height: size,
28
+ width: size,
29
+ borderRadius: radius,
30
+ },
31
+ this.props.color && { backgroundColor: this.props.color },
32
+ this.props.style,
33
+ ]}
34
+ >
35
+ <FontAwesome
36
+ name={this.props.flipped ? "chevron-right" : "chevron-left"}
37
+ style={[stylez.backButtonIcon, this.props.iconStyle]}
38
+ />
39
+ </View>
40
+ );
41
+ }
42
+ return (
43
+ <TouchableOpacity
44
+ style={[
45
+ stylez.backButton,
46
+ {
47
+ backgroundColor: this.props.colourBrandingMain,
48
+ height: size,
49
+ width: size,
50
+ borderRadius: radius,
51
+ },
52
+ this.props.color && { backgroundColor: this.props.color },
53
+ this.props.style,
54
+ ]}
55
+ onPress={this.props.onPress}
56
+ >
57
+ <FontAwesome
58
+ name={this.props.flipped ? "chevron-right" : "chevron-left"}
59
+ style={[stylez.backButtonIcon, this.props.iconStyle]}
60
+ />
61
+ </TouchableOpacity>
62
+ );
63
+ }
48
64
  }
49
65
 
50
- const mapStateToProps = state => {
51
- return {
52
- colourBrandingMain: getMainBrandingColourFromState(state),
53
- };
66
+ const mapStateToProps = (state) => {
67
+ return {
68
+ colourBrandingMain: getMainBrandingColourFromState(state),
69
+ };
54
70
  };
55
71
 
56
72
  const backButton = connect(mapStateToProps, {})(BackButton);