@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,214 +1,248 @@
1
- import React, { Component } from 'react';
2
- import { Platform, Linking, StyleSheet, Text, View, TouchableOpacity, ScrollView } from 'react-native';
3
- import { connect } from 'react-redux';
4
- import _ from 'lodash';
5
- import * as Calendar from 'expo-calendar';
6
- import { TEXT_DARK, getMainBrandingColourFromState } from '../colours';
7
- import { InlineButton } from './InlineButton';
8
- import { Popup } from './Popup';
9
- import { MiddlePopup } from './MiddlePopup';
10
-
11
- const DEFAULT_TITLE = 'Add to Calendar';
12
- const ERROR_EVENT_ADD = 'There was a problem adding a calendar event.';
1
+ import React, { Component } from "react";
2
+ import { Text } from "@plusscommunities/pluss-core-app/components";
3
+ import {
4
+ Platform,
5
+ Linking,
6
+ StyleSheet,
7
+ View,
8
+ TouchableOpacity,
9
+ ScrollView,
10
+ } from "react-native";
11
+ import { connect } from "react-redux";
12
+ import _ from "lodash";
13
+ import * as Calendar from "expo-calendar";
14
+ import { TEXT_DARK, getMainBrandingColourFromState } from "../colours";
15
+ import { InlineButton } from "./InlineButton";
16
+ import { Popup } from "./Popup";
17
+ import { MiddlePopup } from "./MiddlePopup";
18
+
19
+ const DEFAULT_TITLE = "Add to Calendar";
20
+ const ERROR_EVENT_ADD = "There was a problem adding a calendar event.";
13
21
 
14
22
  // Required: eventToAdd
15
23
  // Documentation: https://docs.expo.dev/versions/latest/sdk/calendar/#event
