@plusscommunities/pluss-core-app 6.0.3 → 6.0.4
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.
|
@@ -3,14 +3,11 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
3
3
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
4
4
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
5
5
|
import React, { Component } from 'react';
|
|
6
|
-
import {
|
|
7
|
-
import * as ScreenOrientation from 'expo-screen-orientation';
|
|
8
|
-
import { DeviceMotion } from 'expo-sensors';
|
|
6
|
+
import { View, StyleSheet, Dimensions } from 'react-native';
|
|
9
7
|
import YoutubePlayer, { getYoutubeMeta } from 'react-native-youtube-iframe';
|
|
10
8
|
import { Vimeo } from 'react-native-vimeo-iframe';
|
|
11
9
|
import { WebView } from 'react-native-webview';
|
|
12
10
|
import { Video } from 'expo-av';
|
|
13
|
-
// import VideoPlayer from 'expo-video-player';
|
|
14
11
|
import { Spinner } from './Spinner';
|
|
15
12
|
const SCREEN_HEIGHT = Dimensions.get('window').height;
|
|
16
13
|
const SCREEN_WIDTH = Dimensions.get('window').width;
|
|
@@ -26,18 +23,9 @@ class MediaPlayer extends Component {
|
|
|
26
23
|
super(props);
|
|
27
24
|
_defineProperty(this, "componentDidMount", async () => {
|
|
28
25
|
await this.setupForPlaying();
|
|
29
|
-
ScreenOrientation.lockAsync(Platform.OS === 'ios' ? ScreenOrientation.OrientationLock.DEFAULT : ScreenOrientation.OrientationLock.ALL);
|
|
30
|
-
const motionAvailalble = await DeviceMotion.isAvailableAsync();
|
|
31
|
-
// console.log('motionAvailalble', motionAvailalble);
|
|
32
|
-
if (motionAvailalble) {
|
|
33
|
-
DeviceMotion.setUpdateInterval(500);
|
|
34
|
-
DeviceMotion.addListener(this.onMotionChange);
|
|
35
|
-
}
|
|
36
26
|
});
|
|
37
27
|
_defineProperty(this, "componentWillUnmount", () => {
|
|
38
28
|
if (this.checkStreamLoaded) clearInterval(this.checkStreamLoaded);
|
|
39
|
-
DeviceMotion.removeAllListeners();
|
|
40
|
-
ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT_UP);
|
|
41
29
|
});
|
|
42
30
|
_defineProperty(this, "getYoutubeVideoId", url => {
|
|
43
31
|
url = url.replace(/(>|<)/gi, '').split(/(vi\/|v=|\/v\/|youtu\.be\/|\/embed\/)/);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","Platform","View","StyleSheet","Dimensions","ScreenOrientation","DeviceMotion","YoutubePlayer","getYoutubeMeta","Vimeo","WebView","Video","Spinner","SCREEN_HEIGHT","get","height","SCREEN_WIDTH","width","EXPO_VIDEO_PROPS","rate","isMuted","volume","RETRY_RECOVER","RETRY_LOADING","MediaPlayer","constructor","props","_defineProperty","setupForPlaying","lockAsync","OS","OrientationLock","DEFAULT","ALL","motionAvailalble","isAvailableAsync","setUpdateInterval","addListener","onMotionChange","checkStreamLoaded","clearInterval","removeAllListeners","PORTRAIT_UP","url","replace","split","undefined","ids","result","match","source","useVideoPlayer","isUrlLink","startsWith","isYoutube","includes","isVimeo","heightFactor","metadata","getYoutubeVideoId","setState","playbackLoaded","readyToRender","playbackId","wait","force","retryLoading","console","log","setTimeout","playbackBuffering","state","videoPlayer","loadAsync","uri","getStreamPlaybackUrl","overrideFileExtensionAndroid","deviceRotation","beta","gamma","absGamma","Math","abs","absBeta","isGammaNegative","sign","changeEvent","rotation","deviceOrientation","orientation","isLandscape","orientationQueue","push","length","slice","every","i","orientationChanged","setInterval","checkReloadStream","status","isLoaded","isBuffering","isPlaying","error","playbackPlaying","shouldPlay","e","forceWebview","type","youtubeId","autoPlay","createElement","ref","youtubePlayer","videoId","play","onReady","onYoutubeReady","onError","onYoutubeError","playbackRate","playerParams","cc_lang_pref","showClosedCaptions","vimeoId","style","marginLeft","marginRight","loop","controls","speed","time","embedUrl","startInLoadingState","javaScriptEnabled","scrollEnabled","automaticallyAdjustContentInsets","mediaPlaybackRequiresUserAction","styles","webView","_extends","vp","resizeMode","RESIZE_MODE_CONTAIN","useNativeControls","onLoadStart","onStreamLoadStart","onLoad","onStreamLoaded","onStreamError","onPlaybackStatusUpdate","onStreamStatusUpdate","render","player","showLoading","getYoutubePlayer","getVimeoId","getVimeoPlayer","getStreamPlayer","getWebviewPlayer","container","loadingContainer","color","create","flex","backgroundColor","alignItems","justifyContent","position","top","left","right","bottom"],"sources":["MediaPlayer.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { Platform, View, StyleSheet, Dimensions } from 'react-native';\nimport * as ScreenOrientation from 'expo-screen-orientation';\nimport { DeviceMotion } from 'expo-sensors';\nimport YoutubePlayer, { getYoutubeMeta } from 'react-native-youtube-iframe';\nimport { Vimeo } from 'react-native-vimeo-iframe';\nimport { WebView } from 'react-native-webview';\nimport { Video } from 'expo-av';\n// import VideoPlayer from 'expo-video-player';\nimport { Spinner } from './Spinner';\n\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst EXPO_VIDEO_PROPS = { rate: 1, isMuted: false, volume: 1 };\nconst RETRY_RECOVER = 30000;\nconst RETRY_LOADING = 10000;\n\nclass MediaPlayer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n deviceOrientation: null,\n isLandscape: false,\n isUrlLink: true,\n isYoutube: false,\n isVimeo: false,\n forceWebview: false,\n heightFactor: 0,\n playbackLoaded: false,\n playbackBuffering: false,\n playbackPlaying: false,\n readyToRender: false,\n };\n this.youtubePlayer = null;\n this.videoPlayer = null;\n this.checkStreamLoaded = null;\n this.retryLoading = false;\n this.orientationQueue = [];\n }\n\n componentDidMount = async () => {\n await this.setupForPlaying();\n\n ScreenOrientation.lockAsync(Platform.OS === 'ios' ? ScreenOrientation.OrientationLock.DEFAULT : ScreenOrientation.OrientationLock.ALL);\n const motionAvailalble = await DeviceMotion.isAvailableAsync();\n // console.log('motionAvailalble', motionAvailalble);\n if (motionAvailalble) {\n DeviceMotion.setUpdateInterval(500);\n DeviceMotion.addListener(this.onMotionChange);\n }\n };\n\n componentWillUnmount = () => {\n if (this.checkStreamLoaded) clearInterval(this.checkStreamLoaded);\n DeviceMotion.removeAllListeners();\n ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT_UP);\n };\n\n getYoutubeVideoId = url => {\n url = url.replace(/(>|<)/gi, '').split(/(vi\\/|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/)/);\n if (url[2] !== undefined) {\n const ids = url[2].split(/[^0-9a-z_\\-]/i);\n return ids[0];\n } else {\n return '';\n }\n };\n\n getVimeoId = url => {\n const result = url.match(\n /(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_\\-]+)?/i,\n );\n return result[1];\n };\n\n setupForPlaying = async () => {\n // Extract live stream info\n const { source, useVideoPlayer } = this.props;\n const isUrlLink = source && source.startsWith('http');\n const isYoutube = source && (source.includes('youtube.com/watch?v=') || source.includes('youtu.be/'));\n const isVimeo = source && source.includes('vimeo.com/');\n let heightFactor = 0;\n\n if (isYoutube) {\n const metadata = await getYoutubeMeta(this.getYoutubeVideoId(source));\n heightFactor = metadata.height / metadata.width;\n } else if (useVideoPlayer) {\n heightFactor = 0;\n } else {\n heightFactor = 0.565;\n }\n\n this.setState({ isUrlLink, isYoutube, isVimeo, playbackLoaded: isYoutube || isVimeo, heightFactor, readyToRender: true });\n };\n\n getStreamPlaybackUrl = () => {\n // return 'https://stream.mux.com/Ym4nKktRpGuZNBBBlzhxpyRwZLpvMlPRchcu01x6Ur600.m3u8';\n return `https://stream.mux.com/${this.props.playbackId}.m3u8`;\n };\n\n checkReloadStream = (wait = RETRY_LOADING, force = false) => {\n if (!force && this.retryLoading) return;\n\n console.log(`Check loading in ${wait} milliseconds...`);\n this.retryLoading = true;\n setTimeout(async () => {\n const { playbackLoaded, playbackBuffering } = this.state;\n try {\n if (playbackLoaded === false || playbackBuffering === true) {\n console.log('Reloading started');\n await this.videoPlayer.loadAsync(\n { uri: this.getStreamPlaybackUrl(), overrideFileExtensionAndroid: 'm3u8' },\n EXPO_VIDEO_PROPS,\n false,\n );\n } else {\n console.log('Already loaded - not reloading');\n }\n this.retryLoading = false;\n } catch {}\n }, wait);\n };\n\n isLandscape = deviceRotation => {\n const { beta, gamma } = deviceRotation;\n const absGamma = Math.abs(gamma);\n const absBeta = Math.abs(beta);\n const isGammaNegative = Math.sign(gamma) === -1;\n\n if (absGamma <= 0.04 && absBeta <= 0.24) {\n //Portrait mode, on a flat surface.\n return false;\n } else if ((absGamma <= 1.0 || absGamma >= 2.3) && absBeta >= 0.5) {\n //General Portrait mode, accounting for forward and back tilt on the top of the phone.\n return false;\n } else {\n if (isGammaNegative) {\n //Landscape mode with the top of the phone to the left.\n return true;\n } else {\n //Landscape mode with the top of the phone to the right.\n return true;\n }\n }\n };\n\n onMotionChange = async changeEvent => {\n const deviceRotation = changeEvent.rotation;\n const deviceOrientation = changeEvent.orientation;\n const isLandscape = this.isLandscape(deviceRotation);\n this.orientationQueue.push(isLandscape);\n if (this.orientationQueue.length > 2) this.orientationQueue = this.orientationQueue.slice(-2);\n // console.log('onMotionChange - orientationQueue', this.orientationQueue);\n if (\n isLandscape !== this.state.isLandscape &&\n isLandscape === (Math.abs(deviceOrientation) === 90) &&\n this.orientationQueue.every(i => i === isLandscape)\n ) {\n this.setState({ isLandscape }, () => {\n // console.log('isLandscape', this.state.isLandscape);\n if (this.props.orientationChanged) this.props.orientationChanged(this.state.isLandscape);\n });\n }\n };\n\n onStreamLoadStart = () => {\n console.log('Stream load started');\n this.checkStreamLoaded = setInterval(() => {\n const { playbackLoaded } = this.state;\n if (playbackLoaded === false) {\n console.log('Stream loading failed unexpectedly');\n this.checkReloadStream(1000, true);\n } else {\n clearInterval(this.checkStreamLoaded);\n }\n }, RETRY_RECOVER);\n };\n\n onStreamLoaded = status => {\n console.log(`Stream loaded - isLoaded:${status.isLoaded}, isBuffering:${status.isBuffering}, isPlaying:${status.isPlaying}`);\n };\n\n onStreamError = error => {\n console.log('Stream error', error);\n };\n\n onStreamStatusUpdate = status => {\n this.setState(\n {\n playbackLoaded: status.isLoaded,\n playbackBuffering: status.isBuffering,\n playbackPlaying: status.isPlaying,\n },\n () => {\n const { playbackLoaded, playbackBuffering, playbackPlaying, shouldPlay } = this.state;\n // console.log(`Status updated - isLoaded:${playbackLoaded}, isBuffering:${playbackBuffering}, isPlaying:${playbackPlaying}`);\n if (playbackLoaded === false && playbackBuffering === undefined && playbackPlaying === undefined) {\n this.checkReloadStream();\n } else if (playbackLoaded === true && playbackBuffering === true) {\n this.checkReloadStream(RETRY_RECOVER);\n }\n },\n );\n };\n\n onYoutubeError = e => {\n // console.log('onYoutubeError', e);\n this.setState({ forceWebview: true });\n };\n\n onYoutubeReady = () => {\n // console.log('onYoutubeReady');\n };\n\n onVideoPlayStatusUpdate = status => {\n // console.log('onVideoPlayStatusUpdate', status);\n };\n\n onVideoPlayError = error => {\n if (error && error.type === 'NonFatal') {\n return;\n }\n // console.log('onVideoPlayError', error);\n this.setState({ forceWebview: true });\n };\n\n getYoutubePlayer = (youtubeId, width, height, autoPlay) => (\n <YoutubePlayer\n ref={ref => (this.youtubePlayer = ref)}\n height={height}\n width={width}\n videoId={youtubeId}\n play={autoPlay}\n // onChangeState={event => console.log('onChangeState', event)}\n onReady={this.onYoutubeReady}\n onError={this.onYoutubeError}\n // onPlaybackQualityChange={q => console.log('onPlaybackQualityChange', q)}\n volume={50}\n playbackRate={1}\n playerParams={{\n cc_lang_pref: 'us',\n showClosedCaptions: true,\n }}\n />\n );\n\n getVimeoPlayer = (vimeoId, width, height, autoPlay) => (\n <View style={{ width, height }}>\n <Vimeo\n style={{ marginLeft: -8, marginRight: -5 }}\n videoId={vimeoId}\n // onReady={() => console.log('Video is ready')}\n // onPlay={() => console.log('Video is playing')}\n // onPlayProgress={data => console.log('Video progress data:', data)}\n // onFinish={() => console.log('Video is finished')}\n loop={false}\n autoPlay={autoPlay}\n controls={true}\n speed={true}\n time={'0m0s'}\n />\n </View>\n );\n\n getWebviewPlayer = (embedUrl, width, height) => (\n <WebView\n startInLoadingState\n javaScriptEnabled\n scrollEnabled={false}\n automaticallyAdjustContentInsets={false}\n mediaPlaybackRequiresUserAction\n style={[styles.webView, { width, height }]}\n source={{ uri: embedUrl }}\n />\n );\n\n getStreamPlayer = (embedUrl, width, height, autoPlay) => (\n <Video\n ref={vp => {\n this.videoPlayer = vp;\n }}\n source={{ uri: embedUrl }}\n {...EXPO_VIDEO_PROPS}\n shouldPlay={autoPlay}\n resizeMode={Video.RESIZE_MODE_CONTAIN}\n useNativeControls\n style={{ width, height }}\n onLoadStart={this.onStreamLoadStart}\n onLoad={this.onStreamLoaded}\n onError={this.onStreamError}\n onPlaybackStatusUpdate={this.onStreamStatusUpdate}\n />\n );\n\n // getVideoPlayer = (embedUrl, width, height, autoPlay) => (\n // <VideoPlayer\n // videoProps={{\n // shouldPlay: autoPlay,\n // resizeMode: Video.RESIZE_MODE_CONTAIN,\n // source: { uri: embedUrl },\n // }}\n // showFullscreenButton={false}\n // errorCallback={this.onVideoPlayError}\n // playbackCallback={this.onVideoPlayStatusUpdate}\n // height={height}\n // width={width}\n // />\n // );\n\n render() {\n let width, height;\n const { playbackId, source, autoPlay, useVideoPlayer } = this.props;\n const {\n readyToRender,\n isLandscape,\n heightFactor,\n isUrlLink,\n isYoutube,\n isVimeo,\n forceWebview,\n playbackLoaded,\n playbackBuffering,\n } = this.state;\n if (!readyToRender) return null;\n\n if (isLandscape) {\n width = SCREEN_HEIGHT;\n height = SCREEN_WIDTH;\n } else {\n width = SCREEN_WIDTH;\n height = heightFactor ? SCREEN_WIDTH * heightFactor : SCREEN_HEIGHT;\n }\n\n let embedUrl, player, showLoading;\n if (!forceWebview) {\n if (isYoutube) {\n const youtubeId = this.getYoutubeVideoId(source);\n embedUrl = youtubeId ? `https://www.youtube.com/embed/${youtubeId}` : source;\n // console.log('getYoutubePlayer', youtubeId, width, height, autoPlay);\n player = this.getYoutubePlayer(youtubeId, width, height, autoPlay);\n } else if (isVimeo) {\n const vimeoId = this.getVimeoId(source);\n embedUrl = source;\n // console.log('getVimeoPlayer', vimeoId, width, height, autoPlay);\n player = this.getVimeoPlayer(vimeoId, width, height, autoPlay);\n } else if (playbackId) {\n embedUrl = this.getStreamPlaybackUrl();\n // console.log('getStreamPlayer', embedUrl, width, height, autoPlay);\n player = this.getStreamPlayer(embedUrl, width, height, autoPlay);\n showLoading = true;\n } else if (useVideoPlayer) {\n embedUrl = source;\n // console.log('getVideoPlayer', embedUrl, width, height, autoPlay);\n player = this.getStreamPlayer(embedUrl, width, height, autoPlay);\n }\n }\n if (!player && isUrlLink) {\n embedUrl = source;\n console.log('getWebviewPlayer', embedUrl, width, height);\n player = this.getWebviewPlayer(embedUrl, width, height);\n }\n\n // console.log({\n // Streaming: embedUrl,\n // Landscape: isLandscape,\n // Loaded: playbackLoaded,\n // Buffering: playbackBuffering,\n // LoadingIndicator: showLoading,\n // Width: width,\n // Height: height,\n // HeightFactor: heightFactor,\n // isYoutube,\n // isVimeo,\n // playbackId,\n // useVideoPlayer,\n // });\n return (\n <View style={styles.container}>\n {player}\n {showLoading && (!playbackLoaded || playbackBuffering) && (\n <View style={styles.loadingContainer}>\n <Spinner color={'#fff'} />\n </View>\n )}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#000',\n alignItems: 'center',\n justifyContent: 'center',\n },\n webView: {\n flex: 1,\n },\n loadingContainer: {\n position: 'absolute',\n top: 50,\n left: 0,\n right: 0,\n bottom: 50,\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n\nexport default MediaPlayer;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","Component","View","StyleSheet","Dimensions","YoutubePlayer","getYoutubeMeta","Vimeo","WebView","Video","Spinner","SCREEN_HEIGHT","get","height","SCREEN_WIDTH","width","EXPO_VIDEO_PROPS","rate","isMuted","volume","RETRY_RECOVER","RETRY_LOADING","MediaPlayer","constructor","props","_defineProperty","setupForPlaying","checkStreamLoaded","clearInterval","url","replace","split","undefined","ids","result","match","source","useVideoPlayer","isUrlLink","startsWith","isYoutube","includes","isVimeo","heightFactor","metadata","getYoutubeVideoId","setState","playbackLoaded","readyToRender","playbackId","wait","force","retryLoading","console","log","setTimeout","playbackBuffering","state","videoPlayer","loadAsync","uri","getStreamPlaybackUrl","overrideFileExtensionAndroid","deviceRotation","beta","gamma","absGamma","Math","abs","absBeta","isGammaNegative","sign","changeEvent","rotation","deviceOrientation","orientation","isLandscape","orientationQueue","push","length","slice","every","i","orientationChanged","setInterval","checkReloadStream","status","isLoaded","isBuffering","isPlaying","error","playbackPlaying","shouldPlay","e","forceWebview","type","youtubeId","autoPlay","createElement","ref","youtubePlayer","videoId","play","onReady","onYoutubeReady","onError","onYoutubeError","playbackRate","playerParams","cc_lang_pref","showClosedCaptions","vimeoId","style","marginLeft","marginRight","loop","controls","speed","time","embedUrl","startInLoadingState","javaScriptEnabled","scrollEnabled","automaticallyAdjustContentInsets","mediaPlaybackRequiresUserAction","styles","webView","_extends","vp","resizeMode","RESIZE_MODE_CONTAIN","useNativeControls","onLoadStart","onStreamLoadStart","onLoad","onStreamLoaded","onStreamError","onPlaybackStatusUpdate","onStreamStatusUpdate","render","player","showLoading","getYoutubePlayer","getVimeoId","getVimeoPlayer","getStreamPlayer","getWebviewPlayer","container","loadingContainer","color","create","flex","backgroundColor","alignItems","justifyContent","position","top","left","right","bottom"],"sources":["MediaPlayer.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet, Dimensions } from 'react-native';\nimport YoutubePlayer, { getYoutubeMeta } from 'react-native-youtube-iframe';\nimport { Vimeo } from 'react-native-vimeo-iframe';\nimport { WebView } from 'react-native-webview';\nimport { Video } from 'expo-av';\nimport { Spinner } from './Spinner';\n\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst EXPO_VIDEO_PROPS = { rate: 1, isMuted: false, volume: 1 };\nconst RETRY_RECOVER = 30000;\nconst RETRY_LOADING = 10000;\n\nclass MediaPlayer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n deviceOrientation: null,\n isLandscape: false,\n isUrlLink: true,\n isYoutube: false,\n isVimeo: false,\n forceWebview: false,\n heightFactor: 0,\n playbackLoaded: false,\n playbackBuffering: false,\n playbackPlaying: false,\n readyToRender: false,\n };\n this.youtubePlayer = null;\n this.videoPlayer = null;\n this.checkStreamLoaded = null;\n this.retryLoading = false;\n this.orientationQueue = [];\n }\n\n componentDidMount = async () => {\n await this.setupForPlaying();\n };\n\n componentWillUnmount = () => {\n if (this.checkStreamLoaded) clearInterval(this.checkStreamLoaded);\n };\n\n getYoutubeVideoId = url => {\n url = url.replace(/(>|<)/gi, '').split(/(vi\\/|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/)/);\n if (url[2] !== undefined) {\n const ids = url[2].split(/[^0-9a-z_\\-]/i);\n return ids[0];\n } else {\n return '';\n }\n };\n\n getVimeoId = url => {\n const result = url.match(\n /(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_\\-]+)?/i,\n );\n return result[1];\n };\n\n setupForPlaying = async () => {\n // Extract live stream info\n const { source, useVideoPlayer } = this.props;\n const isUrlLink = source && source.startsWith('http');\n const isYoutube = source && (source.includes('youtube.com/watch?v=') || source.includes('youtu.be/'));\n const isVimeo = source && source.includes('vimeo.com/');\n let heightFactor = 0;\n\n if (isYoutube) {\n const metadata = await getYoutubeMeta(this.getYoutubeVideoId(source));\n heightFactor = metadata.height / metadata.width;\n } else if (useVideoPlayer) {\n heightFactor = 0;\n } else {\n heightFactor = 0.565;\n }\n\n this.setState({ isUrlLink, isYoutube, isVimeo, playbackLoaded: isYoutube || isVimeo, heightFactor, readyToRender: true });\n };\n\n getStreamPlaybackUrl = () => {\n // return 'https://stream.mux.com/Ym4nKktRpGuZNBBBlzhxpyRwZLpvMlPRchcu01x6Ur600.m3u8';\n return `https://stream.mux.com/${this.props.playbackId}.m3u8`;\n };\n\n checkReloadStream = (wait = RETRY_LOADING, force = false) => {\n if (!force && this.retryLoading) return;\n\n console.log(`Check loading in ${wait} milliseconds...`);\n this.retryLoading = true;\n setTimeout(async () => {\n const { playbackLoaded, playbackBuffering } = this.state;\n try {\n if (playbackLoaded === false || playbackBuffering === true) {\n console.log('Reloading started');\n await this.videoPlayer.loadAsync(\n { uri: this.getStreamPlaybackUrl(), overrideFileExtensionAndroid: 'm3u8' },\n EXPO_VIDEO_PROPS,\n false,\n );\n } else {\n console.log('Already loaded - not reloading');\n }\n this.retryLoading = false;\n } catch {}\n }, wait);\n };\n\n isLandscape = deviceRotation => {\n const { beta, gamma } = deviceRotation;\n const absGamma = Math.abs(gamma);\n const absBeta = Math.abs(beta);\n const isGammaNegative = Math.sign(gamma) === -1;\n\n if (absGamma <= 0.04 && absBeta <= 0.24) {\n //Portrait mode, on a flat surface.\n return false;\n } else if ((absGamma <= 1.0 || absGamma >= 2.3) && absBeta >= 0.5) {\n //General Portrait mode, accounting for forward and back tilt on the top of the phone.\n return false;\n } else {\n if (isGammaNegative) {\n //Landscape mode with the top of the phone to the left.\n return true;\n } else {\n //Landscape mode with the top of the phone to the right.\n return true;\n }\n }\n };\n\n onMotionChange = async changeEvent => {\n const deviceRotation = changeEvent.rotation;\n const deviceOrientation = changeEvent.orientation;\n const isLandscape = this.isLandscape(deviceRotation);\n this.orientationQueue.push(isLandscape);\n if (this.orientationQueue.length > 2) this.orientationQueue = this.orientationQueue.slice(-2);\n // console.log('onMotionChange - orientationQueue', this.orientationQueue);\n if (\n isLandscape !== this.state.isLandscape &&\n isLandscape === (Math.abs(deviceOrientation) === 90) &&\n this.orientationQueue.every(i => i === isLandscape)\n ) {\n this.setState({ isLandscape }, () => {\n // console.log('isLandscape', this.state.isLandscape);\n if (this.props.orientationChanged) this.props.orientationChanged(this.state.isLandscape);\n });\n }\n };\n\n onStreamLoadStart = () => {\n console.log('Stream load started');\n this.checkStreamLoaded = setInterval(() => {\n const { playbackLoaded } = this.state;\n if (playbackLoaded === false) {\n console.log('Stream loading failed unexpectedly');\n this.checkReloadStream(1000, true);\n } else {\n clearInterval(this.checkStreamLoaded);\n }\n }, RETRY_RECOVER);\n };\n\n onStreamLoaded = status => {\n console.log(`Stream loaded - isLoaded:${status.isLoaded}, isBuffering:${status.isBuffering}, isPlaying:${status.isPlaying}`);\n };\n\n onStreamError = error => {\n console.log('Stream error', error);\n };\n\n onStreamStatusUpdate = status => {\n this.setState(\n {\n playbackLoaded: status.isLoaded,\n playbackBuffering: status.isBuffering,\n playbackPlaying: status.isPlaying,\n },\n () => {\n const { playbackLoaded, playbackBuffering, playbackPlaying, shouldPlay } = this.state;\n // console.log(`Status updated - isLoaded:${playbackLoaded}, isBuffering:${playbackBuffering}, isPlaying:${playbackPlaying}`);\n if (playbackLoaded === false && playbackBuffering === undefined && playbackPlaying === undefined) {\n this.checkReloadStream();\n } else if (playbackLoaded === true && playbackBuffering === true) {\n this.checkReloadStream(RETRY_RECOVER);\n }\n },\n );\n };\n\n onYoutubeError = e => {\n // console.log('onYoutubeError', e);\n this.setState({ forceWebview: true });\n };\n\n onYoutubeReady = () => {\n // console.log('onYoutubeReady');\n };\n\n onVideoPlayStatusUpdate = status => {\n // console.log('onVideoPlayStatusUpdate', status);\n };\n\n onVideoPlayError = error => {\n if (error && error.type === 'NonFatal') {\n return;\n }\n // console.log('onVideoPlayError', error);\n this.setState({ forceWebview: true });\n };\n\n getYoutubePlayer = (youtubeId, width, height, autoPlay) => (\n <YoutubePlayer\n ref={ref => (this.youtubePlayer = ref)}\n height={height}\n width={width}\n videoId={youtubeId}\n play={autoPlay}\n // onChangeState={event => console.log('onChangeState', event)}\n onReady={this.onYoutubeReady}\n onError={this.onYoutubeError}\n // onPlaybackQualityChange={q => console.log('onPlaybackQualityChange', q)}\n volume={50}\n playbackRate={1}\n playerParams={{\n cc_lang_pref: 'us',\n showClosedCaptions: true,\n }}\n />\n );\n\n getVimeoPlayer = (vimeoId, width, height, autoPlay) => (\n <View style={{ width, height }}>\n <Vimeo\n style={{ marginLeft: -8, marginRight: -5 }}\n videoId={vimeoId}\n // onReady={() => console.log('Video is ready')}\n // onPlay={() => console.log('Video is playing')}\n // onPlayProgress={data => console.log('Video progress data:', data)}\n // onFinish={() => console.log('Video is finished')}\n loop={false}\n autoPlay={autoPlay}\n controls={true}\n speed={true}\n time={'0m0s'}\n />\n </View>\n );\n\n getWebviewPlayer = (embedUrl, width, height) => (\n <WebView\n startInLoadingState\n javaScriptEnabled\n scrollEnabled={false}\n automaticallyAdjustContentInsets={false}\n mediaPlaybackRequiresUserAction\n style={[styles.webView, { width, height }]}\n source={{ uri: embedUrl }}\n />\n );\n\n getStreamPlayer = (embedUrl, width, height, autoPlay) => (\n <Video\n ref={vp => {\n this.videoPlayer = vp;\n }}\n source={{ uri: embedUrl }}\n {...EXPO_VIDEO_PROPS}\n shouldPlay={autoPlay}\n resizeMode={Video.RESIZE_MODE_CONTAIN}\n useNativeControls\n style={{ width, height }}\n onLoadStart={this.onStreamLoadStart}\n onLoad={this.onStreamLoaded}\n onError={this.onStreamError}\n onPlaybackStatusUpdate={this.onStreamStatusUpdate}\n />\n );\n\n // getVideoPlayer = (embedUrl, width, height, autoPlay) => (\n // <VideoPlayer\n // videoProps={{\n // shouldPlay: autoPlay,\n // resizeMode: Video.RESIZE_MODE_CONTAIN,\n // source: { uri: embedUrl },\n // }}\n // showFullscreenButton={false}\n // errorCallback={this.onVideoPlayError}\n // playbackCallback={this.onVideoPlayStatusUpdate}\n // height={height}\n // width={width}\n // />\n // );\n\n render() {\n let width, height;\n const { playbackId, source, autoPlay, useVideoPlayer } = this.props;\n const {\n readyToRender,\n isLandscape,\n heightFactor,\n isUrlLink,\n isYoutube,\n isVimeo,\n forceWebview,\n playbackLoaded,\n playbackBuffering,\n } = this.state;\n if (!readyToRender) return null;\n\n if (isLandscape) {\n width = SCREEN_HEIGHT;\n height = SCREEN_WIDTH;\n } else {\n width = SCREEN_WIDTH;\n height = heightFactor ? SCREEN_WIDTH * heightFactor : SCREEN_HEIGHT;\n }\n\n let embedUrl, player, showLoading;\n if (!forceWebview) {\n if (isYoutube) {\n const youtubeId = this.getYoutubeVideoId(source);\n embedUrl = youtubeId ? `https://www.youtube.com/embed/${youtubeId}` : source;\n // console.log('getYoutubePlayer', youtubeId, width, height, autoPlay);\n player = this.getYoutubePlayer(youtubeId, width, height, autoPlay);\n } else if (isVimeo) {\n const vimeoId = this.getVimeoId(source);\n embedUrl = source;\n // console.log('getVimeoPlayer', vimeoId, width, height, autoPlay);\n player = this.getVimeoPlayer(vimeoId, width, height, autoPlay);\n } else if (playbackId) {\n embedUrl = this.getStreamPlaybackUrl();\n // console.log('getStreamPlayer', embedUrl, width, height, autoPlay);\n player = this.getStreamPlayer(embedUrl, width, height, autoPlay);\n showLoading = true;\n } else if (useVideoPlayer) {\n embedUrl = source;\n // console.log('getVideoPlayer', embedUrl, width, height, autoPlay);\n player = this.getStreamPlayer(embedUrl, width, height, autoPlay);\n }\n }\n if (!player && isUrlLink) {\n embedUrl = source;\n console.log('getWebviewPlayer', embedUrl, width, height);\n player = this.getWebviewPlayer(embedUrl, width, height);\n }\n\n // console.log({\n // Streaming: embedUrl,\n // Landscape: isLandscape,\n // Loaded: playbackLoaded,\n // Buffering: playbackBuffering,\n // LoadingIndicator: showLoading,\n // Width: width,\n // Height: height,\n // HeightFactor: heightFactor,\n // isYoutube,\n // isVimeo,\n // playbackId,\n // useVideoPlayer,\n // });\n return (\n <View style={styles.container}>\n {player}\n {showLoading && (!playbackLoaded || playbackBuffering) && (\n <View style={styles.loadingContainer}>\n <Spinner color={'#fff'} />\n </View>\n )}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#000',\n alignItems: 'center',\n justifyContent: 'center',\n },\n webView: {\n flex: 1,\n },\n loadingContainer: {\n position: 'absolute',\n top: 50,\n left: 0,\n right: 0,\n bottom: 50,\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n\nexport default MediaPlayer;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import React, { Component } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import * as ScreenOrientation from 'expo-screen-orientation';
|
|
4
|
-
import { DeviceMotion } from 'expo-sensors';
|
|
2
|
+
import { View, StyleSheet, Dimensions } from 'react-native';
|
|
5
3
|
import YoutubePlayer, { getYoutubeMeta } from 'react-native-youtube-iframe';
|
|
6
4
|
import { Vimeo } from 'react-native-vimeo-iframe';
|
|
7
5
|
import { WebView } from 'react-native-webview';
|
|
8
6
|
import { Video } from 'expo-av';
|
|
9
|
-
// import VideoPlayer from 'expo-video-player';
|
|
10
7
|
import { Spinner } from './Spinner';
|
|
11
8
|
|
|
12
9
|
const SCREEN_HEIGHT = Dimensions.get('window').height;
|
|
@@ -40,20 +37,10 @@ class MediaPlayer extends Component {
|
|
|
40
37
|
|
|
41
38
|
componentDidMount = async () => {
|
|
42
39
|
await this.setupForPlaying();
|
|
43
|
-
|
|
44
|
-
ScreenOrientation.lockAsync(Platform.OS === 'ios' ? ScreenOrientation.OrientationLock.DEFAULT : ScreenOrientation.OrientationLock.ALL);
|
|
45
|
-
const motionAvailalble = await DeviceMotion.isAvailableAsync();
|
|
46
|
-
// console.log('motionAvailalble', motionAvailalble);
|
|
47
|
-
if (motionAvailalble) {
|
|
48
|
-
DeviceMotion.setUpdateInterval(500);
|
|
49
|
-
DeviceMotion.addListener(this.onMotionChange);
|
|
50
|
-
}
|
|
51
40
|
};
|
|
52
41
|
|
|
53
42
|
componentWillUnmount = () => {
|
|
54
43
|
if (this.checkStreamLoaded) clearInterval(this.checkStreamLoaded);
|
|
55
|
-
DeviceMotion.removeAllListeners();
|
|
56
|
-
ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT_UP);
|
|
57
44
|
};
|
|
58
45
|
|
|
59
46
|
getYoutubeVideoId = url => {
|