From 380c1d46cc459a433f3938a05281a58e262927b0 Mon Sep 17 00:00:00 2001 From: Johannes Lumpe Date: Thu, 9 Apr 2015 16:50:20 +0300 Subject: [PATCH] Made `seek` a float value again, now triggered through `this.refs.myVideoNode.seek(time)` --- RCTVideo.m | 18 +++--------------- RCTVideoManager.m | 2 +- Video.ios.js | 13 ++++++------- 3 files changed, 10 insertions(+), 23 deletions(-) diff --git a/RCTVideo.m b/RCTVideo.m index 0f286698..6436849b 100644 --- a/RCTVideo.m +++ b/RCTVideo.m @@ -189,19 +189,8 @@ static NSString *const statusKeyPath = @"status"; } } -- (void)setSeek:(NSDictionary*)seek { - NSNumber *seekValue = [seek objectForKey:@"time"]; - if (!seekValue) { - return; - } - +- (void)setSeek:(float)seekTime { int timeScale = 10000; - float seekTime = [RCTConvert float:seekValue]; - bool force = [RCTConvert BOOL:[seek objectForKey:@"force"]]; - - if (seekTime == _lastSeekTime && !force) { - return; - } AVPlayerItem *item = _player.currentItem; if (item && item.status == AVPlayerItemStatusReadyToPlay) { @@ -211,14 +200,13 @@ static NSString *const statusKeyPath = @"status"; CMTime current = item.currentTime; // TODO figure out a good tolerance level CMTime tolerance = CMTimeMake(1000, timeScale); - + if (CMTimeCompare(current, cmSeekTime) != 0) { [_player seekToTime:cmSeekTime toleranceBefore:tolerance toleranceAfter:tolerance]; _pendingSeek = false; - _lastSeekTime = seekTime; [_eventDispatcher sendInputEventWithName:RNVideoEventSeek body:@{ @"currentTime": [NSNumber numberWithFloat:CMTimeGetSeconds(item.currentTime)], - @"seekTime": seekValue, + @"seekTime": [NSNumber numberWithFloat:seekTime], @"target": self.reactTag }]; } diff --git a/RCTVideoManager.m b/RCTVideoManager.m index f61620b8..94f6ddd6 100644 --- a/RCTVideoManager.m +++ b/RCTVideoManager.m @@ -42,7 +42,7 @@ RCT_EXPORT_VIEW_PROPERTY(paused, BOOL); RCT_EXPORT_VIEW_PROPERTY(muted, BOOL); RCT_EXPORT_VIEW_PROPERTY(volume, float); RCT_EXPORT_VIEW_PROPERTY(rate, float); -RCT_EXPORT_VIEW_PROPERTY(seek, NSDictionary); +RCT_EXPORT_VIEW_PROPERTY(seek, float); - (NSDictionary *)constantsToExport { diff --git a/Video.ios.js b/Video.ios.js index 98946d56..4e9a3293 100644 --- a/Video.ios.js +++ b/Video.ios.js @@ -21,7 +21,6 @@ var Video = React.createClass({ resizeMode: PropTypes.string, repeat: PropTypes.bool, paused: PropTypes.bool, - seek: PropTypes.number, muted: PropTypes.bool, volume: PropTypes.number, rate: PropTypes.number, @@ -58,6 +57,10 @@ var Video = React.createClass({ this.props.onSeek && this.props.onSeek(event.nativeEvent); }, + seek(time) { + this.refs.video.setNativeProps({seek: parseFloat(time)}); + }, + render() { var style = flattenStyle([styles.base, this.props.style]); var source = this.props.source; @@ -76,10 +79,6 @@ var Video = React.createClass({ } var nativeProps = merge(this.props, { - seek: { - time: this.props.seek, - force: this.props.forceSeek - }, style, resizeMode: resizeMode, src: { @@ -92,14 +91,14 @@ var Video = React.createClass({ onProgress: this._onProgress, }); - return + return }, }); var RCTVideo = createReactIOSNativeComponentClass({ validAttributes: merge(ReactIOSViewAttributes.UIView, {src: {diff: deepDiffer}, resizeMode: true, repeat: true, - seek: {diff: () => true}, paused: true, muted: true, volume: true, rate: true}), + seek: true, paused: true, muted: true, volume: true, rate: true}), uiViewClassName: 'RCTVideo', });