16
24
  class AddToCalendarButton extends Component {
17
- constructor(props) {
18
- super(props);
19
-
20
- this.state = {
21
- showPermissionWarning: false,
22
- calendars: null,
23
- message: null,
24
- };
25
- }
26
-
27
- showWarningPopup = () => {
28
- if (Platform.OS !== 'ios') return;
29
- this.setState({ showPermissionWarning: true });
30
- };
31
-
32
- closeWarningPopup = () => {
33
- this.setState({ showPermissionWarning: false });
34
- };
35
-
36
- goToPermissionSettings = () => {
37
- Linking.openURL('app-settings:');
38
- this.setState({ showPermissionWarning: false });
39
- };
40
-
41
- onAdd = async () => {
42
- if (!this.props.eventToAdd) {
43
- this.setState({ message: 'There is no event to add' });
44
- return;
45
- }
46
-
47
- const { status } = await Calendar.requestCalendarPermissionsAsync();
48
- if (status !== 'granted') {
49
- this.showWarningPopup();
50
- } else {
51
- let calendars = await Calendar.getCalendarsAsync(Calendar.EntityTypes.EVENT);
52
- // console.log('all calendars', calendars);
53
- if (calendars && calendars.length > 0) {
54
- calendars = calendars
55
- .filter(c => c.allowsModifications)
56
- .map(c => {
57
- return {
58
- id: c.id,
59
- title: c.title,
60
- source: c.source.name,
61
- color: c.color,
62
- type: c.type,
63
- };
64
- });
65
- calendars = _.orderBy(calendars, ['source', 'title']);
66
- // console.log('sorted calendars', calendars);
67
- }
68
- this.setState({ calendars });
69
- }
70
- };
71
-
72
- onCloseCalendars = () => {
73
- this.setState({ calendars: null });
74
- };
75
-
76
- onSelectCalendar = async calendar => {
77
- try {
78
- const { eventToAdd } = this.props;
79
- if (!eventToAdd) return;
80
-
81
- const eventId = await Calendar.createEventAsync(calendar.id, eventToAdd);
82
-
83
- this.setState({
84
- calendars: null,
85
- message: eventId ? `${eventToAdd.title} was added to ${calendar.title} successfully.` : ERROR_EVENT_ADD,
86
- });
87
- } catch (error) {
88
- console.log('onSelectCalendar', error);
89
- this.setState({ calendars: null, message: ERROR_EVENT_ADD });
90
- }
91
- };
92
-
93
- onCloseMessage = () => {
94
- this.setState({ message: null });
95
- };
96
-
97
- renderPermission() {
98
- return (
99
- <Popup
100
- title="Permissions missing"
101
- text="You must grant access to the Calendars. Tap Go to settings to change your permission settings."
102
- options={[
103
- {
104
- text: 'Go to settings',
105
- action: this.goToPermissionSettings,
106
- bold: true,
107
- },
108
- {
109
- text: 'Ignore',
110
- action: this.closeWarningPopup,
111
- },
112
- ]}
113
- />
114
- );
115
- }
116
-
117
- renderCalendars(calendars) {
118
- return (
119
- <MiddlePopup style={[styles.calendarsPopup, { height: calendars.length * 60 + 120 }]} onClose={this.onCloseCalendars}>
120
- <Text style={styles.calendarPopupTitle}>Select Calendar</Text>
121
- <View style={styles.calendarPopupContainer}>
122
- <ScrollView style={{ flex: 1 }} showsVerticalScrollIndicator={false}>
123
- {calendars.map(cal => {
124
- return (
125
- <TouchableOpacity key={cal.id} onPress={() => this.onSelectCalendar(cal)}>
126
- <View style={[styles.calendarContainer, { backgroundColor: cal.color }]}>
127
- <Text style={styles.calendarText}>{`${cal.source}${cal.source === cal.title ? '' : `\n${cal.title}`}`}</Text>
128
- </View>
129
- </TouchableOpacity>
130
- );
131
- })}
132
- </ScrollView>
133
- <TouchableOpacity key={'cancel'} onPress={this.onCloseCalendars}>
134
- <View style={[styles.calendarContainer, { marginTop: 20, backgroundColor: this.props.colourBrandingMain }]}>
135
- <Text style={styles.calendarText}>Cancel</Text>
136
- </View>
137
- </TouchableOpacity>
138
- </View>
139
- </MiddlePopup>
140
- );
141
- }
142
-
143
- renderMessage(message) {
144
- return (
145
- <Popup
146
- title="Add to Calendar"
147
- text={message}
148
- options={[
149
- {
150
- text: 'Ok',
151
- action: this.onCloseMessage,
152
- },
153
- ]}
154
- />
155
- );
156
- }
157
-
158
- render() {
159
- const { showPermissionWarning, calendars, message } = this.state;
160
-
161
- if (showPermissionWarning) return this.renderPermission();
162
- if (calendars && calendars.length > 0) return this.renderCalendars(calendars);
163
- if (message) return this.renderMessage(message);
164
-
165
- return (
166
- <InlineButton {...this.props} onPress={this.onAdd}>
167
- {this.props.children || DEFAULT_TITLE}
168
- </InlineButton>
169
- );
170
- }
25
+ constructor(props) {
26
+ super(props);
27
+
28
+ this.state = {
29
+ showPermissionWarning: false,
30
+ calendars: null,
31
+ message: null,
32
+ };
33
+ }
34
+
35
+ showWarningPopup = () => {
36
+ if (Platform.OS !== "ios") return;
37
+ this.setState({ showPermissionWarning: true });
38
+ };
39
+
40
+ closeWarningPopup = () => {
41
+ this.setState({ showPermissionWarning: false });
42
+ };
43
+
44
+ goToPermissionSettings = () => {
45
+ Linking.openURL("app-settings:");
46
+ this.setState({ showPermissionWarning: false });
47
+ };
48
+
49
+ onAdd = async () => {
50
+ if (!this.props.eventToAdd) {
51
+ this.setState({ message: "There is no event to add" });
52
+ return;
53
+ }
54
+
55
+ const { status } = await Calendar.requestCalendarPermissionsAsync();
56
+ if (status !== "granted") {
57
+ this.showWarningPopup();
58
+ } else {
59
+ let calendars = await Calendar.getCalendarsAsync(
60
+ Calendar.EntityTypes.EVENT,
61
+ );
62
+ // console.log('all calendars', calendars);
63
+ if (calendars && calendars.length > 0) {
64
+ calendars = calendars
65
+ .filter((c) => c.allowsModifications)
66
+ .map((c) => {
67
+ return {
68
+ id: c.id,
69
+ title: c.title,
70
+ source: c.source.name,
71
+ color: c.color,
72
+ type: c.type,
73
+ };
74
+ });
75
+ calendars = _.orderBy(calendars, ["source", "title"]);
76
+ // console.log('sorted calendars', calendars);
77
+ }
78
+ this.setState({ calendars });
79
+ }
80
+ };
81
+
82
+ onCloseCalendars = () => {
83
+ this.setState({ calendars: null });
84
+ };
85
+
86
+ onSelectCalendar = async (calendar) => {
87
+ try {
88
+ const { eventToAdd } = this.props;
89
+ if (!eventToAdd) return;
90
+
91
+ const eventId = await Calendar.createEventAsync(calendar.id, eventToAdd);
92
+
93
+ this.setState({
94
+ calendars: null,
95
+ message: eventId
96
+ ? `${eventToAdd.title} was added to ${calendar.title} successfully.`
97
+ : ERROR_EVENT_ADD,
98
+ });
99
+ } catch (error) {
100
+ console.log("onSelectCalendar", error);
101
+ this.setState({ calendars: null, message: ERROR_EVENT_ADD });
102
+ }
103
+ };
104
+
105
+ onCloseMessage = () => {
106
+ this.setState({ message: null });
107
+ };
108
+
109
+ renderPermission() {
110
+ return (
111
+ <Popup
112
+ title="Permissions missing"
113
+ text="You must grant access to the Calendars. Tap Go to settings to change your permission settings."
114
+ options={[
115
+ {
116
+ text: "Go to settings",
117
+ action: this.goToPermissionSettings,
118
+ bold: true,
119
+ },
120
+ {
121
+ text: "Ignore",
122
+ action: this.closeWarningPopup,
123
+ },
124
+ ]}
125
+ />
126
+ );
127
+ }
128
+
129
+ renderCalendars(calendars) {
130
+ return (
131
+ <MiddlePopup
132
+ style={[styles.calendarsPopup, { height: calendars.length * 60 + 120 }]}
133
+ onClose={this.onCloseCalendars}
134
+ >
135
+ <Text style={styles.calendarPopupTitle}>Select Calendar</Text>
136
+ <View style={styles.calendarPopupContainer}>
137
+ <ScrollView style={{ flex: 1 }} showsVerticalScrollIndicator={false}>
138
+ {calendars.map((cal) => {
139
+ return (
140
+ <TouchableOpacity
141
+ key={cal.id}
142
+ onPress={() => this.onSelectCalendar(cal)}
143
+ >
144
+ <View
145
+ style={[
146
+ styles.calendarContainer,
147
+ { backgroundColor: cal.color },
148
+ ]}
149
+ >
150
+ <Text
151
+ style={styles.calendarText}
152
+ >{`${cal.source}${cal.source === cal.title ? "" : `\n${cal.title}`}`}</Text>
153
+ </View>
154
+ </TouchableOpacity>
155
+ );
156
+ })}
157
+ </ScrollView>
158
+ <TouchableOpacity key={"cancel"} onPress={this.onCloseCalendars}>
159
+ <View
160
+ style={[
161
+ styles.calendarContainer,
162
+ {
163
+ marginTop: 20,
164
+ backgroundColor: this.props.colourBrandingMain,
165
+ },
166
+ ]}
167
+ >
168
+ <Text style={styles.calendarText}>Cancel</Text>
169
+ </View>
170
+ </TouchableOpacity>
171
+ </View>
172
+ </MiddlePopup>
173
+ );
174
+ }
175
+
176
+ renderMessage(message) {
177
+ return (
178
+ <Popup
179
+ title="Add to Calendar"
180
+ text={message}
181
+ options={[
182
+ {
183
+ text: "Ok",
184
+ action: this.onCloseMessage,
185
+ },
186
+ ]}
187
+ />
188
+ );
189
+ }
190
+
191
+ render() {
192
+ const { showPermissionWarning, calendars, message } = this.state;
193
+
194
+ if (showPermissionWarning) return this.renderPermission();
195
+ if (calendars && calendars.length > 0)
196
+ return this.renderCalendars(calendars);
197
+ if (message) return this.renderMessage(message);
198
+
199
+ return (
200
+ <InlineButton {...this.props} onPress={this.onAdd}>
201
+ {this.props.children || DEFAULT_TITLE}
202
+ </InlineButton>
203
+ );
204
+ }
171
205
  }
