Unverified Commit 916f5b25 authored by Hampton Maxwell's avatar Hampton Maxwell Committed by GitHub
Browse files

Merge pull request #1088 from react-native-community/bugfix/multiple-ios-onload

Prevent iOS onLoad event during seeking
parents f51b9291 4174d5a7
Loading
Loading
Loading
Loading
+7 −10
Changes for ios/RCTVideo.m: 7 added lines, 10 removed lines.
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ static NSString *const timedMetadata = @"timedMetadata";
  /* Required to publish events */
  RCTEventDispatcher *_eventDispatcher;
  BOOL _playbackRateObserverRegistered;
  BOOL _videoLoadStarted;

  bool _pendingSeek;
  float _pendingSeekTime;
@@ -316,6 +317,7 @@ static NSString *const timedMetadata = @"timedMetadata";
                                        });
    }
  });
  _videoLoadStarted = YES;
}

- (AVPlayerItem*)playerItemForSource:(NSDictionary *)source
@@ -352,18 +354,12 @@ static NSString *const timedMetadata = @"timedMetadata";
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
  if (object == _playerItem) {

    // When timeMetadata is read the event onTimedMetadata is triggered
    if ([keyPath isEqualToString: timedMetadata])
    {


    if ([keyPath isEqualToString:timedMetadata]) {
      NSArray<AVMetadataItem *> *items = [change objectForKey:@"new"];
      if (items && ![items isEqual:[NSNull null]] && items.count > 0) {

        NSMutableArray *array = [NSMutableArray new];
        for (AVMetadataItem *item in items) {

          NSString *value = item.value;
          NSString *identifier = item.identifier;
          
@@ -405,11 +401,12 @@ static NSString *const timedMetadata = @"timedMetadata";
              || (preferredTransform.tx == 0 && preferredTransform.ty == 0))
          {
            orientation = @"landscape";
          } else
          } else {
            orientation = @"portrait";
          }
        }
        
      if(self.onVideoLoad) {
        if (self.onVideoLoad && _videoLoadStarted) {
          self.onVideoLoad(@{@"duration": [NSNumber numberWithFloat:duration],
                             @"currentTime": [NSNumber numberWithFloat:CMTimeGetSeconds(_playerItem.currentTime)],
                             @"canPlayReverse": [NSNumber numberWithBool:_playerItem.canPlayReverse],
@@ -426,7 +423,7 @@ static NSString *const timedMetadata = @"timedMetadata";
                             @"textTracks": [self getTextTrackInfo],
                             @"target": self.reactTag});
        }

        _videoLoadStarted = NO;
        
        [self attachListeners];
        [self applyModifiers];