mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Fix voice chat presentation
This commit is contained in:
parent
82e1797b78
commit
ed7c6e8732
@ -5956,6 +5956,8 @@ Sorry for the inconvenience.";
|
||||
"Notification.VoiceChatInvitation" = "%1$@ invited %2$@ to the voice chat";
|
||||
"Notification.VoiceChatInvitationForYou" = "%1$@ invited you to the voice chat";
|
||||
|
||||
"VoiceChat.InvitedPeerText" = "You have invited %@ to the voice chat";
|
||||
|
||||
"Notification.VoiceChatStarted" = "Voice chat started";
|
||||
"Notification.VoiceChatEnded" = "Voice chat ended (%@)";
|
||||
|
||||
|
@ -438,6 +438,12 @@ open class NavigationController: UINavigationController, ContainableController,
|
||||
modalContainer = NavigationModalContainer(theme: self.theme, isFlat: navigationLayout.modal[i].isFlat, controllerRemoved: { [weak self] controller in
|
||||
self?.controllerRemoved(controller)
|
||||
})
|
||||
modalContainer.container.statusBarStyleUpdated = { [weak self] transition in
|
||||
guard let strongSelf = self else {
|
||||
return
|
||||
}
|
||||
strongSelf.updateContainersNonReentrant(transition: transition)
|
||||
}
|
||||
self.modalContainers.append(modalContainer)
|
||||
if !modalContainer.isReady {
|
||||
modalContainer.isReadyUpdated = { [weak self, weak modalContainer] in
|
||||
@ -586,6 +592,7 @@ open class NavigationController: UINavigationController, ContainableController,
|
||||
}
|
||||
|
||||
var previousModalContainer: NavigationModalContainer?
|
||||
var topVisibleModalContainerWithStatusBar: NavigationModalContainer?
|
||||
var visibleModalCount = 0
|
||||
var topModalIsFlat = false
|
||||
let isLandscape = layout.orientation == .landscape
|
||||
@ -617,7 +624,7 @@ open class NavigationController: UINavigationController, ContainableController,
|
||||
}
|
||||
|
||||
containerTransition.updateFrame(node: modalContainer, frame: CGRect(origin: CGPoint(), size: layout.size))
|
||||
modalContainer.update(layout: layout, controllers: navigationLayout.modal[i].controllers, coveredByModalTransition: effectiveModalTransition, transition: containerTransition)
|
||||
modalContainer.update(layout: modalContainer.isFlat ? overlayLayout : layout, controllers: navigationLayout.modal[i].controllers, coveredByModalTransition: effectiveModalTransition, transition: containerTransition)
|
||||
|
||||
if modalContainer.supernode == nil && modalContainer.isReady {
|
||||
if let previousModalContainer = previousModalContainer {
|
||||
@ -653,6 +660,23 @@ open class NavigationController: UINavigationController, ContainableController,
|
||||
modalContainer.keyboardViewManager = nil
|
||||
modalContainer.canHaveKeyboardFocus = true
|
||||
}
|
||||
|
||||
if modalContainer.isFlat {
|
||||
let controllerStatusBarStyle = modalContainer.container.statusBarStyle
|
||||
switch controllerStatusBarStyle {
|
||||
case .Black, .White, .Hide:
|
||||
if topVisibleModalContainerWithStatusBar == nil {
|
||||
topVisibleModalContainerWithStatusBar = modalContainer
|
||||
}
|
||||
if case .Hide = controllerStatusBarStyle {
|
||||
statusBarHidden = true
|
||||
} else {
|
||||
statusBarHidden = false
|
||||
}
|
||||
case .Ignore:
|
||||
break
|
||||
}
|
||||
}
|
||||
} else {
|
||||
modalContainer.keyboardViewManager = nil
|
||||
modalContainer.canHaveKeyboardFocus = false
|
||||
@ -921,6 +945,10 @@ open class NavigationController: UINavigationController, ContainableController,
|
||||
statusBarStyle = topVisibleOverlayContainerWithStatusBar.controller.statusBar.statusBarStyle
|
||||
}
|
||||
|
||||
if let topVisibleModalContainerWithStatusBar = topVisibleModalContainerWithStatusBar {
|
||||
statusBarStyle = topVisibleModalContainerWithStatusBar.container.statusBarStyle
|
||||
}
|
||||
|
||||
if self.currentStatusBarExternalHidden {
|
||||
statusBarHidden = true
|
||||
}
|
||||
|
@ -372,7 +372,14 @@ final class NavigationModalContainer: ASDisplayNode, UIScrollViewDelegate, UIGes
|
||||
topInset += statusBarHeight
|
||||
}
|
||||
|
||||
containerLayout = ContainerViewLayout(size: CGSize(width: layout.size.width, height: layout.size.height - topInset), metrics: layout.metrics, deviceMetrics: layout.deviceMetrics, intrinsicInsets: UIEdgeInsets(top: 0.0, left: layout.intrinsicInsets.left, bottom: layout.intrinsicInsets.bottom, right: layout.intrinsicInsets.right), safeInsets: UIEdgeInsets(top: 0.0, left: layout.safeInsets.left, bottom: layout.safeInsets.bottom, right: layout.safeInsets.right), statusBarHeight: nil, inputHeight: layout.inputHeight, inputHeightIsInteractivellyChanging: layout.inputHeightIsInteractivellyChanging, inVoiceOver: layout.inVoiceOver)
|
||||
let effectiveStatusBarHeight: CGFloat?
|
||||
if self.isFlat {
|
||||
effectiveStatusBarHeight = layout.statusBarHeight
|
||||
} else {
|
||||
effectiveStatusBarHeight = nil
|
||||
}
|
||||
|
||||
containerLayout = ContainerViewLayout(size: CGSize(width: layout.size.width, height: layout.size.height - topInset), metrics: layout.metrics, deviceMetrics: layout.deviceMetrics, intrinsicInsets: UIEdgeInsets(top: 0.0, left: layout.intrinsicInsets.left, bottom: layout.intrinsicInsets.bottom, right: layout.intrinsicInsets.right), safeInsets: UIEdgeInsets(top: 0.0, left: layout.safeInsets.left, bottom: layout.safeInsets.bottom, right: layout.safeInsets.right), statusBarHeight: effectiveStatusBarHeight, inputHeight: layout.inputHeight, inputHeightIsInteractivellyChanging: layout.inputHeightIsInteractivellyChanging, inVoiceOver: layout.inVoiceOver)
|
||||
let unscaledFrame = CGRect(origin: CGPoint(x: 0.0, y: topInset - coveredByModalTransition * 10.0), size: containerLayout.size)
|
||||
let maxScale: CGFloat = (containerLayout.size.width - 16.0 * 2.0) / containerLayout.size.width
|
||||
containerScale = 1.0 * (1.0 - coveredByModalTransition) + maxScale * coveredByModalTransition
|
||||
@ -410,7 +417,15 @@ final class NavigationModalContainer: ASDisplayNode, UIScrollViewDelegate, UIGes
|
||||
if let inputHeightValue = layout.inputHeight {
|
||||
inputHeight = max(0.0, inputHeightValue - (layout.size.height - containerFrame.maxY))
|
||||
}
|
||||
containerLayout = ContainerViewLayout(size: containerSize, metrics: layout.metrics, deviceMetrics: layout.deviceMetrics, intrinsicInsets: UIEdgeInsets(), safeInsets: UIEdgeInsets(), statusBarHeight: nil, inputHeight: inputHeight, inputHeightIsInteractivellyChanging: layout.inputHeightIsInteractivellyChanging, inVoiceOver: layout.inVoiceOver)
|
||||
|
||||
let effectiveStatusBarHeight: CGFloat?
|
||||
if self.isFlat {
|
||||
effectiveStatusBarHeight = layout.statusBarHeight
|
||||
} else {
|
||||
effectiveStatusBarHeight = nil
|
||||
}
|
||||
|
||||
containerLayout = ContainerViewLayout(size: containerSize, metrics: layout.metrics, deviceMetrics: layout.deviceMetrics, intrinsicInsets: UIEdgeInsets(), safeInsets: UIEdgeInsets(), statusBarHeight: effectiveStatusBarHeight, inputHeight: inputHeight, inputHeightIsInteractivellyChanging: layout.inputHeightIsInteractivellyChanging, inVoiceOver: layout.inVoiceOver)
|
||||
}
|
||||
transition.updateFrameAsPositionAndBounds(node: self.container, frame: containerFrame.offsetBy(dx: 0.0, dy: layout.size.height))
|
||||
transition.updateTransformScale(node: self.container, scale: containerScale)
|
||||
|
@ -556,6 +556,8 @@ public final class VoiceChatController: ViewController {
|
||||
if let participant = participant {
|
||||
strongSelf.call.invitePeer(participant.peer.id)
|
||||
dismissController?()
|
||||
|
||||
strongSelf.controller?.present(UndoOverlayController(presentationData: strongSelf.presentationData, content: .invitedToVoiceChat(context: strongSelf.context, peer: participant.peer, text: strongSelf.presentationData.strings.VoiceChat_InvitedPeerText(peer.displayTitle(strings: strongSelf.presentationData.strings, displayOrder: strongSelf.presentationData.nameDisplayOrder)).0), elevatedLayout: false, action: { _ in return false }), in: .current)
|
||||
} else {
|
||||
let selfController = strongSelf.controller
|
||||
let inviteDisposable = strongSelf.inviteDisposable
|
||||
@ -593,6 +595,8 @@ public final class VoiceChatController: ViewController {
|
||||
}
|
||||
strongSelf.call.invitePeer(peer.id)
|
||||
dismissController?()
|
||||
|
||||
strongSelf.controller?.present(UndoOverlayController(presentationData: strongSelf.presentationData, content: .invitedToVoiceChat(context: strongSelf.context, peer: peer, text: strongSelf.presentationData.strings.VoiceChat_InvitedPeerText(peer.displayTitle(strings: strongSelf.presentationData.strings, displayOrder: strongSelf.presentationData.nameDisplayOrder)).0), elevatedLayout: false, action: { _ in return false }), in: .current)
|
||||
}, error: { error in
|
||||
dismissController?()
|
||||
guard let strongSelf = self else {
|
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user