172
206
 
173
207
  const styles = StyleSheet.create({
174
- calendarsPopup: {
175
- width: 250,
176
- maxHeight: 400,
177
- padding: 16,
178
- borderRadius: 12,
179
- },
180
- calendarPopupTitle: {
181
- fontFamily: 'sf-bold',
182
- color: TEXT_DARK,
183
- fontSize: 18,
184
- marginBottom: 16,
185
- },
186
- calendarPopupContainer: {
187
- flex: 1,
188
- justifyContent: 'space-between',
189
- },
190
- calendarContainer: {
191
- flexDirection: 'row',
192
- alignItems: 'center',
193
- width: 200,
194
- height: 40,
195
- paddingHorizontal: 8,
196
- borderRadius: 4,
197
- marginBottom: 10,
198
- },
199
- calendarText: {
200
- color: '#fff',
201
- textAlign: 'center',
202
- fontFamily: 'sf-semibold',
203
- fontSize: 13,
204
- flex: 1,
205
- },
208
+ calendarsPopup: {
209
+ width: 250,
210
+ maxHeight: 400,
211
+ padding: 16,
212
+ borderRadius: 12,
213
+ },
214
+ calendarPopupTitle: {
215
+ fontFamily: "sf-bold",
216
+ color: TEXT_DARK,
217
+ fontSize: 18,
218
+ marginBottom: 16,
219
+ },
220
+ calendarPopupContainer: {
221
+ flex: 1,
222
+ justifyContent: "space-between",
223
+ },
224
+ calendarContainer: {
225
+ flexDirection: "row",
226
+ alignItems: "center",
227
+ width: 200,
228
+ height: 40,
229
+ paddingHorizontal: 8,
230
+ borderRadius: 4,
231
+ marginBottom: 10,
232
+ },
233
+ calendarText: {
234
+ color: "#fff",
235
+ textAlign: "center",
236
+ fontFamily: "sf-semibold",
237
+ fontSize: 13,
238
+ flex: 1,
239
+ },
206
240
  });
