@@ -751,10 +751,23 @@ export const StreamPlayer = forwardRef<StreamPlayerRef, StreamPlayerProps>(
751751 const stuckCountRef = useRef < number > ( 0 ) ;
752752 const appStateRef = useRef < AppStateStatus > ( AppState . currentState ) ;
753753
754+ // Avoid WebView.reload(): with source={{ html, baseUrl: https://www.twitch.tv/ }} it loads twitch.tv, not the embed HTML (issue #524).
755+ const remountEmbedWebView = useCallback ( ( ) => {
756+ setPlayerState ( prev => ( {
757+ ...prev ,
758+ isReady : false ,
759+ isBuffering : true ,
760+ } ) ) ;
761+ needsInitRef . current = true ;
762+ setWebViewKey ( k => k + 1 ) ;
763+ } , [ ] ) ;
764+
765+ const forceRefresh = remountEmbedWebView ;
766+
754767 useEffect ( ( ) => {
755768 const handleAppStateChange = ( nextAppState : AppStateStatus ) => {
756769 if ( appStateRef . current === 'background' && nextAppState === 'active' ) {
757- setWebViewKey ( k => k + 1 ) ;
770+ remountEmbedWebView ( ) ;
758771 }
759772
760773 appStateRef . current = nextAppState ;
@@ -768,7 +781,7 @@ export const StreamPlayer = forwardRef<StreamPlayerRef, StreamPlayerProps>(
768781 return ( ) => {
769782 subscription . remove ( ) ;
770783 } ;
771- } , [ ] ) ;
784+ } , [ remountEmbedWebView ] ) ;
772785
773786 useEffect ( ( ) => {
774787 streamWebViewWarmupPool . startWarmup ( parent ) ;
@@ -881,19 +894,6 @@ export const StreamPlayer = forwardRef<StreamPlayerRef, StreamPlayerProps>(
881894 } ) ;
882895 } , [ injectJS , playerState . duration ] ) ;
883896
884- const forceRefresh = useCallback ( ( ) => {
885- setPlayerState ( prev => ( {
886- ...prev ,
887- isReady : false ,
888- isBuffering : true ,
889- } ) ) ;
890- needsInitRef . current = true ;
891-
892- setTimeout ( ( ) => {
893- webViewRef . current ?. reload ( ) ;
894- } , 100 ) ;
895- } , [ ] ) ;
896-
897897 useImperativeHandle (
898898 ref ,
899899 ( ) => ( {
@@ -1287,8 +1287,7 @@ export const StreamPlayer = forwardRef<StreamPlayerRef, StreamPlayerProps>(
12871287 source = { webViewSource }
12881288 style = { [ styles . webView , hasContentGate && styles . webViewScrollable ] }
12891289 onContentProcessDidTerminate = { ( ) => {
1290- needsInitRef . current = true ;
1291- webViewRef . current ?. reload ( ) ;
1290+ remountEmbedWebView ( ) ;
12921291 } }
12931292 onError = { handleWebViewError }
12941293 onHttpError = { handleWebViewHttpError }
@@ -1311,8 +1310,7 @@ export const StreamPlayer = forwardRef<StreamPlayerRef, StreamPlayerProps>(
13111310 } }
13121311 onMessage = { handleMessage }
13131312 onRenderProcessGone = { ( ) => {
1314- needsInitRef . current = true ;
1315- webViewRef . current ?. reload ( ) ;
1313+ remountEmbedWebView ( ) ;
13161314 } }
13171315 />
13181316
0 commit comments