Various improvements

This commit is contained in:
Isaac
2025-02-18 14:43:23 +01:00
parent ce9f8fcb7c
commit f17ead143a
15 changed files with 307 additions and 106 deletions

View File

@@ -1011,6 +1011,7 @@ private final class ChatSendStarsScreenComponent: Component {
private let closeButton = ComponentView<Empty>()
private let title = ComponentView<Empty>()
private let subtitle = ComponentView<Empty>()
private let descriptionText = ComponentView<Empty>()
private let badgeStars = BadgeStarsView()
@@ -1790,6 +1791,18 @@ private final class ChatSendStarsScreenComponent: Component {
let title = self.title
let descriptionText = self.descriptionText
let actionButton = self.actionButton
let titleSubtitleSpacing: CGFloat = 1.0
//TODO:localize
let subtitleSize = self.subtitle.update(
transition: .immediate,
component: AnyComponent(MultilineTextComponent(
text: .plain(NSAttributedString(string: "from \(currentMyPeer.compactDisplayTitle)", font: Font.regular(12.0), textColor: environment.theme.list.itemSecondaryTextColor))
)),
environment: {},
containerSize: CGSize(width: availableSize.width - leftButtonFrame.maxX * 2.0, height: 100.0)
)
let titleSize = title.update(
transition: .immediate,
@@ -1799,13 +1812,24 @@ private final class ChatSendStarsScreenComponent: Component {
environment: {},
containerSize: CGSize(width: availableSize.width - leftButtonFrame.maxX * 2.0, height: 100.0)
)
let titleFrame = CGRect(origin: CGPoint(x: floor((availableSize.width - titleSize.width) * 0.5), y: floor((56.0 - titleSize.height) * 0.5)), size: titleSize)
let titleSubtitleHeight = titleSize.height + titleSubtitleSpacing + subtitleSize.height
let titleFrame = CGRect(origin: CGPoint(x: floor((availableSize.width - titleSize.width) * 0.5), y: floor((56.0 - titleSubtitleHeight) * 0.5)), size: titleSize)
if let titleView = title.view {
if titleView.superview == nil {
self.navigationBarContainer.addSubview(titleView)
}
transition.setFrame(view: titleView, frame: titleFrame)
}
let subtitleFrame = CGRect(origin: CGPoint(x: floor((availableSize.width - subtitleSize.width) * 0.5), y: titleFrame.maxY + titleSubtitleSpacing), size: subtitleSize)
if let subtitleView = subtitle.view {
if subtitleView.superview == nil {
self.navigationBarContainer.addSubview(subtitleView)
}
transition.setFrame(view: subtitleView, frame: subtitleFrame)
}
contentHeight += 56.0
contentHeight += 8.0
@@ -1995,17 +2019,37 @@ private final class ChatSendStarsScreenComponent: Component {
guard let self, let component = self.component, let peer = topPeer.peer else {
return
}
if let peerInfoController = component.context.sharedContext.makePeerInfoController(
context: component.context,
updatedPresentationData: nil,
peer: peer._asPeer(),
mode: .generic,
avatarInitiallyExpanded: false,
fromChat: false,
requestsContext: nil
) {
self.environment?.controller()?.push(peerInfoController)
guard let controller = self.environment?.controller() else {
return
}
guard let navigationController = controller.navigationController as? NavigationController else {
return
}
var viewControllers = navigationController.viewControllers
guard let index = viewControllers.firstIndex(where: { $0 === controller }) else {
return
}
let context = component.context
if case .user = peer {
if let peerInfoController = context.sharedContext.makePeerInfoController(
context: context,
updatedPresentationData: nil,
peer: peer._asPeer(),
mode: .generic,
avatarInitiallyExpanded: false,
fromChat: false,
requestsContext: nil
) {
viewControllers.insert(peerInfoController, at: index)
}
} else {
let chatController = context.sharedContext.makeChatController(context: context, chatLocation: .peer(id: peer.id), subject: nil, botStart: nil, mode: .standard(.default), params: nil)
viewControllers.insert(chatController, at: index)
}
navigationController.setViewControllers(viewControllers, animated: true)
controller.dismiss()
},
isEnabled: topPeer.peer != nil && topPeer.peer?.id != component.context.account.peerId,
animateAlpha: false