mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 09:20:08 +00:00
Various fixes
This commit is contained in:
parent
d136aa683d
commit
3d4ccb4eb0
@ -37,7 +37,9 @@ public final class SheetComponentEnvironment: Equatable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public let sheetComponentTag = GenericComponentViewTag()
|
||||||
public final class SheetComponent<ChildEnvironmentType: Equatable>: Component {
|
public final class SheetComponent<ChildEnvironmentType: Equatable>: Component {
|
||||||
|
|
||||||
public typealias EnvironmentType = (ChildEnvironmentType, SheetComponentEnvironment)
|
public typealias EnvironmentType = (ChildEnvironmentType, SheetComponentEnvironment)
|
||||||
|
|
||||||
public enum BackgroundColor: Equatable {
|
public enum BackgroundColor: Equatable {
|
||||||
@ -90,7 +92,19 @@ public final class SheetComponent<ChildEnvironmentType: Equatable>: Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class View: UIView, UIScrollViewDelegate {
|
public final class View: UIView, UIScrollViewDelegate, ComponentTaggedView {
|
||||||
|
public final class Tag {
|
||||||
|
public init() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func matches(tag: Any) -> Bool {
|
||||||
|
if let _ = tag as? Tag {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
private let dimView: UIView
|
private let dimView: UIView
|
||||||
private let scrollView: ScrollView
|
private let scrollView: ScrollView
|
||||||
private let backgroundView: UIView
|
private let backgroundView: UIView
|
||||||
@ -159,6 +173,10 @@ public final class SheetComponent<ChildEnvironmentType: Equatable>: Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func dismissAnimated() {
|
||||||
|
self.dismiss?(true)
|
||||||
|
}
|
||||||
|
|
||||||
private var scrollingOut = false
|
private var scrollingOut = false
|
||||||
public func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
|
public func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
|
||||||
let contentOffset = (scrollView.contentOffset.y + scrollView.contentInset.top - scrollView.contentSize.height) * -1.0
|
let contentOffset = (scrollView.contentOffset.y + scrollView.contentInset.top - scrollView.contentSize.height) * -1.0
|
||||||
|
|||||||
@ -571,7 +571,7 @@ public protocol CustomViewControllerNavigationDataSummary: AnyObject {
|
|||||||
(self.navigationController as? NavigationController)?.pushViewController(controller)
|
(self.navigationController as? NavigationController)?.pushViewController(controller)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func replace(with controller: ViewController) {
|
open func replace(with controller: ViewController) {
|
||||||
if let navigationController = self.navigationController as? NavigationController {
|
if let navigationController = self.navigationController as? NavigationController {
|
||||||
var controllers = navigationController.viewControllers
|
var controllers = navigationController.viewControllers
|
||||||
controllers.removeAll(where: { $0 === self })
|
controllers.removeAll(where: { $0 === self })
|
||||||
|
|||||||
@ -1262,6 +1262,17 @@ public class PremiumDemoScreen: ViewControllerComponentContainer {
|
|||||||
self.view.disablesInteractiveModalDismiss = true
|
self.view.disablesInteractiveModalDismiss = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override func replace(with controller: ViewController) {
|
||||||
|
self.dismissAnimated()
|
||||||
|
super.replace(with: controller)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func dismissAnimated() {
|
||||||
|
if let view = self.node.hostView.findTaggedView(tag: SheetComponent<ViewControllerComponentContainer.Environment>.View.Tag()) as? SheetComponent<ViewControllerComponentContainer.Environment>.View {
|
||||||
|
view.dismissAnimated()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
|
public override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
|
||||||
super.containerLayoutUpdated(layout, transition: transition)
|
super.containerLayoutUpdated(layout, transition: transition)
|
||||||
|
|
||||||
|
|||||||
@ -1697,6 +1697,12 @@ public class PremiumLimitScreen: ViewControllerComponentContainer {
|
|||||||
self.view.disablesInteractiveModalDismiss = true
|
self.view.disablesInteractiveModalDismiss = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func dismissAnimated() {
|
||||||
|
if let view = self.node.hostView.findTaggedView(tag: SheetComponent<ViewControllerComponentContainer.Environment>.View.Tag()) as? SheetComponent<ViewControllerComponentContainer.Environment>.View {
|
||||||
|
view.dismissAnimated()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public func updateSubject(_ subject: Subject, count: Int32) {
|
public func updateSubject(_ subject: Subject, count: Int32) {
|
||||||
let component = LimitSheetComponent(context: self.context, subject: subject, count: count, cancel: {}, action: {
|
let component = LimitSheetComponent(context: self.context, subject: subject, count: count, cancel: {}, action: {
|
||||||
return true
|
return true
|
||||||
|
|||||||
@ -2128,13 +2128,15 @@ public class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePreviewI
|
|||||||
return adminBadgeSizeAndApply.1()
|
return adminBadgeSizeAndApply.1()
|
||||||
})
|
})
|
||||||
|
|
||||||
let sizeAndApply = authorNameLayout(TextNodeLayoutArguments(attributedString: attributedString, backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: max(0, maximumNodeWidth - layoutConstants.text.bubbleInsets.left - layoutConstants.text.bubbleInsets.right - credibilityIconWidth - adminBadgeSizeAndApply.0.size.width), height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets()))
|
let closeButtonWidth: CGFloat = item.message.adAttribute != nil ? 18.0 : 0.0
|
||||||
|
|
||||||
|
let sizeAndApply = authorNameLayout(TextNodeLayoutArguments(attributedString: attributedString, backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: max(0, maximumNodeWidth - layoutConstants.text.bubbleInsets.left - layoutConstants.text.bubbleInsets.right - credibilityIconWidth - adminBadgeSizeAndApply.0.size.width - closeButtonWidth), height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets()))
|
||||||
nameNodeSizeApply = (sizeAndApply.0.size, {
|
nameNodeSizeApply = (sizeAndApply.0.size, {
|
||||||
return sizeAndApply.1()
|
return sizeAndApply.1()
|
||||||
})
|
})
|
||||||
|
|
||||||
nameNodeOriginY = headerSize.height
|
nameNodeOriginY = headerSize.height
|
||||||
headerSize.width = max(headerSize.width, nameNodeSizeApply.0.width + adminBadgeSizeAndApply.0.size.width + credibilityIconWidth + bubbleWidthInsets)
|
headerSize.width = max(headerSize.width, nameNodeSizeApply.0.width + adminBadgeSizeAndApply.0.size.width + credibilityIconWidth + closeButtonWidth + bubbleWidthInsets)
|
||||||
headerSize.height += nameNodeSizeApply.0.height
|
headerSize.height += nameNodeSizeApply.0.height
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -934,7 +934,7 @@ func openResolvedUrlImpl(_ resolvedUrl: ResolvedUrl, context: AccountContext, ur
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
dismissImpl = { [weak controller] in
|
dismissImpl = { [weak controller] in
|
||||||
controller?.dismiss()
|
controller?.dismissAnimated()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
case let .premiumGiftCode(slug):
|
case let .premiumGiftCode(slug):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user