From 4ff69fffb1c0be3e17bcd9aabba59b9745622e5b Mon Sep 17 00:00:00 2001 From: Federico Bohn Date: Fri, 18 Nov 2016 10:41:49 -0300 Subject: [PATCH] add timer to finish config before recording --- PublisherView.js | 11 ++++++++++- RCTOpenTokPublisherView.m | 21 +++++++++++++++++---- Readme.md | 1 + 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/PublisherView.js b/PublisherView.js index f93b88e..6166334 100644 --- a/PublisherView.js +++ b/PublisherView.js @@ -130,6 +130,11 @@ class PublisherView extends React.Component { * Enable video */ videoEnabled: React.PropTypes.bool, + /** + * This function is called when the pushisher is being resumed + * + */ + onPublishResumed: React.PropTypes.func, }; @@ -144,13 +149,17 @@ class PublisherView extends React.Component { onArchiveStarted: noop, onArchiveStopped: noop, onThumbnailReady: noop, + onPublishResumed: noop, }; pausePublish() { OpenTokPublisherViewManager.pausePublish(); } resumePublish() { - OpenTokPublisherViewManager.resumePublish(); + OpenTokPublisherViewManager.resumePublish() + setTimeout(() => { + if (this.props.onPublishResumed) this.props.onPublishResumed(); + }, 3000); } stopPublish() { OpenTokPublisherViewManager.stopPublish(); diff --git a/RCTOpenTokPublisherView.m b/RCTOpenTokPublisherView.m index 2da214a..a7f6704 100644 --- a/RCTOpenTokPublisherView.m +++ b/RCTOpenTokPublisherView.m @@ -23,6 +23,7 @@ @implementation RCTOpenTokPublisherView { BOOL _isSessionCreated; BOOL _isPaused; BOOL _isPublished; + NSTimer *_recordTimer; } /** @@ -55,6 +56,9 @@ - (void) createSession { } else { _isSessionCreated = YES; } + + [_recordTimer invalidate]; + _recordTimer = nil; } /** @@ -240,12 +244,21 @@ - (void)session:(OTSession*)session didFailWithError:(OTError*)error { #pragma mark - OTSession delegate - archive callbacks - (void)session:(OTSession *)session archiveStartedWithId:(NSString *)archiveId name:(NSString *)name { - [self saveThumbnail]; - + if (_recordTimer == nil) { + NSMutableArray *params = [NSMutableArray array]; + [params addObject:archiveId]; + [params addObject:name]; + _recordTimer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(_progressRecordTimerFired:) userInfo:params repeats:NO]; + } +} + +- (void)_progressRecordTimerFired:(NSTimer *)progressTimer { _onArchiveStarted(@{ - @"archiveId": archiveId, - @"name": name, + @"archiveId": progressTimer.userInfo[0], + @"name": progressTimer.userInfo[1], }); + + [self saveThumbnail]; } - (void)session:(OTSession *)session archiveStoppedWithId:(NSString *)archiveId { diff --git a/Readme.md b/Readme.md index f8bdaa0..6393f71 100644 --- a/Readme.md +++ b/Readme.md @@ -65,6 +65,7 @@ onSessionDidConnect | function onSessionDidDisconnect | function onArchiveStarted | function onArchiveStopped | function +onPublishResumed | function ------------ | ------------- onSubscribeStart | function onSubscribeError | function