@@ -47,59 +47,54 @@ export class FilePlayer extends Component {
4747 static canEnablePIP = canEnablePIP
4848
4949 componentDidMount ( ) {
50- this . addListeners ( )
50+ this . addListeners ( this . player )
5151 if ( IOS ) {
5252 this . player . load ( )
5353 }
5454 }
5555
56- componentWillReceiveProps ( nextProps ) {
57- if ( this . shouldUseAudio ( this . props ) !== this . shouldUseAudio ( nextProps ) ) {
58- this . removeListeners ( )
59- }
60- }
61-
6256 componentDidUpdate ( prevProps ) {
6357 if ( this . shouldUseAudio ( this . props ) !== this . shouldUseAudio ( prevProps ) ) {
64- this . addListeners ( )
58+ this . removeListeners ( this . prevPlayer )
59+ this . addListeners ( this . player )
6560 }
6661 }
6762
6863 componentWillUnmount ( ) {
69- this . removeListeners ( )
64+ this . removeListeners ( this . player )
7065 }
7166
72- addListeners ( ) {
67+ addListeners ( player ) {
7368 const { onReady, onPlay, onBuffer, onBufferEnd, onPause, onEnded, onError, playsinline, onEnablePIP } = this . props
74- this . player . addEventListener ( 'canplay' , onReady )
75- this . player . addEventListener ( 'play' , onPlay )
76- this . player . addEventListener ( 'waiting' , onBuffer )
77- this . player . addEventListener ( 'playing' , onBufferEnd )
78- this . player . addEventListener ( 'pause' , onPause )
79- this . player . addEventListener ( 'seeked' , this . onSeek )
80- this . player . addEventListener ( 'ended' , onEnded )
81- this . player . addEventListener ( 'error' , onError )
82- this . player . addEventListener ( 'enterpictureinpicture' , onEnablePIP )
83- this . player . addEventListener ( 'leavepictureinpicture' , this . onDisablePIP )
69+ player . addEventListener ( 'canplay' , onReady )
70+ player . addEventListener ( 'play' , onPlay )
71+ player . addEventListener ( 'waiting' , onBuffer )
72+ player . addEventListener ( 'playing' , onBufferEnd )
73+ player . addEventListener ( 'pause' , onPause )
74+ player . addEventListener ( 'seeked' , this . onSeek )
75+ player . addEventListener ( 'ended' , onEnded )
76+ player . addEventListener ( 'error' , onError )
77+ player . addEventListener ( 'enterpictureinpicture' , onEnablePIP )
78+ player . addEventListener ( 'leavepictureinpicture' , this . onDisablePIP )
8479 if ( playsinline ) {
85- this . player . setAttribute ( 'playsinline' , '' )
86- this . player . setAttribute ( 'webkit-playsinline' , '' )
87- this . player . setAttribute ( 'x5-playsinline' , '' )
80+ player . setAttribute ( 'playsinline' , '' )
81+ player . setAttribute ( 'webkit-playsinline' , '' )
82+ player . setAttribute ( 'x5-playsinline' , '' )
8883 }
8984 }
9085
91- removeListeners ( ) {
86+ removeListeners ( player ) {
9287 const { onReady, onPlay, onBuffer, onBufferEnd, onPause, onEnded, onError, onEnablePIP } = this . props
93- this . player . removeEventListener ( 'canplay' , onReady )
94- this . player . removeEventListener ( 'play' , onPlay )
95- this . player . removeEventListener ( 'waiting' , onBuffer )
96- this . player . removeEventListener ( 'playing' , onBufferEnd )
97- this . player . removeEventListener ( 'pause' , onPause )
98- this . player . removeEventListener ( 'seeked' , this . onSeek )
99- this . player . removeEventListener ( 'ended' , onEnded )
100- this . player . removeEventListener ( 'error' , onError )
101- this . player . removeEventListener ( 'enterpictureinpicture' , onEnablePIP )
102- this . player . removeEventListener ( 'leavepictureinpicture' , this . onDisablePIP )
88+ player . removeEventListener ( 'canplay' , onReady )
89+ player . removeEventListener ( 'play' , onPlay )
90+ player . removeEventListener ( 'waiting' , onBuffer )
91+ player . removeEventListener ( 'playing' , onBufferEnd )
92+ player . removeEventListener ( 'pause' , onPause )
93+ player . removeEventListener ( 'seeked' , this . onSeek )
94+ player . removeEventListener ( 'ended' , onEnded )
95+ player . removeEventListener ( 'error' , onError )
96+ player . removeEventListener ( 'enterpictureinpicture' , onEnablePIP )
97+ player . removeEventListener ( 'leavepictureinpicture' , this . onDisablePIP )
10398 }
10499
105100 onDisablePIP = e => {
@@ -274,6 +269,10 @@ export class FilePlayer extends Component {
274269 }
275270
276271 ref = player => {
272+ if ( this . player ) {
273+ // Store previous player to be used by removeListeners()
274+ this . prevPlayer = this . player
275+ }
277276 this . player = player
278277 }
279278
0 commit comments