forked from mirrors/linphone-iphone
Various fixes in view model update propagation
This commit is contained in:
parent
c09519bcc1
commit
6a4ef41ab5
4 changed files with 23 additions and 9 deletions
|
|
@ -199,5 +199,13 @@ class CallData {
|
|||
isPaused.value = isCallPaused()
|
||||
}
|
||||
|
||||
func isOngoingSingleCall() -> Bool {
|
||||
return !isOutGoing() && !isInComing() && call.conference == nil && call.callLog?.wasConference() != true
|
||||
}
|
||||
|
||||
func isOngoingConference() -> Bool {
|
||||
return !isOutGoing() && !isInComing() && (call.conference != nil || call.callLog?.wasConference() == true)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,6 +39,9 @@ import linphonesw
|
|||
currentCallView = ActiveCallView()
|
||||
fullScreenMutableContainerView.addSubview(currentCallView!)
|
||||
CallsViewModel.shared.currentCallData.readCurrentAndObserve { (currentCallData) in
|
||||
guard currentCallData??.isOngoingSingleCall() == true else {
|
||||
return
|
||||
}
|
||||
self.currentCallView!.callData = currentCallData != nil ? currentCallData! : nil
|
||||
currentCallData??.isRemotelyPaused.readCurrentAndObserve { remotelyPaused in
|
||||
self.callPausedByRemoteView?.isHidden = remotelyPaused != true
|
||||
|
|
|
|||
|
|
@ -57,8 +57,11 @@ class ActiveCallView: UIView { // = currentCall
|
|||
|
||||
var callData: CallData? = nil {
|
||||
didSet {
|
||||
duration.call = callData?.call
|
||||
callData?.call.remoteAddress.map {
|
||||
guard let callData = callData else {
|
||||
return
|
||||
}
|
||||
duration.call = callData.call
|
||||
callData.call.remoteAddress.map {
|
||||
avatar.fillFromAddress(address: $0)
|
||||
if let displayName = $0.addressBookEnhancedDisplayName() {
|
||||
displayNameTop.text = displayName+" - "
|
||||
|
|
@ -66,13 +69,13 @@ class ActiveCallView: UIView { // = currentCall
|
|||
}
|
||||
sipAddress.text = $0.asStringUriOnly()
|
||||
}
|
||||
self.remotelyRecordedIndicator.isRemotelyRecorded = callData?.isRemotelyRecorded
|
||||
callData?.isRecording.readCurrentAndObserve { (selected) in
|
||||
self.remotelyRecordedIndicator.isRemotelyRecorded = callData.isRemotelyRecorded
|
||||
callData.isRecording.readCurrentAndObserve { (selected) in
|
||||
self.recordCallButtons.forEach {
|
||||
$0.isSelected = selected == true
|
||||
}
|
||||
}
|
||||
callData?.isPaused.readCurrentAndObserve { (paused) in
|
||||
callData.isPaused.readCurrentAndObserve { (paused) in
|
||||
self.pauseCallButtons.forEach {
|
||||
$0.isSelected = paused == true
|
||||
}
|
||||
|
|
@ -80,13 +83,11 @@ class ActiveCallView: UIView { // = currentCall
|
|||
self.localVideo.isHidden = true
|
||||
}
|
||||
}
|
||||
callData?.isRemotelyRecorded.readCurrentAndObserve { (remotelyRecorded) in
|
||||
callData.isRemotelyRecorded.readCurrentAndObserve { (remotelyRecorded) in
|
||||
self.centerSection.removeConstraints().matchParentSideBorders().alignUnder(view:remotelyRecorded == true ? self.remotelyRecordedIndicator : self.upperSection ,withMargin: ActiveCallView.center_view_margin_top).alignParentBottom().done()
|
||||
self.setNeedsLayout()
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Core.get().nativeVideoWindow = remoteVideo
|
||||
Core.get().nativePreviewWindowId = UnsafeMutableRawPointer(Unmanaged.passRetained(localVideo).toOpaque())
|
||||
|
||||
|
|
|
|||
|
|
@ -63,6 +63,8 @@ class VoipConferenceActiveSpeakerView: UIView, UICollectionViewDataSource, UICol
|
|||
var conferenceViewModel: ConferenceViewModel? = nil {
|
||||
didSet {
|
||||
if let model = conferenceViewModel {
|
||||
self.activeSpeakerVideoView.isHidden = true
|
||||
self.activeSpeakerVideoViewAlone.isHidden = true
|
||||
self.setJoininngSpeakerState(enabled: false)
|
||||
self.activeSpeakerAvatar.showAsAvatarIcon()
|
||||
model.subject.readCurrentAndObserve { (subject) in
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue