Commit 7b8f79b3 authored by Ash Mishra's avatar Ash Mishra
Browse files

added an onCaptionsDeviceSettings event

parent 7d805f13
Loading
Loading
Loading
Loading
+8 −0
Changes for Video.js: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -151,6 +151,12 @@ export default class Video extends Component {
    }
  };

  _onCaptionsDeviceSetting = (event) => {
    if (this.props.onCaptionsDeviceSetting) {
      this.props.onCaptionsDeviceSetting(event.nativeEvent);
    }
  };

  _onPlaybackStalled = (event) => {
    if (this.props.onPlaybackStalled) {
      this.props.onPlaybackStalled(event.nativeEvent);
@@ -241,6 +247,7 @@ export default class Video extends Component {
      onVideoFullscreenPlayerWillDismiss: this._onFullscreenPlayerWillDismiss,
      onVideoFullscreenPlayerDidDismiss: this._onFullscreenPlayerDidDismiss,
      onReadyForDisplay: this._onReadyForDisplay,
      onCaptionsDeviceSetting: this._onCaptionsDeviceSetting,
      onPlaybackStalled: this._onPlaybackStalled,
      onPlaybackResume: this._onPlaybackResume,
      onPlaybackRateChange: this._onPlaybackRateChange,
@@ -379,6 +386,7 @@ Video.propTypes = {
  onFullscreenPlayerWillDismiss: PropTypes.func,
  onFullscreenPlayerDidDismiss: PropTypes.func,
  onReadyForDisplay: PropTypes.func,
  onCaptionsDeviceSetting: PropTypes.func,
  onPlaybackStalled: PropTypes.func,
  onPlaybackResume: PropTypes.func,
  onPlaybackRateChange: PropTypes.func,
+1 −0
Changes for ios/RCTVideo.h: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
@property (nonatomic, copy) RCTBubblingEventBlock onVideoFullscreenPlayerWillDismiss;
@property (nonatomic, copy) RCTBubblingEventBlock onVideoFullscreenPlayerDidDismiss;
@property (nonatomic, copy) RCTBubblingEventBlock onReadyForDisplay;
@property (nonatomic, copy) RCTBubblingEventBlock onCaptionsDeviceSetting;
@property (nonatomic, copy) RCTBubblingEventBlock onPlaybackStalled;
@property (nonatomic, copy) RCTBubblingEventBlock onPlaybackResume;
@property (nonatomic, copy) RCTBubblingEventBlock onPlaybackRateChange;
+12 −3
Changes for ios/RCTVideo.m: 12 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ static int const RCTVideoUnset = -1;
  NSDictionary* _fullscreenOptions;
  BOOL _fullscreenPlayerPresented;
  UIViewController * _presentingViewController;
  BOOL _deviceCaptionsEnabled;
}

- (instancetype)initWithEventDispatcher:(RCTEventDispatcher *)eventDispatcher
@@ -316,6 +317,10 @@ static int const RCTVideoUnset = -1;
  [self removePlayerTimeObserver];
  [self removePlayerItemObservers];
  
  CFArrayRef captioningMediaCharacteristics = MACaptionAppearanceCopyPreferredCaptioningMediaCharacteristics(kMACaptionAppearanceDomainUser);
  NSArray *captionSettings = (__bridge NSArray*)captioningMediaCharacteristics;
  _deviceCaptionsEnabled = [captionSettings containsObject:AVMediaCharacteristicTranscribesSpokenDialogForAccessibility];
  
  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    
    // perform on next run loop, otherwise other passed react-props may not be set
@@ -353,6 +358,12 @@ static int const RCTVideoUnset = -1;
                              });
    }
    
    if (self.onCaptionsDeviceSetting) {
      self.onCaptionsDeviceSetting(@{@"deviceCaptionsEnabled": [NSNumber numberWithBool:_deviceCaptionsEnabled],
                                     @"target": self.reactTag
                                     });
    }
    
  });
  _videoLoadStarted = YES;
}
@@ -875,9 +886,7 @@ static int const RCTVideoUnset = -1;
  
  // in the situation that a selected text track is not available (eg. specifies a textTrack not available)
  if (![type isEqualToString:@"disabled"] && selectedTrackIndex == RCTVideoUnset) {
    CFArrayRef captioningMediaCharacteristics = MACaptionAppearanceCopyPreferredCaptioningMediaCharacteristics(kMACaptionAppearanceDomainUser);
    NSArray *captionSettings = (__bridge NSArray*)captioningMediaCharacteristics;
    if ([captionSettings containsObject:AVMediaCharacteristicTranscribesSpokenDialogForAccessibility]) {
    if (_deviceCaptionsEnabled) {
      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) {
+1 −0
Changes for ios/RCTVideoManager.m: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ RCT_EXPORT_VIEW_PROPERTY(onVideoFullscreenPlayerDidPresent, RCTBubblingEventBloc
RCT_EXPORT_VIEW_PROPERTY(onVideoFullscreenPlayerWillDismiss, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onVideoFullscreenPlayerDidDismiss, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onReadyForDisplay, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onCaptionsDeviceSetting, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onPlaybackStalled, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onPlaybackResume, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onPlaybackRateChange, RCTBubblingEventBlock);