@plusscommunities/pluss-core-app 8.0.0 → 8.0.1-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 +15 -15
  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 +43 -37
  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 +50 -50
  76. package/dist/module/components/DocumentUploader.js.map +1 -1
  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 +211 -73
  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 +116 -96
  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 +31 -31
  124. package/dist/module/components/MediaPlayer.js.map +1 -1
  125. package/dist/module/components/MiddlePopup.js +17 -11
  126. package/dist/module/components/MiddlePopup.js.map +1 -1
  127. package/dist/module/components/PDFPopup.js +52 -39
  128. package/dist/module/components/PDFPopup.js.map +1 -1
  129. package/dist/module/components/PlussChat.js +168 -149
  130. package/dist/module/components/PlussChat.js.map +1 -1
  131. package/dist/module/components/PlussChatMessage.js +42 -42
  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 +78 -43
  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 -58
  176. package/dist/module/components/index.js.map +1 -1
  177. package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js +94 -64
  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 +15 -10
  182. package/dist/module/config.js.map +1 -1
  183. package/dist/module/constants.js +3 -4
  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 +11 -10
  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 +6 -6
  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 +71 -68
  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 +96 -86
  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 +370 -309
  242. package/src/components/CommentSection.js +974 -781
  243. package/src/components/ConfirmPopup.js +141 -110
  244. package/src/components/ConfirmationPopup.js +80 -69
  245. package/src/components/DocumentUploader.js +245 -215
  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 -221
  262. package/src/components/ImageUploadProgress.js +49 -41
  263. package/src/components/ImageUploader.js +968 -797
  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 +62 -33
  271. package/src/components/PDFPopup.js +212 -159
  272. package/src/components/PlussChat.js +1224 -1025
  273. package/src/components/PlussChatMessage.js +329 -298
  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 +185 -134
  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 -58
  296. package/src/components/react-native-expo-image-cropper/ExpoImageManipulator.js +444 -359
  297. package/src/components/react-native-expo-image-cropper/ImageCropOverlay.js +420 -324
  298. package/src/config.js +26 -21
  299. package/src/constants.js +8 -10
  300. package/src/helper.js +469 -438
  301. package/src/index.js +24 -12
  302. package/src/js/images/detectFaces.js +28 -21
  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 +32 -32
  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 -7
  320. package/src/fonts/pluss60-icons.json +0 -1097
@@ -1,398 +1,427 @@
1
- import React, { Component } from 'react';
2
- import { View, StyleSheet, Dimensions } from 'react-native';
3
- import YoutubePlayer, { getYoutubeMeta } from 'react-native-youtube-iframe';
4
- import { Vimeo } from 'react-native-vimeo-iframe';
5
- import { WebView } from 'react-native-webview';
6
- import { Video, ResizeMode } from 'expo-av';
7
- import { Spinner } from './Spinner';
8
-
9
- const SCREEN_HEIGHT = Dimensions.get('window').height;
10
- const SCREEN_WIDTH = Dimensions.get('window').width;
1
+ import React, { Component } from "react";
2
+ import { View, StyleSheet, Dimensions } from "react-native";
3
+ import YoutubePlayer, { getYoutubeMeta } from "react-native-youtube-iframe";
4
+ import { Vimeo } from "react-native-vimeo-iframe";
5
+ import { WebView } from "react-native-webview";
6
+ import { Video, ResizeMode } from "expo-av";
7
+ import { Spinner } from "./Spinner";
8
+
9
+ const SCREEN_HEIGHT = Dimensions.get("window").height;
10
+ const SCREEN_WIDTH = Dimensions.get("window").width;
11
11
  const EXPO_VIDEO_PROPS = { rate: 1, isMuted: false, volume: 1 };
12
12
  const RETRY_RECOVER = 30000;
13
13
  const RETRY_LOADING = 10000;
14
14
 
