Various fixes

This commit is contained in:
Ilya Laktyushin 2026-02-03 17:53:48 +04:00
parent 510dadd5a5
commit 07bddcd6f4
2 changed files with 32 additions and 12 deletions

View file

@ -34,7 +34,7 @@ private final class SheetContent: CombinedComponent {
let source: BotPaymentInvoiceSource
let extendedMedia: [TelegramExtendedMedia]
let inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>
let navigateToPeer: (EnginePeer) -> Void
let navigateToPeer: ((EnginePeer) -> Void)?
let dismiss: () -> Void
init(
@ -44,7 +44,7 @@ private final class SheetContent: CombinedComponent {
source: BotPaymentInvoiceSource,
extendedMedia: [TelegramExtendedMedia],
inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>,
navigateToPeer: @escaping (EnginePeer) -> Void,
navigateToPeer: ((EnginePeer) -> Void)?,
dismiss: @escaping () -> Void
) {
self.context = context
@ -85,7 +85,7 @@ private final class SheetContent: CombinedComponent {
private var peerDisposable: Disposable?
private(set) var balance: StarsAmount?
private(set) var form: BotPaymentForm?
private(set) var navigateToPeer: (EnginePeer) -> Void
private(set) var navigateToPeer: ((EnginePeer) -> Void)?
private var stateDisposable: Disposable?
@ -106,7 +106,7 @@ private final class SheetContent: CombinedComponent {
extendedMedia: [TelegramExtendedMedia],
invoice: TelegramMediaInvoice,
inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>,
navigateToPeer: @escaping (EnginePeer) -> Void
navigateToPeer: ((EnginePeer) -> Void)?
) {
self.context = context
self.starsContext = starsContext
@ -189,7 +189,7 @@ private final class SheetContent: CombinedComponent {
let _ = (self.context.engine.peers.joinLinkInformation(link)
|> deliverOnMainQueue).startStandalone(next: { result in
if case let .alreadyJoined(peer) = result {
navigateToPeer(peer)
navigateToPeer?(peer)
}
})
}
@ -402,9 +402,11 @@ private final class SheetContent: CombinedComponent {
)
),
action: {
component.navigateToPeer(peer)
}
),
component.navigateToPeer?(peer)
},
animateAlpha: component.navigateToPeer != nil,
animateScale: false
),
availableSize: CGSize(width: context.availableSize.width - 32.0, height: context.availableSize.height),
transition: .immediate
)
@ -740,7 +742,7 @@ private final class StarsTransferSheetComponent: CombinedComponent {
private let source: BotPaymentInvoiceSource
private let extendedMedia: [TelegramExtendedMedia]
private let inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>
private let navigateToPeer: (EnginePeer) -> Void
private let navigateToPeer: ((EnginePeer) -> Void)?
init(
context: AccountContext,
@ -749,7 +751,7 @@ private final class StarsTransferSheetComponent: CombinedComponent {
source: BotPaymentInvoiceSource,
extendedMedia: [TelegramExtendedMedia],
inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>,
navigateToPeer: @escaping (EnginePeer) -> Void
navigateToPeer: ((EnginePeer) -> Void)?
) {
self.context = context
self.starsContext = starsContext
@ -804,6 +806,7 @@ private final class StarsTransferSheetComponent: CombinedComponent {
backgroundColor: .color(environment.theme.list.modalBlocksBackgroundColor),
followContentSizeChanges: true,
clipsContent: true,
autoAnimateOut: false,
animateOut: animateOut
),
environment: {
@ -855,7 +858,7 @@ public final class StarsTransferScreen: ViewControllerComponentContainer {
source: BotPaymentInvoiceSource,
extendedMedia: [TelegramExtendedMedia] = [],
inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>,
navigateToPeer: @escaping (EnginePeer) -> Void = { _ in },
navigateToPeer: ((EnginePeer) -> Void)? = nil,
completion: @escaping (Bool) -> Void
) {
self.context = context

View file

@ -3783,7 +3783,24 @@ public final class SharedAccountContextImpl: SharedAccountContext {
}
public func makeStarsTransferScreen(context: AccountContext, starsContext: StarsContext, invoice: TelegramMediaInvoice, source: BotPaymentInvoiceSource, extendedMedia: [TelegramExtendedMedia], inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>, completion: @escaping (Bool) -> Void) -> ViewController {
return StarsTransferScreen(context: context, starsContext: starsContext, invoice: invoice, source: source, extendedMedia: extendedMedia, inputData: inputData, completion: completion)
return StarsTransferScreen(context: context, starsContext: starsContext, invoice: invoice, source: source, extendedMedia: extendedMedia, inputData: inputData, navigateToPeer: { [weak self] peer in
guard let self else {
return
}
if let infoController = self.makePeerInfoController(
context: context,
updatedPresentationData: nil,
peer: peer._asPeer(),
mode: .generic,
avatarInitiallyExpanded: peer.smallProfileImage != nil,
fromChat: false,
requestsContext: nil
) {
if let navigationController = self.mainWindow?.viewController as? NavigationController {
navigationController.pushViewController(infoController)
}
}
}, completion: completion)
}
public func makeStarsSubscriptionTransferScreen(context: AccountContext, starsContext: StarsContext, invoice: TelegramMediaInvoice, link: String, inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>, navigateToPeer: @escaping (EnginePeer) -> Void) -> ViewController {