@plusscommunities/pluss-core-app 1.7.1 → 1.7.2-beta.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.
|
@@ -227,7 +227,11 @@ class MediaPlayer extends Component {
|
|
|
227
227
|
});
|
|
228
228
|
|
|
229
229
|
_defineProperty(this, "onVideoPlayError", error => {
|
|
230
|
-
|
|
230
|
+
if (error && error.type === 'NonFatal') {
|
|
231
|
+
return;
|
|
232
|
+
} // console.log('onVideoPlayError', error);
|
|
233
|
+
|
|
234
|
+
|
|
231
235
|
this.setState({
|
|
232
236
|
forceWebview: true
|
|
233
237
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaPlayer.js"],"names":["React","Component","Platform","View","StyleSheet","Dimensions","ScreenOrientation","DeviceMotion","YoutubePlayer","getYoutubeMeta","Vimeo","WebView","Video","VideoPlayer","Spinner","SCREEN_HEIGHT","get","height","SCREEN_WIDTH","width","EXPO_VIDEO_PROPS","rate","isMuted","volume","RETRY_RECOVER","RETRY_LOADING","MediaPlayer","constructor","props","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","youtubeId","autoPlay","ref","youtubePlayer","onYoutubeReady","onYoutubeError","cc_lang_pref","showClosedCaptions","vimeoId","marginLeft","marginRight","embedUrl","styles","webView","vp","RESIZE_MODE_CONTAIN","onStreamLoadStart","onStreamLoaded","onStreamError","onStreamStatusUpdate","resizeMode","onVideoPlayError","onVideoPlayStatusUpdate","render","player","showLoading","getYoutubePlayer","getVimeoId","getVimeoPlayer","getStreamPlayer","getVideoPlayer","getWebviewPlayer","container","loadingContainer","create","flex","backgroundColor","alignItems","justifyContent","position","top","left","right","bottom"],"mappings":"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","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';\nimport 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 // 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.getVideoPlayer(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"]}
|
|
1
|
+
{"version":3,"sources":["MediaPlayer.js"],"names":["React","Component","Platform","View","StyleSheet","Dimensions","ScreenOrientation","DeviceMotion","YoutubePlayer","getYoutubeMeta","Vimeo","WebView","Video","VideoPlayer","Spinner","SCREEN_HEIGHT","get","height","SCREEN_WIDTH","width","EXPO_VIDEO_PROPS","rate","isMuted","volume","RETRY_RECOVER","RETRY_LOADING","MediaPlayer","constructor","props","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","ref","youtubePlayer","onYoutubeReady","onYoutubeError","cc_lang_pref","showClosedCaptions","vimeoId","marginLeft","marginRight","embedUrl","styles","webView","vp","RESIZE_MODE_CONTAIN","onStreamLoadStart","onStreamLoaded","onStreamError","onStreamStatusUpdate","resizeMode","onVideoPlayError","onVideoPlayStatusUpdate","render","player","showLoading","getYoutubePlayer","getVimeoId","getVimeoPlayer","getStreamPlayer","getVideoPlayer","getWebviewPlayer","container","loadingContainer","create","flex","backgroundColor","alignItems","justifyContent","position","top","left","right","bottom"],"mappings":"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","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';\nimport 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.getVideoPlayer(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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plusscommunities/pluss-core-app",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.2-beta.0",
|
|
4
4
|
"description": "Core extension package for Pluss Communities platform",
|
|
5
5
|
"main": "dist/module/index.js",
|
|
6
6
|
"module": "dist/module/index.js",
|
|
@@ -21,36 +21,36 @@
|
|
|
21
21
|
"author": "Phillip Suh",
|
|
22
22
|
"license": "ISC",
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@expo/vector-icons": "^
|
|
25
|
-
"@react-native-async-storage/async-storage": "~1.
|
|
24
|
+
"@expo/vector-icons": "^12.0.0",
|
|
25
|
+
"@react-native-async-storage/async-storage": "~1.15.0",
|
|
26
26
|
"@react-native-community/netinfo": "8.2.0",
|
|
27
|
-
"@react-native-picker/picker": "2.
|
|
27
|
+
"@react-native-picker/picker": "2.2.1",
|
|
28
28
|
"aws-amplify": "^4.3.11",
|
|
29
29
|
"aws-amplify-react-native": "^6.0.2",
|
|
30
|
-
"expo-av": "~
|
|
31
|
-
"expo-calendar": "~10.
|
|
32
|
-
"expo-constants": "~13.
|
|
33
|
-
"expo-face-detector": "~11.
|
|
34
|
-
"expo-file-system": "~
|
|
35
|
-
"expo-image-manipulator": "~10.
|
|
36
|
-
"expo-image-picker": "~
|
|
30
|
+
"expo-av": "~10.2.0",
|
|
31
|
+
"expo-calendar": "~10.1.0",
|
|
32
|
+
"expo-constants": "~13.0.1",
|
|
33
|
+
"expo-face-detector": "~11.1.3",
|
|
34
|
+
"expo-file-system": "~13.1.4",
|
|
35
|
+
"expo-image-manipulator": "~10.2.0",
|
|
36
|
+
"expo-image-picker": "~12.0.1",
|
|
37
37
|
"expo-linear-gradient": "~11.3.0",
|
|
38
38
|
"expo-media-library": "~14.0.0",
|
|
39
|
-
"expo-screen-orientation": "~4.
|
|
40
|
-
"expo-sharing": "~10.
|
|
39
|
+
"expo-screen-orientation": "~4.1.1",
|
|
40
|
+
"expo-sharing": "~10.1.0",
|
|
41
41
|
"expo-video-player": "^1.6.0",
|
|
42
42
|
"js-cookie": "^2.2.1",
|
|
43
43
|
"lodash": "^4.17.4",
|
|
44
44
|
"mime-types": "^2.1.24",
|
|
45
45
|
"moment": "^2.18.1",
|
|
46
|
-
"react": "17.0.
|
|
47
|
-
"react-native": "0.
|
|
46
|
+
"react": "17.0.1",
|
|
47
|
+
"react-native": "0.64.3",
|
|
48
48
|
"react-native-auto-height-image": "3.1.3",
|
|
49
49
|
"react-native-elements": "^0.17.0",
|
|
50
50
|
"react-native-image-zoom-viewer": "^3.0.1",
|
|
51
51
|
"react-native-iphone-x-helper": "^1.3.1",
|
|
52
52
|
"react-native-vimeo-iframe": "^1.0.4",
|
|
53
|
-
"react-native-webview": "11.
|
|
53
|
+
"react-native-webview": "11.15.0",
|
|
54
54
|
"react-native-youtube-iframe": "^2.2.1",
|
|
55
55
|
"react-redux": "^7.2.6"
|
|
56
56
|
},
|