Commit d7efcf31 authored by Artur Jaworski's avatar Artur Jaworski
Browse files

introducing onExternalPlaybackActiveChange

parent b0c0ac10
Loading
Loading
Loading
Loading
+8 −0
Changes for Video.js: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -173,6 +173,12 @@ export default class Video extends Component {
    }
  };
  
  _onExternalPlaybackChange = (event) => {
    if (this.props.onExternalPlaybackChange) {
      this.props.onExternalPlaybackChange(event.nativeEvent);
    }
  }

  _onAudioBecomingNoisy = () => {
    if (this.props.onAudioBecomingNoisy) {
      this.props.onAudioBecomingNoisy();
@@ -246,6 +252,7 @@ export default class Video extends Component {
      onPlaybackRateChange: this._onPlaybackRateChange,
      onAudioFocusChanged: this._onAudioFocusChanged,
      onAudioBecomingNoisy: this._onAudioBecomingNoisy,
      onExternalPlaybackChange: this._onExternalPlaybackChange,
    });

    if (this.props.poster && this.state.showPoster) {
@@ -379,6 +386,7 @@ Video.propTypes = {
  onPlaybackRateChange: PropTypes.func,
  onAudioFocusChanged: PropTypes.func,
  onAudioBecomingNoisy: PropTypes.func,
  onExternalPlaybackChange: PropTypes.func,

  /* Required by react-native */
  scaleX: PropTypes.number,
+1 −0
Changes for ios/Video/RCTVideo.h: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
@property (nonatomic, copy) RCTBubblingEventBlock onPlaybackStalled;
@property (nonatomic, copy) RCTBubblingEventBlock onPlaybackResume;
@property (nonatomic, copy) RCTBubblingEventBlock onPlaybackRateChange;
@property (nonatomic, copy) RCTBubblingEventBlock onExternalPlaybackChange;

- (instancetype)initWithEventDispatcher:(RCTEventDispatcher *)eventDispatcher NS_DESIGNATED_INITIALIZER;

+20 −0
Changes for ios/Video/RCTVideo.m: 20 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ static NSString *const playbackBufferEmptyKeyPath = @"playbackBufferEmpty";
static NSString *const readyForDisplayKeyPath = @"readyForDisplay";
static NSString *const playbackRate = @"rate";
static NSString *const timedMetadata = @"timedMetadata";
static NSString *const externalPlaybackActive = @"externalPlaybackActive";

static int const RCTVideoUnset = -1;

@@ -35,6 +36,7 @@ static int const RCTVideoUnset = -1;
  /* Required to publish events */
  RCTEventDispatcher *_eventDispatcher;
  BOOL _playbackRateObserverRegistered;
  BOOL _isExternalPlaybackActiveObserverRegistered;
  BOOL _videoLoadStarted;

  bool _pendingSeek;
@@ -74,6 +76,7 @@ static int const RCTVideoUnset = -1;
    _eventDispatcher = eventDispatcher;
    
    _playbackRateObserverRegistered = NO;
    _isExternalPlaybackActiveObserverRegistered = NO;
    _playbackStalled = NO;
    _rate = 1.0;
    _volume = 1.0;
@@ -333,6 +336,10 @@ static int const RCTVideoUnset = -1;
        [_player removeObserver:self forKeyPath:playbackRate context:nil];
        _playbackRateObserverRegistered = NO;
      }
      if (_isExternalPlaybackActiveObserverRegistered) {
        [_player removeObserver:self forKeyPath:externalPlaybackActive context:nil];
        _isExternalPlaybackActiveObserverRegistered = NO;
      }
        
      _player = [AVPlayer playerWithPlayerItem:_playerItem];
      _player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
@@ -340,6 +347,9 @@ static int const RCTVideoUnset = -1;
      [_player addObserver:self forKeyPath:playbackRate options:0 context:nil];
      _playbackRateObserverRegistered = YES;
      
      [_player addObserver:self forKeyPath:externalPlaybackActive options:0 context:nil];
      _isExternalPlaybackActiveObserverRegistered = YES;
        
      [self addPlayerTimeObserver];
        
      //Perform on next run loop, otherwise onVideoLoadStart is nil
@@ -646,6 +656,12 @@ static int const RCTVideoUnset = -1;
        _playbackStalled = NO;
      }
    }
    else if([keyPath isEqualToString:externalPlaybackActive]) {
        if(self.onExternalPlaybackChange) {
          self.onExternalPlaybackChange(@{@"isExternalPlaybackActive": [NSNumber numberWithBool:_player.isExternalPlaybackActive],
                                          @"target": self.reactTag});
        }
    }
  } else {
    [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
  }
@@ -1290,6 +1306,10 @@ static int const RCTVideoUnset = -1;
    [_player removeObserver:self forKeyPath:playbackRate context:nil];
    _playbackRateObserverRegistered = NO;
  }
  if (_isExternalPlaybackActiveObserverRegistered) {
    [_player removeObserver:self forKeyPath:externalPlaybackActive context:nil];
    _isExternalPlaybackActiveObserverRegistered = NO;
  }
  _player = nil;
  
  [self removePlayerLayer];
+1 −0
Changes for ios/Video/RCTVideoManager.m: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ RCT_EXPORT_VIEW_PROPERTY(onReadyForDisplay, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onPlaybackStalled, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onPlaybackResume, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onPlaybackRateChange, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onExternalPlaybackChange, RCTBubblingEventBlock);

- (NSDictionary *)constantsToExport
{