mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various improvements
This commit is contained in:
parent
70d814c83c
commit
5d9d794f15
@ -12548,6 +12548,11 @@ Sorry for the inconvenience.";
|
|||||||
"WebBrowser.LinkForwardTooltip.ManyChats.One" = "Link forwarded to **%@** and %@ others";
|
"WebBrowser.LinkForwardTooltip.ManyChats.One" = "Link forwarded to **%@** and %@ others";
|
||||||
"WebBrowser.LinkForwardTooltip.SavedMessages.One" = "Link forwarded to **Saved Messages**";
|
"WebBrowser.LinkForwardTooltip.SavedMessages.One" = "Link forwarded to **Saved Messages**";
|
||||||
|
|
||||||
|
"WebBrowser.FileForwardTooltip.Chat.One" = "Document forwarded to **%@**";
|
||||||
|
"WebBrowser.FileForwardTooltip.TwoChats.One" = "Document forwarded to **%@** and **%@**";
|
||||||
|
"WebBrowser.FileForwardTooltip.ManyChats.One" = "Document forwarded to **%@** and %@ others";
|
||||||
|
"WebBrowser.FileForwardTooltip.SavedMessages.One" = "Document forwarded to **Saved Messages**";
|
||||||
|
|
||||||
"Stars.Intro.StarsSent_1" = "%@ Star sent.";
|
"Stars.Intro.StarsSent_1" = "%@ Star sent.";
|
||||||
"Stars.Intro.StarsSent_any" = "%@ Stars sent.";
|
"Stars.Intro.StarsSent_any" = "%@ Stars sent.";
|
||||||
"Stars.Intro.StarsSent.ViewChat" = "View Chat";
|
"Stars.Intro.StarsSent.ViewChat" = "View Chat";
|
||||||
|
@ -1006,8 +1006,8 @@ public protocol SharedAccountContext: AnyObject {
|
|||||||
|
|
||||||
func makeStarsTransactionsScreen(context: AccountContext, starsContext: StarsContext) -> ViewController
|
func makeStarsTransactionsScreen(context: AccountContext, starsContext: StarsContext) -> ViewController
|
||||||
func makeStarsPurchaseScreen(context: AccountContext, starsContext: StarsContext, options: [Any], purpose: StarsPurchasePurpose, completion: @escaping (Int64) -> Void) -> ViewController
|
func makeStarsPurchaseScreen(context: AccountContext, starsContext: StarsContext, options: [Any], purpose: StarsPurchasePurpose, completion: @escaping (Int64) -> Void) -> ViewController
|
||||||
func makeStarsTransferScreen(context: AccountContext, starsContext: StarsContext, invoice: TelegramMediaInvoice, source: BotPaymentInvoiceSource, extendedMedia: [TelegramExtendedMedia], inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?)?, NoError>, completion: @escaping (Bool) -> Void) -> ViewController
|
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
|
||||||
func makeStarsSubscriptionTransferScreen(context: AccountContext, starsContext: StarsContext, invoice: TelegramMediaInvoice, link: String, inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?)?, NoError>, navigateToPeer: @escaping (EnginePeer) -> Void) -> ViewController
|
func makeStarsSubscriptionTransferScreen(context: AccountContext, starsContext: StarsContext, invoice: TelegramMediaInvoice, link: String, inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>, navigateToPeer: @escaping (EnginePeer) -> Void) -> ViewController
|
||||||
func makeStarsTransactionScreen(context: AccountContext, transaction: StarsContext.State.Transaction, peer: EnginePeer) -> ViewController
|
func makeStarsTransactionScreen(context: AccountContext, transaction: StarsContext.State.Transaction, peer: EnginePeer) -> ViewController
|
||||||
func makeStarsReceiptScreen(context: AccountContext, receipt: BotPaymentReceipt) -> ViewController
|
func makeStarsReceiptScreen(context: AccountContext, receipt: BotPaymentReceipt) -> ViewController
|
||||||
func makeStarsSubscriptionScreen(context: AccountContext, subscription: StarsContext.State.Subscription, update: @escaping (Bool) -> Void) -> ViewController
|
func makeStarsSubscriptionScreen(context: AccountContext, subscription: StarsContext.State.Subscription, update: @escaping (Bool) -> Void) -> ViewController
|
||||||
|
@ -20,6 +20,7 @@ import UrlEscaping
|
|||||||
final class BrowserDocumentContent: UIView, BrowserContent, WKNavigationDelegate, WKUIDelegate, UIScrollViewDelegate {
|
final class BrowserDocumentContent: UIView, BrowserContent, WKNavigationDelegate, WKUIDelegate, UIScrollViewDelegate {
|
||||||
private let context: AccountContext
|
private let context: AccountContext
|
||||||
private var presentationData: PresentationData
|
private var presentationData: PresentationData
|
||||||
|
let file: TelegramMediaFile
|
||||||
|
|
||||||
private let webView: WKWebView
|
private let webView: WKWebView
|
||||||
|
|
||||||
@ -50,6 +51,7 @@ final class BrowserDocumentContent: UIView, BrowserContent, WKNavigationDelegate
|
|||||||
self.context = context
|
self.context = context
|
||||||
self.uuid = UUID()
|
self.uuid = UUID()
|
||||||
self.presentationData = presentationData
|
self.presentationData = presentationData
|
||||||
|
self.file = file
|
||||||
|
|
||||||
let configuration = WKWebViewConfiguration()
|
let configuration = WKWebViewConfiguration()
|
||||||
self.webView = WKWebView(frame: CGRect(), configuration: configuration)
|
self.webView = WKWebView(frame: CGRect(), configuration: configuration)
|
||||||
|
@ -20,6 +20,7 @@ import PDFKit
|
|||||||
final class BrowserPdfContent: UIView, BrowserContent, UIScrollViewDelegate, PDFDocumentDelegate {
|
final class BrowserPdfContent: UIView, BrowserContent, UIScrollViewDelegate, PDFDocumentDelegate {
|
||||||
private let context: AccountContext
|
private let context: AccountContext
|
||||||
private var presentationData: PresentationData
|
private var presentationData: PresentationData
|
||||||
|
let file: TelegramMediaFile
|
||||||
|
|
||||||
private let pdfView: PDFView
|
private let pdfView: PDFView
|
||||||
private let scrollView: UIScrollView!
|
private let scrollView: UIScrollView!
|
||||||
@ -51,6 +52,7 @@ final class BrowserPdfContent: UIView, BrowserContent, UIScrollViewDelegate, PDF
|
|||||||
self.context = context
|
self.context = context
|
||||||
self.uuid = UUID()
|
self.uuid = UUID()
|
||||||
self.presentationData = presentationData
|
self.presentationData = presentationData
|
||||||
|
self.file = file
|
||||||
|
|
||||||
self.pdfView = PDFView()
|
self.pdfView = PDFView()
|
||||||
|
|
||||||
|
@ -562,7 +562,22 @@ public class BrowserScreen: ViewController, MinimizableController {
|
|||||||
content.navigateForward()
|
content.navigateForward()
|
||||||
case .share:
|
case .share:
|
||||||
let presentationData = self.presentationData
|
let presentationData = self.presentationData
|
||||||
let shareController = ShareController(context: self.context, subject: .url(url))
|
let subject: ShareControllerSubject
|
||||||
|
var isDocument = false
|
||||||
|
if let content = self.content.last {
|
||||||
|
if let documentContent = content as? BrowserDocumentContent {
|
||||||
|
subject = .media(.standalone(media: documentContent.file))
|
||||||
|
isDocument = true
|
||||||
|
} else if let documentContent = content as? BrowserPdfContent {
|
||||||
|
subject = .media(.standalone(media: documentContent.file))
|
||||||
|
isDocument = true
|
||||||
|
} else {
|
||||||
|
subject = .url(url)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
subject = .url(url)
|
||||||
|
}
|
||||||
|
let shareController = ShareController(context: self.context, subject: subject)
|
||||||
shareController.completed = { [weak self] peerIds in
|
shareController.completed = { [weak self] peerIds in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
@ -582,20 +597,21 @@ public class BrowserScreen: ViewController, MinimizableController {
|
|||||||
|
|
||||||
let text: String
|
let text: String
|
||||||
var savedMessages = false
|
var savedMessages = false
|
||||||
if peerIds.count == 1, let peerId = peerIds.first, peerId == strongSelf.context.account.peerId {
|
if peerIds.count == 1, let peerId = peerIds.first, peerId == strongSelf.context.account.peerId && !isDocument {
|
||||||
text = presentationData.strings.WebBrowser_LinkAddedToBookmarks
|
text = presentationData.strings.WebBrowser_LinkAddedToBookmarks
|
||||||
savedMessages = true
|
savedMessages = true
|
||||||
} else {
|
} else {
|
||||||
if peers.count == 1, let peer = peers.first {
|
if peers.count == 1, let peer = peers.first {
|
||||||
let peerName = peer.id == strongSelf.context.account.peerId ? presentationData.strings.DialogList_SavedMessages : peer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
let peerName = peer.id == strongSelf.context.account.peerId ? presentationData.strings.DialogList_SavedMessages : peer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
||||||
text = presentationData.strings.WebBrowser_LinkForwardTooltip_Chat_One(peerName).string
|
text = isDocument ? presentationData.strings.WebBrowser_FileForwardTooltip_Chat_One(peerName).string : presentationData.strings.WebBrowser_LinkForwardTooltip_Chat_One(peerName).string
|
||||||
|
savedMessages = peer.id == strongSelf.context.account.peerId
|
||||||
} else if peers.count == 2, let firstPeer = peers.first, let secondPeer = peers.last {
|
} else if peers.count == 2, let firstPeer = peers.first, let secondPeer = peers.last {
|
||||||
let firstPeerName = firstPeer.id == strongSelf.context.account.peerId ? presentationData.strings.DialogList_SavedMessages : firstPeer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
let firstPeerName = firstPeer.id == strongSelf.context.account.peerId ? presentationData.strings.DialogList_SavedMessages : firstPeer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
||||||
let secondPeerName = secondPeer.id == strongSelf.context.account.peerId ? presentationData.strings.DialogList_SavedMessages : secondPeer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
let secondPeerName = secondPeer.id == strongSelf.context.account.peerId ? presentationData.strings.DialogList_SavedMessages : secondPeer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
||||||
text = presentationData.strings.WebBrowser_LinkForwardTooltip_TwoChats_One(firstPeerName, secondPeerName).string
|
text = isDocument ? presentationData.strings.WebBrowser_FileForwardTooltip_TwoChats_One(firstPeerName, secondPeerName).string : presentationData.strings.WebBrowser_LinkForwardTooltip_TwoChats_One(firstPeerName, secondPeerName).string
|
||||||
} else if let peer = peers.first {
|
} else if let peer = peers.first {
|
||||||
let peerName = peer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
let peerName = peer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
||||||
text = presentationData.strings.WebBrowser_LinkForwardTooltip_ManyChats_One(peerName, "\(peers.count - 1)").string
|
text = isDocument ? presentationData.strings.WebBrowser_FileForwardTooltip_ManyChats_One(peerName, "\(peers.count - 1)").string : presentationData.strings.WebBrowser_LinkForwardTooltip_ManyChats_One(peerName, "\(peers.count - 1)").string
|
||||||
} else {
|
} else {
|
||||||
text = ""
|
text = ""
|
||||||
}
|
}
|
||||||
@ -1444,6 +1460,17 @@ public class BrowserScreen: ViewController, MinimizableController {
|
|||||||
"application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
"application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
public static let supportedDocumentExtensions: [String] = [
|
||||||
|
"txt",
|
||||||
|
"rtf",
|
||||||
|
"pdf",
|
||||||
|
"doc",
|
||||||
|
"docx",
|
||||||
|
"xls",
|
||||||
|
"xlsx",
|
||||||
|
"pptx"
|
||||||
|
]
|
||||||
|
|
||||||
public init(context: AccountContext, subject: Subject, preferredConfiguration: WKWebViewConfiguration? = nil, openPreviousOnClose: Bool = false) {
|
public init(context: AccountContext, subject: Subject, preferredConfiguration: WKWebViewConfiguration? = nil, openPreviousOnClose: Bool = false) {
|
||||||
var subject = subject
|
var subject = subject
|
||||||
if case let .webPage(url) = subject, let parsedUrl = URL(string: url) {
|
if case let .webPage(url) = subject, let parsedUrl = URL(string: url) {
|
||||||
|
@ -28,7 +28,7 @@ private final class SheetContent: CombinedComponent {
|
|||||||
let invoice: TelegramMediaInvoice
|
let invoice: TelegramMediaInvoice
|
||||||
let source: BotPaymentInvoiceSource
|
let source: BotPaymentInvoiceSource
|
||||||
let extendedMedia: [TelegramExtendedMedia]
|
let extendedMedia: [TelegramExtendedMedia]
|
||||||
let inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?)?, NoError>
|
let inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>
|
||||||
let navigateToPeer: (EnginePeer) -> Void
|
let navigateToPeer: (EnginePeer) -> Void
|
||||||
let dismiss: () -> Void
|
let dismiss: () -> Void
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ private final class SheetContent: CombinedComponent {
|
|||||||
invoice: TelegramMediaInvoice,
|
invoice: TelegramMediaInvoice,
|
||||||
source: BotPaymentInvoiceSource,
|
source: BotPaymentInvoiceSource,
|
||||||
extendedMedia: [TelegramExtendedMedia],
|
extendedMedia: [TelegramExtendedMedia],
|
||||||
inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?)?, NoError>,
|
inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>,
|
||||||
navigateToPeer: @escaping (EnginePeer) -> Void,
|
navigateToPeer: @escaping (EnginePeer) -> Void,
|
||||||
dismiss: @escaping () -> Void
|
dismiss: @escaping () -> Void
|
||||||
) {
|
) {
|
||||||
@ -101,7 +101,7 @@ private final class SheetContent: CombinedComponent {
|
|||||||
source: BotPaymentInvoiceSource,
|
source: BotPaymentInvoiceSource,
|
||||||
extendedMedia: [TelegramExtendedMedia],
|
extendedMedia: [TelegramExtendedMedia],
|
||||||
invoice: TelegramMediaInvoice,
|
invoice: TelegramMediaInvoice,
|
||||||
inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?)?, NoError>,
|
inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>,
|
||||||
navigateToPeer: @escaping (EnginePeer) -> Void
|
navigateToPeer: @escaping (EnginePeer) -> Void
|
||||||
) {
|
) {
|
||||||
self.context = context
|
self.context = context
|
||||||
@ -132,6 +132,7 @@ private final class SheetContent: CombinedComponent {
|
|||||||
self.form = inputData?.1
|
self.form = inputData?.1
|
||||||
self.botPeer = inputData?.2
|
self.botPeer = inputData?.2
|
||||||
self.chatPeer = chatPeer
|
self.chatPeer = chatPeer
|
||||||
|
self.authorPeer = inputData?.3
|
||||||
self.updated(transition: .immediate)
|
self.updated(transition: .immediate)
|
||||||
|
|
||||||
if self.optionsDisposable == nil, let balance = self.balance, balance < self.invoice.totalAmount {
|
if self.optionsDisposable == nil, let balance = self.balance, balance < self.invoice.totalAmount {
|
||||||
@ -404,7 +405,13 @@ private final class SheetContent: CombinedComponent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let botPeerName = state.botPeer?.compactDisplayTitle {
|
if let authorPeerName = state.authorPeer?.compactDisplayTitle {
|
||||||
|
infoText = strings.Stars_Transfer_UnlockBotInfo(
|
||||||
|
description,
|
||||||
|
authorPeerName,
|
||||||
|
strings.Stars_Transfer_Info_Stars(Int32(amount))
|
||||||
|
).string
|
||||||
|
} else if let botPeerName = state.botPeer?.compactDisplayTitle {
|
||||||
infoText = strings.Stars_Transfer_UnlockBotInfo(
|
infoText = strings.Stars_Transfer_UnlockBotInfo(
|
||||||
description,
|
description,
|
||||||
botPeerName,
|
botPeerName,
|
||||||
@ -664,7 +671,7 @@ private final class StarsTransferSheetComponent: CombinedComponent {
|
|||||||
private let invoice: TelegramMediaInvoice
|
private let invoice: TelegramMediaInvoice
|
||||||
private let source: BotPaymentInvoiceSource
|
private let source: BotPaymentInvoiceSource
|
||||||
private let extendedMedia: [TelegramExtendedMedia]
|
private let extendedMedia: [TelegramExtendedMedia]
|
||||||
private let inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?)?, NoError>
|
private let inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>
|
||||||
private let navigateToPeer: (EnginePeer) -> Void
|
private let navigateToPeer: (EnginePeer) -> Void
|
||||||
|
|
||||||
init(
|
init(
|
||||||
@ -673,7 +680,7 @@ private final class StarsTransferSheetComponent: CombinedComponent {
|
|||||||
invoice: TelegramMediaInvoice,
|
invoice: TelegramMediaInvoice,
|
||||||
source: BotPaymentInvoiceSource,
|
source: BotPaymentInvoiceSource,
|
||||||
extendedMedia: [TelegramExtendedMedia],
|
extendedMedia: [TelegramExtendedMedia],
|
||||||
inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?)?, NoError>,
|
inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>,
|
||||||
navigateToPeer: @escaping (EnginePeer) -> Void
|
navigateToPeer: @escaping (EnginePeer) -> Void
|
||||||
) {
|
) {
|
||||||
self.context = context
|
self.context = context
|
||||||
@ -776,7 +783,7 @@ public final class StarsTransferScreen: ViewControllerComponentContainer {
|
|||||||
invoice: TelegramMediaInvoice,
|
invoice: TelegramMediaInvoice,
|
||||||
source: BotPaymentInvoiceSource,
|
source: BotPaymentInvoiceSource,
|
||||||
extendedMedia: [TelegramExtendedMedia] = [],
|
extendedMedia: [TelegramExtendedMedia] = [],
|
||||||
inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?)?, NoError>,
|
inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>,
|
||||||
navigateToPeer: @escaping (EnginePeer) -> Void = { _ in },
|
navigateToPeer: @escaping (EnginePeer) -> Void = { _ in },
|
||||||
completion: @escaping (Bool) -> Void
|
completion: @escaping (Bool) -> Void
|
||||||
) {
|
) {
|
||||||
|
@ -2808,9 +2808,9 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
inputData.get(),
|
inputData.get(),
|
||||||
starsContext.state
|
starsContext.state
|
||||||
)
|
)
|
||||||
|> map { data, state -> (StarsContext.State, BotPaymentForm, EnginePeer?)? in
|
|> map { data, state -> (StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)? in
|
||||||
if let data, let state {
|
if let data, let state {
|
||||||
return (state, data.form, data.botPeer)
|
return (state, data.form, data.botPeer, message.forwardInfo?.sourceMessageId == nil ? message.author : nil)
|
||||||
} else {
|
} else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -2856,9 +2856,9 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
inputData.get(),
|
inputData.get(),
|
||||||
starsContext.state
|
starsContext.state
|
||||||
)
|
)
|
||||||
|> map { data, state -> (StarsContext.State, BotPaymentForm, EnginePeer?)? in
|
|> map { data, state -> (StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)? in
|
||||||
if let data, let state {
|
if let data, let state {
|
||||||
return (state, data.form, data.botPeer)
|
return (state, data.form, data.botPeer, nil)
|
||||||
} else {
|
} else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -232,7 +232,13 @@ func openChatMessageImpl(_ params: OpenChatMessageParams) -> Bool {
|
|||||||
} else if let rootController = params.navigationController?.view.window?.rootViewController {
|
} else if let rootController = params.navigationController?.view.window?.rootViewController {
|
||||||
let proceed = {
|
let proceed = {
|
||||||
let canShare = !params.message.isCopyProtected()
|
let canShare = !params.message.isCopyProtected()
|
||||||
|
var useBrowserScreen = false
|
||||||
if BrowserScreen.supportedDocumentMimeTypes.contains(file.mimeType) {
|
if BrowserScreen.supportedDocumentMimeTypes.contains(file.mimeType) {
|
||||||
|
useBrowserScreen = true
|
||||||
|
} else if let fileName = file.fileName as? NSString, BrowserScreen.supportedDocumentExtensions.contains(fileName.pathExtension.lowercased()) {
|
||||||
|
useBrowserScreen = true
|
||||||
|
}
|
||||||
|
if useBrowserScreen {
|
||||||
let subject: BrowserScreen.Subject
|
let subject: BrowserScreen.Subject
|
||||||
if file.mimeType == "application/pdf" {
|
if file.mimeType == "application/pdf" {
|
||||||
subject = .pdfDocument(file: file, canShare: canShare)
|
subject = .pdfDocument(file: file, canShare: canShare)
|
||||||
|
@ -315,9 +315,9 @@ func openResolvedUrlImpl(
|
|||||||
inputData.get(),
|
inputData.get(),
|
||||||
starsContext.state
|
starsContext.state
|
||||||
)
|
)
|
||||||
|> map { data, state -> (StarsContext.State, BotPaymentForm, EnginePeer?)? in
|
|> map { data, state -> (StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)? in
|
||||||
if let data, let state {
|
if let data, let state {
|
||||||
return (state, data.form, data.botPeer)
|
return (state, data.form, data.botPeer, nil)
|
||||||
} else {
|
} else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -916,9 +916,9 @@ func openResolvedUrlImpl(
|
|||||||
inputData.get(),
|
inputData.get(),
|
||||||
starsContext.state
|
starsContext.state
|
||||||
)
|
)
|
||||||
|> map { data, state -> (StarsContext.State, BotPaymentForm, EnginePeer?)? in
|
|> map { data, state -> (StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)? in
|
||||||
if let data, let state {
|
if let data, let state {
|
||||||
return (state, data.form, data.botPeer)
|
return (state, data.form, data.botPeer, nil)
|
||||||
} else {
|
} else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -2743,11 +2743,11 @@ public final class SharedAccountContextImpl: SharedAccountContext {
|
|||||||
return StarsPurchaseScreen(context: context, starsContext: starsContext, options: options, purpose: purpose, completion: completion)
|
return StarsPurchaseScreen(context: context, starsContext: starsContext, options: options, purpose: purpose, completion: completion)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func makeStarsTransferScreen(context: AccountContext, starsContext: StarsContext, invoice: TelegramMediaInvoice, source: BotPaymentInvoiceSource, extendedMedia: [TelegramExtendedMedia], inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?)?, NoError>, completion: @escaping (Bool) -> Void) -> ViewController {
|
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, completion: completion)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func makeStarsSubscriptionTransferScreen(context: AccountContext, starsContext: StarsContext, invoice: TelegramMediaInvoice, link: String, inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?)?, NoError>, navigateToPeer: @escaping (EnginePeer) -> Void) -> ViewController {
|
public func makeStarsSubscriptionTransferScreen(context: AccountContext, starsContext: StarsContext, invoice: TelegramMediaInvoice, link: String, inputData: Signal<(StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)?, NoError>, navigateToPeer: @escaping (EnginePeer) -> Void) -> ViewController {
|
||||||
return StarsTransferScreen(context: context, starsContext: starsContext, invoice: invoice, source: .starsChatSubscription(hash: link), extendedMedia: [], inputData: inputData, navigateToPeer: navigateToPeer, completion: { _ in })
|
return StarsTransferScreen(context: context, starsContext: starsContext, invoice: invoice, source: .starsChatSubscription(hash: link), extendedMedia: [], inputData: inputData, navigateToPeer: navigateToPeer, completion: { _ in })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -767,9 +767,9 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
inputData.get(),
|
inputData.get(),
|
||||||
starsContext.state
|
starsContext.state
|
||||||
)
|
)
|
||||||
|> map { data, state -> (StarsContext.State, BotPaymentForm, EnginePeer?)? in
|
|> map { data, state -> (StarsContext.State, BotPaymentForm, EnginePeer?, EnginePeer?)? in
|
||||||
if let data, let state {
|
if let data, let state {
|
||||||
return (state, data.form, data.botPeer)
|
return (state, data.form, data.botPeer, nil)
|
||||||
} else {
|
} else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user