Unverified Commit 352bad21 authored by Hampton Maxwell's avatar Hampton Maxwell Committed by GitHub
Browse files

Merge pull request #1157 from react-native-community/bugfix/disable-sideload-track

Fix sideload text track issues on iOS
parents b710b690 c84e0595
Loading
Loading
Loading
Loading
+9 −9
Changes for ios/RCTVideo.m: 9 added lines, 9 removed lines.
Original line number Diff line number Diff line
@@ -13,6 +13,8 @@ static NSString *const readyForDisplayKeyPath = @"readyForDisplay";
static NSString *const playbackRate = @"rate";
static NSString *const timedMetadata = @"timedMetadata";

static int const RCTVideoUnset = -1;

@implementation RCTVideo
{
  AVPlayer *_player;
@@ -817,7 +819,7 @@ static NSString *const timedMetadata = @"timedMetadata";
    }
  }
  
  int selectedTrackIndex = -1;
  int selectedTrackIndex = RCTVideoUnset;
  
  if ([type isEqualToString:@"disabled"]) {
    // Do nothing. We want to ensure option is nil
@@ -846,16 +848,11 @@ static NSString *const timedMetadata = @"timedMetadata";
        selectedTrackIndex = index;
      }
    }
  }
  
  // user's selected language might not be available, or system defaults have captions enabled
  if (selectedTrackIndex == -1 || [type isEqualToString:@"default"]) {
  } else { // type "system"
    CFArrayRef captioningMediaCharacteristics = MACaptionAppearanceCopyPreferredCaptioningMediaCharacteristics(kMACaptionAppearanceDomainUser);
    NSArray *captionSettings = (__bridge NSArray*)captioningMediaCharacteristics;
    if ([captionSettings containsObject:AVMediaCharacteristicTranscribesSpokenDialogForAccessibility]) {
        // iterate through the textTracks to find a matching option, or default to the first object.
        selectedTrackIndex = 0;
        
      selectedTrackIndex = 0; // If we can't find a match, use the first available track
      NSString *systemLanguage = [[NSLocale preferredLanguages] firstObject];
      for (int i = 0; i < textTracks.count; ++i) {
        NSDictionary *currentTextTrack = [textTracks objectAtIndex:i];
@@ -868,7 +865,10 @@ static NSString *const timedMetadata = @"timedMetadata";
  }
    
  for (int i = firstTextIndex; i < _player.currentItem.tracks.count; ++i) {
    BOOL isEnabled = i == selectedTrackIndex + firstTextIndex;
    BOOL isEnabled = NO;
    if (selectedTrackIndex != RCTVideoUnset) {
      isEnabled = i == selectedTrackIndex + firstTextIndex;
    }
    [_player.currentItem.tracks[i] setEnabled:isEnabled];
  }
}