From 6e37f0d165a28b59d92c5217b23e85a045f7ca10 Mon Sep 17 00:00:00 2001 From: kkostiuk <kateryna.kostiuk@savoirfairelinux.com> Date: Mon, 17 May 2021 14:28:49 -0400 Subject: [PATCH] call: stop camera when peer refuse call Gitlab: #136 Change-Id: I67831e9603380a516a06f8baf2a177c28d042a02 --- Ring/Ring/Calls/CallViewModel.swift | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/Ring/Ring/Calls/CallViewModel.swift b/Ring/Ring/Calls/CallViewModel.swift index 151a3faa0..175524aba 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 { -- GitLab