15
15
  class MediaPlayer extends Component {
16
- constructor(props) {
17
- super(props);
18
- this.state = {
19
- deviceOrientation: null,
20
- isLandscape: false,
21
- isUrlLink: true,
22
- isYoutube: false,
23
- isVimeo: false,
24
- forceWebview: false,
25
- heightFactor: 0,
26
- playbackLoaded: false,
27
- playbackBuffering: false,
28
- playbackPlaying: false,
29
- readyToRender: false,
30
- };
31
- this.youtubePlayer = null;
32
- this.videoPlayer = null;
33
- this.checkStreamLoaded = null;
34
- this.retryLoading = false;
35
- this.orientationQueue = [];
36
- }
37
-
38
- componentDidMount = async () => {
39
- await this.setupForPlaying();
40
- };
41
-
42
- componentWillUnmount = () => {
43
- if (this.checkStreamLoaded) clearInterval(this.checkStreamLoaded);
44
- };
45
-
46
- getYoutubeVideoId = url => {
47
- url = url.replace(/(>|<)/gi, '').split(/(vi\/|v=|\/v\/|youtu\.be\/|\/embed\/)/);
48
- if (url[2] !== undefined) {
49
- const ids = url[2].split(/[^0-9a-z_\-]/i);
50
- return ids[0];
51
- } else {
52
- return '';
53
- }
54
- };
55
-
56
- getVimeoId = url => {
57
- const result = url.match(
58
- /(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(?:[^\/]*)\/videos\/|album\/(?:\d+)\/video\/|video\/|)(\d+)(?:[a-zA-Z0-9_\-]+)?/i,
59
- );
60
- return result[1];
61
- };
62
-
63
- setupForPlaying = async () => {
64
- // Extract live stream info
65
- const { source, useVideoPlayer } = this.props;
66
- const isUrlLink = source && source.startsWith('http');
67
- const isYoutube = source && (source.includes('youtube.com/watch?v=') || source.includes('youtu.be/'));
68
- const isVimeo = source && source.includes('vimeo.com/');
69
- let heightFactor = 0;
70
-
71
- if (isYoutube) {
72
- const metadata = await getYoutubeMeta(this.getYoutubeVideoId(source));
73
- heightFactor = metadata.height / metadata.width;
74
- } else if (useVideoPlayer) {
75
- heightFactor = 0;
76
- } else {
77
- heightFactor = 0.565;
78
- }
79
-
80
- this.setState({ isUrlLink, isYoutube, isVimeo, playbackLoaded: isYoutube || isVimeo, heightFactor, readyToRender: true });
81
- };
82
-
83
- getStreamPlaybackUrl = () => {
84
- // return 'https://stream.mux.com/Ym4nKktRpGuZNBBBlzhxpyRwZLpvMlPRchcu01x6Ur600.m3u8';
85
- return `https://stream.mux.com/${this.props.playbackId}.m3u8`;
86
- };
87
-
88
- checkReloadStream = (wait = RETRY_LOADING, force = false) => {
89
- if (!force && this.retryLoading) return;
90
-
91
- console.log(`Check loading in ${wait} milliseconds...`);
92
- this.retryLoading = true;
93
- setTimeout(async () => {
94
- const { playbackLoaded, playbackBuffering } = this.state;
95
- try {
96
- if (playbackLoaded === false || playbackBuffering === true) {
97
- console.log('Reloading started');
98
- await this.videoPlayer.loadAsync(
99
- { uri: this.getStreamPlaybackUrl(), overrideFileExtensionAndroid: 'm3u8' },
100
- EXPO_VIDEO_PROPS,
101
- false,
102
- );
103
- } else {
104
- console.log('Already loaded - not reloading');
105
- }
106
- this.retryLoading = false;
107
- } catch {}
108
- }, wait);
109
- };
110
-
111
- isLandscape = deviceRotation => {
112
- const { beta, gamma } = deviceRotation;
113
- const absGamma = Math.abs(gamma);
114
- const absBeta = Math.abs(beta);
115
- const isGammaNegative = Math.sign(gamma) === -1;
116
-
117
- if (absGamma <= 0.04 && absBeta <= 0.24) {
118
- //Portrait mode, on a flat surface.
119
- return false;
120
- } else if ((absGamma <= 1.0 || absGamma >= 2.3) && absBeta >= 0.5) {
121
- //General Portrait mode, accounting for forward and back tilt on the top of the phone.
122
- return false;
123
- } else {
124
- if (isGammaNegative) {
125
- //Landscape mode with the top of the phone to the left.
126
- return true;
127
- } else {
128
- //Landscape mode with the top of the phone to the right.
129
- return true;
130
- }
131
- }
132
- };
133
-
134
- onMotionChange = async changeEvent => {
135
- const deviceRotation = changeEvent.rotation;
136
- const deviceOrientation = changeEvent.orientation;
137
- const isLandscape = this.isLandscape(deviceRotation);
138
- this.orientationQueue.push(isLandscape);
139
- if (this.orientationQueue.length > 2) this.orientationQueue = this.orientationQueue.slice(-2);
140
- // console.log('onMotionChange - orientationQueue', this.orientationQueue);
141
- if (
142
- isLandscape !== this.state.isLandscape &&
143
- isLandscape === (Math.abs(deviceOrientation) === 90) &&
144
- this.orientationQueue.every(i => i === isLandscape)
145
- ) {
146
- this.setState({ isLandscape }, () => {
147
- // console.log('isLandscape', this.state.isLandscape);
148
- if (this.props.orientationChanged) this.props.orientationChanged(this.state.isLandscape);
149
- });
150
- }
151
- };
152
-
153
- onStreamLoadStart = () => {
154
- console.log('Stream load started');
155
- this.checkStreamLoaded = setInterval(() => {
156
- const { playbackLoaded } = this.state;
157
- if (playbackLoaded === false) {
158
- console.log('Stream loading failed unexpectedly');
159
- this.checkReloadStream(1000, true);
160
- } else {
161
- clearInterval(this.checkStreamLoaded);
162
- }
163
- }, RETRY_RECOVER);
164
- };
165
-
166
- onStreamLoaded = status => {
167
- console.log(`Stream loaded - isLoaded:${status.isLoaded}, isBuffering:${status.isBuffering}, isPlaying:${status.isPlaying}`);
168
- };
169
-
170
- onStreamError = error => {
171
- console.log('Stream error', error);
172
- };
173
-
174
- onStreamStatusUpdate = status => {
175
- this.setState(
176
- {
177
- playbackLoaded: status.isLoaded,
178
- playbackBuffering: status.isBuffering,
179
- playbackPlaying: status.isPlaying,
180
- },
181
- () => {
182
- const { playbackLoaded, playbackBuffering, playbackPlaying, shouldPlay } = this.state;
183
- // console.log(`Status updated - isLoaded:${playbackLoaded}, isBuffering:${playbackBuffering}, isPlaying:${playbackPlaying}`);
184
- if (playbackLoaded === false && playbackBuffering === undefined && playbackPlaying === undefined) {
185
- this.checkReloadStream();
186
- } else if (playbackLoaded === true && playbackBuffering === true) {
187
- this.checkReloadStream(RETRY_RECOVER);
188
- }
189
- },
190
- );
191
- };
192
-
193
- onYoutubeError = e => {
194
- // console.log('onYoutubeError', e);
195
- this.setState({ forceWebview: true });
196
- };
197
-
198
- onYoutubeReady = () => {
199
- // console.log('onYoutubeReady');
200
- };
201
-
202
- onVideoPlayStatusUpdate = status => {
203
- // console.log('onVideoPlayStatusUpdate', status);
204
- };
205
-
206
- onVideoPlayError = error => {
207
- if (error && error.type === 'NonFatal') {
208
- return;
209
- }
210
- // console.log('onVideoPlayError', error);
211
- this.setState({ forceWebview: true });
212
- };
213
-
214
- getYoutubePlayer = (youtubeId, width, height, autoPlay) => (
215
- <YoutubePlayer
216
- ref={ref => (this.youtubePlayer = ref)}
217
- height={height}
218
- width={width}
219
- videoId={youtubeId}
220
- play={autoPlay}
221
- // onChangeState={event => console.log('onChangeState', event)}
222
- onReady={this.onYoutubeReady}
223
- onError={this.onYoutubeError}
224
- // onPlaybackQualityChange={q => console.log('onPlaybackQualityChange', q)}
225
- volume={50}
226
- playbackRate={1}
227
- playerParams={{
228
- cc_lang_pref: 'us',
229
- showClosedCaptions: true,
230
- }}
231
- />
232
- );
233
-
234
- getVimeoPlayer = (vimeoId, width, height, autoPlay) => (
235
- <View style={{ width, height }}>
236
- <Vimeo
237
- style={{ marginLeft: -8, marginRight: -5 }}
238
- videoId={vimeoId}
239
- // onReady={() => console.log('Video is ready')}
240
- // onPlay={() => console.log('Video is playing')}
241
- // onPlayProgress={data => console.log('Video progress data:', data)}
242
- // onFinish={() => console.log('Video is finished')}
243
- loop={false}
244
- autoPlay={autoPlay}
245
- controls={true}
246
- speed={true}
247
- time={'0m0s'}
248
- />
249
- </View>
250
- );
251
-
252
- getWebviewPlayer = (embedUrl, width, height) => (
253
- <WebView
254
- startInLoadingState
255
- javaScriptEnabled
256
- scrollEnabled={false}
257
- automaticallyAdjustContentInsets={false}
258
- mediaPlaybackRequiresUserAction
259
- style={[styles.webView, { width, height }]}
260
- source={{ uri: embedUrl }}
261
- />
262
- );
263
-
264
- getStreamPlayer = (embedUrl, width, height, autoPlay) => (
265
- <Video
266
- ref={vp => {
267
- this.videoPlayer = vp;
268
- }}
269
- source={{ uri: embedUrl }}
270
- {...EXPO_VIDEO_PROPS}
271
- shouldPlay={autoPlay}
272
- resizeMode={ResizeMode.CONTAIN}
273
- useNativeControls
274
- style={{ width, height }}
275
- onLoadStart={this.onStreamLoadStart}
276
- onLoad={this.onStreamLoaded}
277
- onError={this.onStreamError}
278
- onPlaybackStatusUpdate={this.onStreamStatusUpdate}
279
- />
280
- );
281
-
282
- // getVideoPlayer = (embedUrl, width, height, autoPlay) => (
283
- // <VideoPlayer
284
- // videoProps={{
285
- // shouldPlay: autoPlay,
286
- // resizeMode: Video.RESIZE_MODE_CONTAIN,
287
- // source: { uri: embedUrl },
288
- // }}
289
- // showFullscreenButton={false}
290
- // errorCallback={this.onVideoPlayError}
291
- // playbackCallback={this.onVideoPlayStatusUpdate}
292
- // height={height}
293
- // width={width}
294
- // />
295
- // );
296
-
297
- render() {
298
- let width, height;
299
- const { playbackId, source, autoPlay, useVideoPlayer } = this.props;
300
- const {
301
- readyToRender,
302
- isLandscape,
303
- heightFactor,
304
- isUrlLink,
305
- isYoutube,
306
- isVimeo,
307
- forceWebview,
308
- playbackLoaded,
309
- playbackBuffering,
310
- } = this.state;
311
- if (!readyToRender) return null;
312
-
313
- if (isLandscape) {
314
- width = SCREEN_HEIGHT;
315
- height = SCREEN_WIDTH;
316
- } else {
317
- width = SCREEN_WIDTH;
318
- height = heightFactor ? SCREEN_WIDTH * heightFactor : SCREEN_HEIGHT;
319
- }
320
-
321
- let embedUrl, player, showLoading;
322
- if (!forceWebview) {
323
- if (isYoutube) {
324
- const youtubeId = this.getYoutubeVideoId(source);
325
- embedUrl = youtubeId ? `https://www.youtube.com/embed/${youtubeId}` : source;
326
- // console.log('getYoutubePlayer', youtubeId, width, height, autoPlay);
327
- player = this.getYoutubePlayer(youtubeId, width, height, autoPlay);
328
- } else if (isVimeo) {
329
- const vimeoId = this.getVimeoId(source);
330
- embedUrl = source;
331
- // console.log('getVimeoPlayer', vimeoId, width, height, autoPlay);
332
- player = this.getVimeoPlayer(vimeoId, width, height, autoPlay);
333
- } else if (playbackId) {
334
- embedUrl = this.getStreamPlaybackUrl();
335
- // console.log('getStreamPlayer', embedUrl, width, height, autoPlay);
336
- player = this.getStreamPlayer(embedUrl, width, height, autoPlay);
337
- showLoading = true;
338
- } else if (useVideoPlayer) {
339
- embedUrl = source;
340
- // console.log('getVideoPlayer', embedUrl, width, height, autoPlay);
341
- player = this.getStreamPlayer(embedUrl, width, height, autoPlay);
342
- }
343
- }
344
- if (!player && isUrlLink) {
345
- embedUrl = source;
346
- console.log('getWebviewPlayer', embedUrl, width, height);
347
- player = this.getWebviewPlayer(embedUrl, width, height);
348
- }
349
-
350
- // console.log({
351
- // Streaming: embedUrl,
352
- // Landscape: isLandscape,
353
- // Loaded: playbackLoaded,
354
- // Buffering: playbackBuffering,
355
- // LoadingIndicator: showLoading,
356
- // Width: width,
357
- // Height: height,
358
- // HeightFactor: heightFactor,
359
- // isYoutube,
360
- // isVimeo,
361
- // playbackId,
362
- // useVideoPlayer,
363
- // });
364
- return (
365
- <View style={styles.container}>
366
- {player}
367
- {showLoading && (!playbackLoaded || playbackBuffering) && (
368
- <View style={styles.loadingContainer}>
369
- <Spinner color={'#fff'} />
370
- </View>
371
- )}
372
- </View>
373
- );
374
- }
16
+ constructor(props) {
17
+ super(props);
18
+ this.state = {
19
+ deviceOrientation: null,
20
+ isLandscape: false,
21
+ isUrlLink: true,
22
+ isYoutube: false,
23
+ isVimeo: false,
24
+ forceWebview: false,
25
+ heightFactor: 0,
26
+ playbackLoaded: false,
27
+ playbackBuffering: false,
28
+ playbackPlaying: false,
29
+ readyToRender: false,
30
+ };
31
+ this.youtubePlayer = null;
32
+ this.videoPlayer = null;
33
+ this.checkStreamLoaded = null;
34
+ this.retryLoading = false;
35
+ this.orientationQueue = [];
36
+ }
37
+
38
+ componentDidMount = async () => {
39
+ await this.setupForPlaying();
40
+ };
41
+
42
+ componentWillUnmount = () => {
43
+ if (this.checkStreamLoaded) clearInterval(this.checkStreamLoaded);
44
+ };
45
+
46
+ getYoutubeVideoId = (url) => {
47
+ url = url
48
+ .replace(/(>|<)/gi, "")
49
+ .split(/(vi\/|v=|\/v\/|youtu\.be\/|\/embed\/)/);
50
+ if (url[2] !== undefined) {
51
+ const ids = url[2].split(/[^0-9a-z_\-]/i);
52
+ return ids[0];
53
+ } else {
54
+ return "";
55
+ }
56
+ };
57
+
58
+ getVimeoId = (url) => {
59
+ const result = url.match(
60
+ /(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(?:[^\/]*)\/videos\/|album\/(?:\d+)\/video\/|video\/|)(\d+)(?:[a-zA-Z0-9_\-]+)?/i,
61
+ );
62
+ return result[1];
63
+ };
64
+
65
+ setupForPlaying = async () => {
66
+ // Extract live stream info
67
+ const { source, useVideoPlayer } = this.props;
68
+ const isUrlLink = source && source.startsWith("http");
69
+ const isYoutube =
70
+ source &&
71
+ (source.includes("youtube.com/watch?v=") || source.includes("youtu.be/"));
72
+ const isVimeo = source && source.includes("vimeo.com/");
73
+ let heightFactor = 0;
74
+
75
+ if (isYoutube) {
76
+ const metadata = await getYoutubeMeta(this.getYoutubeVideoId(source));
77
+ heightFactor = metadata.height / metadata.width;
78
+ } else if (useVideoPlayer) {
79
+ heightFactor = 0;
80
+ } else {
81
+ heightFactor = 0.565;
82
+ }
83
+
84
+ this.setState({
85
+ isUrlLink,
86
+ isYoutube,
87
+ isVimeo,
88
+ playbackLoaded: isYoutube || isVimeo,
89
+ heightFactor,
90
+ readyToRender: true,
91
+ });
92
+ };
93
+
94
+ getStreamPlaybackUrl = () => {
95
+ // return 'https://stream.mux.com/Ym4nKktRpGuZNBBBlzhxpyRwZLpvMlPRchcu01x6Ur600.m3u8';
96
+ return `https://stream.mux.com/${this.props.playbackId}.m3u8`;
97
+ };
98
+
99
+ checkReloadStream = (wait = RETRY_LOADING, force = false) => {
100
+ if (!force && this.retryLoading) return;
101
+
102
+ console.log(`Check loading in ${wait} milliseconds...`);
103
+ this.retryLoading = true;
104
+ setTimeout(async () => {
105
+ const { playbackLoaded, playbackBuffering } = this.state;
106
+ try {
107
+ if (playbackLoaded === false || playbackBuffering === true) {
108
+ console.log("Reloading started");
109
+ await this.videoPlayer.loadAsync(
110
+ {
111
+ uri: this.getStreamPlaybackUrl(),
112
+ overrideFileExtensionAndroid: "m3u8",
113
+ },
114
+ EXPO_VIDEO_PROPS,
115
+ false,
116
+ );
117
+ } else {
118
+ console.log("Already loaded - not reloading");
119
+ }
120
+ this.retryLoading = false;
121
+ } catch {}
122
+ }, wait);
123
+ };
124
+
125
+ isLandscape = (deviceRotation) => {
126
+ const { beta, gamma } = deviceRotation;
127
+ const absGamma = Math.abs(gamma);
128
+ const absBeta = Math.abs(beta);
129
+ const isGammaNegative = Math.sign(gamma) === -1;
130
+
131
+ if (absGamma <= 0.04 && absBeta <= 0.24) {
132
+ //Portrait mode, on a flat surface.
133
+ return false;
134
+ } else if ((absGamma <= 1.0 || absGamma >= 2.3) && absBeta >= 0.5) {
135
+ //General Portrait mode, accounting for forward and back tilt on the top of the phone.
136
+ return false;
137
+ } else {
138
+ if (isGammaNegative) {
139
+ //Landscape mode with the top of the phone to the left.
140
+ return true;
141
+ } else {
142
+ //Landscape mode with the top of the phone to the right.
143
+ return true;
144
+ }
145
+ }
146
+ };
147
+
148
+ onMotionChange = async (changeEvent) => {
149
+ const deviceRotation = changeEvent.rotation;
150
+ const deviceOrientation = changeEvent.orientation;
151
+ const isLandscape = this.isLandscape(deviceRotation);
152
+ this.orientationQueue.push(isLandscape);
153
+ if (this.orientationQueue.length > 2)
154
+ this.orientationQueue = this.orientationQueue.slice(-2);
155
+ // console.log('onMotionChange - orientationQueue', this.orientationQueue);
156
+ if (
157
+ isLandscape !== this.state.isLandscape &&
158
+ isLandscape === (Math.abs(deviceOrientation) === 90) &&
159
+ this.orientationQueue.every((i) => i === isLandscape)
160
+ ) {
161
+ this.setState({ isLandscape }, () => {
162
+ // console.log('isLandscape', this.state.isLandscape);
163
+ if (this.props.orientationChanged)
164
+ this.props.orientationChanged(this.state.isLandscape);
165
+ });
166
+ }
167
+ };
168
+
169
+ onStreamLoadStart = () => {
170
+ console.log("Stream load started");
171
+ this.checkStreamLoaded = setInterval(() => {
172
+ const { playbackLoaded } = this.state;
173
+ if (playbackLoaded === false) {
174
+ console.log("Stream loading failed unexpectedly");
175
+ this.checkReloadStream(1000, true);
176
+ } else {
177
+ clearInterval(this.checkStreamLoaded);
178
+ }
179
+ }, RETRY_RECOVER);
180
+ };
181
+
182
+ onStreamLoaded = (status) => {
183
+ console.log(
184
+ `Stream loaded - isLoaded:${status.isLoaded}, isBuffering:${status.isBuffering}, isPlaying:${status.isPlaying}`,
185
+ );
186
+ };
187
+
188
+ onStreamError = (error) => {
189
+ console.log("Stream error", error);
190
+ };
191
+
192
+ onStreamStatusUpdate = (status) => {
193
+ this.setState(
194
+ {
195
+ playbackLoaded: status.isLoaded,
196
+ playbackBuffering: status.isBuffering,
197
+ playbackPlaying: status.isPlaying,
198
+ },
199
+ () => {
200
+ const {
201
+ playbackLoaded,
202
+ playbackBuffering,
203
+ playbackPlaying,
204
+ shouldPlay,
205
+ } = this.state;
206
+ // console.log(`Status updated - isLoaded:${playbackLoaded}, isBuffering:${playbackBuffering}, isPlaying:${playbackPlaying}`);
207
+ if (
208
+ playbackLoaded === false &&
209
+ playbackBuffering === undefined &&
210
+ playbackPlaying === undefined
211
+ ) {
212
+ this.checkReloadStream();
213
+ } else if (playbackLoaded === true && playbackBuffering === true) {
214
+ this.checkReloadStream(RETRY_RECOVER);
215
+ }
216
+ },
217
+ );
218
+ };
219
+
220
+ onYoutubeError = (e) => {
221
+ // console.log('onYoutubeError', e);
222
+ this.setState({ forceWebview: true });
223
+ };
224
+
225
+ onYoutubeReady = () => {
226
+ // console.log('onYoutubeReady');
227
+ };
228
+
229
+ onVideoPlayStatusUpdate = (status) => {
230
+ // console.log('onVideoPlayStatusUpdate', status);
231
+ };
232
+
233
+ onVideoPlayError = (error) => {
234
+ if (error && error.type === "NonFatal") {
235
+ return;
236
+ }
237
+ // console.log('onVideoPlayError', error);
238
+ this.setState({ forceWebview: true });
239
+ };
240
+
241
+ getYoutubePlayer = (youtubeId, width, height, autoPlay) => (
242
+ <YoutubePlayer
243
+ ref={(ref) => (this.youtubePlayer = ref)}
244
+ height={height}
245
+ width={width}
246
+ videoId={youtubeId}
247
+ play={autoPlay}
248
+ // onChangeState={event => console.log('onChangeState', event)}
249
+ onReady={this.onYoutubeReady}
250
+ onError={this.onYoutubeError}
251
+ // onPlaybackQualityChange={q => console.log('onPlaybackQualityChange', q)}
252
+ volume={50}
253
+ playbackRate={1}
254
+ playerParams={{
255
+ cc_lang_pref: "us",
256
+ showClosedCaptions: true,
257
+ }}
258
+ />
259
+ );
260
+
261
+ getVimeoPlayer = (vimeoId, width, height, autoPlay) => (
262
+ <View style={{ width, height }}>
263
+ <Vimeo
264
+ style={{ marginLeft: -8, marginRight: -5 }}
265
+ videoId={vimeoId}
266
+ // onReady={() => console.log('Video is ready')}
267
+ // onPlay={() => console.log('Video is playing')}
268
+ // onPlayProgress={data => console.log('Video progress data:', data)}
269
+ // onFinish={() => console.log('Video is finished')}
270
+ loop={false}
271
+ autoPlay={autoPlay}
272
+ controls={true}
273
+ speed={true}
274
+ time={"0m0s"}
275
+ />
276
+ </View>
277
+ );
278
+
279
+ getWebviewPlayer = (embedUrl, width, height) => (
280
+ <WebView
281
+ startInLoadingState
282
+ javaScriptEnabled
283
+ scrollEnabled={false}
284
+ automaticallyAdjustContentInsets={false}
285
+ mediaPlaybackRequiresUserAction
286
+ style={[styles.webView, { width, height }]}
287
+ source={{ uri: embedUrl }}
288
+ />
289
+ );
290
+
291
+ getStreamPlayer = (embedUrl, width, height, autoPlay) => (
292
+ <Video
293
+ ref={(vp) => {
294
+ this.videoPlayer = vp;
295
+ }}
296
+ source={{ uri: embedUrl }}
297
+ {...EXPO_VIDEO_PROPS}
298
+ shouldPlay={autoPlay}
299
+ resizeMode={ResizeMode.CONTAIN}
300
+ useNativeControls
301
+ style={{ width, height }}
302
+ onLoadStart={this.onStreamLoadStart}
303
+ onLoad={this.onStreamLoaded}
304
+ onError={this.onStreamError}
305
+ onPlaybackStatusUpdate={this.onStreamStatusUpdate}
306
+ />
307
+ );
308
+
309
+ // getVideoPlayer = (embedUrl, width, height, autoPlay) => (
310
+ // <VideoPlayer
311
+ // videoProps={{
312
+ // shouldPlay: autoPlay,
313
+ // resizeMode: Video.RESIZE_MODE_CONTAIN,
314
+ // source: { uri: embedUrl },
315
+ // }}
316
+ // showFullscreenButton={false}
317
+ // errorCallback={this.onVideoPlayError}
318
+ // playbackCallback={this.onVideoPlayStatusUpdate}
319
+ // height={height}
320
+ // width={width}
321
+ // />
322
+ // );
323
+
324
+ render() {
325
+ let width, height;
326
+ const { playbackId, source, autoPlay, useVideoPlayer } = this.props;
327
+ const {
328
+ readyToRender,
329
+ isLandscape,
330
+ heightFactor,
331
+ isUrlLink,
332
+ isYoutube,
333
+ isVimeo,
334
+ forceWebview,
335
+ playbackLoaded,
336
+ playbackBuffering,
337
+ } = this.state;
338
+ if (!readyToRender) return null;
339
+
340
+ if (isLandscape) {
341
+ width = SCREEN_HEIGHT;
342
+ height = SCREEN_WIDTH;
343
+ } else {
344
+ width = SCREEN_WIDTH;
345
+ height = heightFactor ? SCREEN_WIDTH * heightFactor : SCREEN_HEIGHT;
346
+ }
347
+
348
+ let embedUrl, player, showLoading;
349
+ if (!forceWebview) {
350
+ if (isYoutube) {
351
+ const youtubeId = this.getYoutubeVideoId(source);
352
+ embedUrl = youtubeId
353
+ ? `https://www.youtube.com/embed/${youtubeId}`
354
+ : source;
355
+ // console.log('getYoutubePlayer', youtubeId, width, height, autoPlay);
356
+ player = this.getYoutubePlayer(youtubeId, width, height, autoPlay);
357
+ } else if (isVimeo) {
358
+ const vimeoId = this.getVimeoId(source);
359
+ embedUrl = source;
360
+ // console.log('getVimeoPlayer', vimeoId, width, height, autoPlay);
361
+ player = this.getVimeoPlayer(vimeoId, width, height, autoPlay);
362
+ } else if (playbackId) {
363
+ embedUrl = this.getStreamPlaybackUrl();
364
+ // console.log('getStreamPlayer', embedUrl, width, height, autoPlay);
365
+ player = this.getStreamPlayer(embedUrl, width, height, autoPlay);
366
+ showLoading = true;
367
+ } else if (useVideoPlayer) {
368
+ embedUrl = source;
369
+ // console.log('getVideoPlayer', embedUrl, width, height, autoPlay);
370
+ player = this.getStreamPlayer(embedUrl, width, height, autoPlay);
371
+ }
372
+ }
373
+ if (!player && isUrlLink) {
374
+ embedUrl = source;
375
+ console.log("getWebviewPlayer", embedUrl, width, height);
376
+ player = this.getWebviewPlayer(embedUrl, width, height);
377
+ }
378
+
379
+ // console.log({
380
+ // Streaming: embedUrl,
381
+ // Landscape: isLandscape,
382
+ // Loaded: playbackLoaded,
383
+ // Buffering: playbackBuffering,
384
+ // LoadingIndicator: showLoading,
385
+ // Width: width,
386
+ // Height: height,
387
+ // HeightFactor: heightFactor,
388
+ // isYoutube,
389
+ // isVimeo,
390
+ // playbackId,
391
+ // useVideoPlayer,
392
+ // });
393
+ return (
394
+ <View style={styles.container}>
395
+ {player}
396
+ {showLoading && (!playbackLoaded || playbackBuffering) && (
397
+ <View style={styles.loadingContainer}>
398
+ <Spinner color={"#fff"} />
399
+ </View>
400
+ )}
401
+ </View>
402
+ );
403
+ }
375
404
  }
376
405
 
377
406
  const styles = StyleSheet.create({
378
- container: {
379
- flex: 1,
380
- backgroundColor: '#000',
381
- alignItems: 'center',
382
- justifyContent: 'center',
383
- },
384
- webView: {
385
- flex: 1,
386
- },
387
- loadingContainer: {
388
- position: 'absolute',
389
- top: 50,
390
- left: 0,
391
- right: 0,
392
- bottom: 50,
393
- justifyContent: 'center',
394
- alignItems: 'center',
395
- },
407
+ container: {
408
+ flex: 1,
409
+ backgroundColor: "#000",
410
+ alignItems: "center",
411
+ justifyContent: "center",
412
+ },
413
+ webView: {
414
+ flex: 1,
415
+ },
416
+ loadingContainer: {
417
+ position: "absolute",
418
+ top: 50,
419
+ left: 0,
420
+ right: 0,
421
+ bottom: 50,
422
+ justifyContent: "center",
423
+ alignItems: "center",
424
+ },
396
425
  });
397
426
 
398
427
  export default MediaPlayer;