diff --git a/Ring/Ring/Calls/CallViewModel.swift b/Ring/Ring/Calls/CallViewModel.swift index 151a3faa02ba7186af304614ceef8387d4dec791..175524aba139b41bcb09da3e53ed96aa2191d3ed 100644 --- a/Ring/Ring/Calls/CallViewModel.swift +++ b/Ring/Ring/Calls/CallViewModel.swift @@ -84,6 +84,10 @@ class CallViewModel: Stateable, ViewModel { if oldValue != nil { return } + if !(self.call?.isAudioOnly ?? true) { + self.videoService.startVideoCaptureBeforeCall() + } + self.subscribeToCallFinished() self.callService.currentConferenceEvent .asObservable() .filter({ [weak self] conference-> Bool in @@ -103,8 +107,6 @@ class CallViewModel: Stateable, ViewModel { } let isModerator = self.callService.isModerator(participantId: account.jamiId, inConference: conf.conferenceID) if isModerator != self.containerViewModel?.isConference { -// guard let updatedCall = self.callService.call(callID: call.callId) else { return } -// self.call = updatedCall self.containerViewModel?.isConference = isModerator self.conferenceMode.accept(isModerator) } @@ -183,9 +185,6 @@ class CallViewModel: Stateable, ViewModel { var rendererId = "" lazy var capturedFrame: Observable<UIImage?> = { - if !(self.call?.isAudioOnly ?? true) { - videoService.startVideoCaptureBeforeCall() - } return videoService.capturedVideoFrame.asObservable().map({ frame in return frame }) @@ -213,10 +212,6 @@ class CallViewModel: Stateable, ViewModel { return !hide } } - if hide { - self?.videoService.setCameraOrientation(orientation: UIDevice.current.orientation) - self?.callsProvider.stopCall(callUUID: call.callUUID) - } return hide }) }() @@ -638,6 +633,21 @@ extension CallViewModel { func showDialpad() { self.stateSubject.onNext(ConversationState.showDialpad(inCall: true)) } + + func subscribeToCallFinished() { + dismisVC + .share() + .filter { dismised in + return dismised + } + .subscribe { [weak self ] _ in + guard let self = self, let call = self.call else { return } + self.videoService.stopCapture() + self.videoService.setCameraOrientation(orientation: UIDevice.current.orientation) + self.callsProvider.stopCall(callUUID: call.callUUID) + } + .disposed(by: self.disposeBag) + } } // MARK: conference layout extension CallViewModel {