207
241
 
208
- const mapStateToProps = state => {
209
- return {
210
- colourBrandingMain: getMainBrandingColourFromState(state),
211
- };
242
+ const mapStateToProps = (state) => {
243
+ return {
244
+ colourBrandingMain: getMainBrandingColourFromState(state),
245
+ };
212
246
  };
213
247
 
214
248
  const button = connect(mapStateToProps, {})(AddToCalendarButton);
@@ -1,46 +1,69 @@
1
- import React, { PureComponent } from 'react';
2
- import { TouchableOpacity, View, Text } from 'react-native';
3
- import { connect } from 'react-redux';
4
- import { Icon } from 'react-native-elements';
5
- import { getLightBrandingColourFromState, getMainBrandingColourFromState } from '../colours';
1
+ import React, { PureComponent } from "react";
2
+ import { TouchableOpacity, View } from "react-native";
3
+ import { Text } from "./Text";
4
+ import { connect } from "react-redux";
5
+ import { Icon } from "@rneui/themed";
6
+ import {
7
+ getLightBrandingColourFromState,
8
+ getMainBrandingColourFromState,
9
+ } from "../colours";
6
10
 
7
11
  class Attachment extends PureComponent {
8
- render() {
9
- return (
10
- <TouchableOpacity key={this.props.key} onPress={this.props.onPress}>
11
- <View style={[styles.pdfAttachment, { backgroundColor: this.props.colourBrandingLight }]}>
12
- <Icon name="paperclip" type="font-awesome" iconStyle={[styles.pdfAttachmentIcon, { color: this.props.colourBrandingMain }]} />
13
- <Text style={[styles.pdfAttachmentText, { color: this.props.colourBrandingMain }]}>{this.props.title}</Text>
14
- </View>
15
- </TouchableOpacity>
16
- );
17
- }
12
+ render() {
13
+ return (
14
+ <TouchableOpacity key={this.props.key} onPress={this.props.onPress}>
15
+ <View
16
+ style={[
17
+ styles.pdfAttachment,
18
+ { backgroundColor: this.props.colourBrandingLight },
19
+ ]}
20
+ >
21
+ <Icon
22
+ name="paperclip"
23
+ type="font-awesome"
24
+ iconStyle={[
25
+ styles.pdfAttachmentIcon,
26
+ { color: this.props.colourBrandingMain },
27
+ ]}
28
+ />
29
+ <Text
30
+ style={[
31
+ styles.pdfAttachmentText,
32
+ { color: this.props.colourBrandingMain },
33
+ ]}
34
+ >
35
+ {this.props.title}
36
+ </Text>
37
+ </View>
38
+ </TouchableOpacity>
39
+ );
40
+ }
18
41
  }
19
42
 
20
43
  const styles = {
21
- pdfAttachment: {
22
- padding: 4,
23
- flexDirection: 'row',
24
- borderRadius: 2,
25
- marginTop: 8,
26
- alignItems: 'center',
27
- alignSelf: 'flex-start',
28
- },
29
- pdfAttachmentIcon: {
30
- fontSize: 16,
31
- marginRight: 4,
32
- },
33
- pdfAttachmentText: {
34
- fontFamily: 'sf-semibold',
35
- fontSize: 13,
36
- },
44
+ pdfAttachment: {
45
+ padding: 4,
46
+ flexDirection: "row",
47
+ borderRadius: 2,
48
+ marginTop: 8,
49
+ alignItems: "center",
50
+ alignSelf: "flex-start",
51
+ },
52
+ pdfAttachmentIcon: {
53
+ fontSize: 16,
54
+ marginRight: 4,
55
+ },
56
+ pdfAttachmentText: {
57
+ fontFamily: "sf-semibold",
58
+ fontSize: 13,
59
+ },
37
60
  };
38
61
 
39
- const mapStateToProps = state => {
40
- return {
41
- colourBrandingMain: getMainBrandingColourFromState(state),
42
- colourBrandingLight: getLightBrandingColourFromState(state),
43
- };
62
+ const mapStateToProps = (state) => {
63
+ return {
64
+ colourBrandingMain: getMainBrandingColourFromState(state),
65
+ colourBrandingLight: getLightBrandingColourFromState(state),
66
+ };
44
67
  };
45
68
 
46
69
  const attachment = connect(mapStateToProps, {})(Attachment);