mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Merge commit '709f2675c63446ea3397f9ed86fdc7a4703a9524'
This commit is contained in:
commit
1c15a2a875
@ -94,7 +94,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
|
|||||||
case preferredVideoCodec(Int, String, String?, Bool)
|
case preferredVideoCodec(Int, String, String?, Bool)
|
||||||
case disableVideoAspectScaling(Bool)
|
case disableVideoAspectScaling(Bool)
|
||||||
case enableVoipTcp(Bool)
|
case enableVoipTcp(Bool)
|
||||||
case resetInAppPurchases(PresentationTheme)
|
case restorePurchases(PresentationTheme)
|
||||||
case hostInfo(PresentationTheme, String)
|
case hostInfo(PresentationTheme, String)
|
||||||
case versionInfo(PresentationTheme)
|
case versionInfo(PresentationTheme)
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
|
|||||||
return DebugControllerSection.logging.rawValue
|
return DebugControllerSection.logging.rawValue
|
||||||
case .enableRaiseToSpeak, .keepChatNavigationStack, .skipReadHistory, .crashOnSlowQueries:
|
case .enableRaiseToSpeak, .keepChatNavigationStack, .skipReadHistory, .crashOnSlowQueries:
|
||||||
return DebugControllerSection.experiments.rawValue
|
return DebugControllerSection.experiments.rawValue
|
||||||
case .clearTips, .crash, .resetData, .resetDatabase, .resetDatabaseAndCache, .resetHoles, .reindexUnread, .resetBiometricsData, .resetWebViewCache, .optimizeDatabase, .photoPreview, .knockoutWallpaper, .playerEmbedding, .playlistPlayback, .voiceConference, .experimentalCompatibility, .enableDebugDataDisplay, .acceleratedStickers, .experimentalBackground, .inlineStickers, .localTranscription, . enableReactionOverrides, .resetInAppPurchases:
|
case .clearTips, .crash, .resetData, .resetDatabase, .resetDatabaseAndCache, .resetHoles, .reindexUnread, .resetBiometricsData, .resetWebViewCache, .optimizeDatabase, .photoPreview, .knockoutWallpaper, .playerEmbedding, .playlistPlayback, .voiceConference, .experimentalCompatibility, .enableDebugDataDisplay, .acceleratedStickers, .experimentalBackground, .inlineStickers, .localTranscription, . enableReactionOverrides, .restorePurchases:
|
||||||
return DebugControllerSection.experiments.rawValue
|
return DebugControllerSection.experiments.rawValue
|
||||||
case .preferredVideoCodec:
|
case .preferredVideoCodec:
|
||||||
return DebugControllerSection.videoExperiments.rawValue
|
return DebugControllerSection.videoExperiments.rawValue
|
||||||
@ -191,7 +191,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
|
|||||||
return 32
|
return 32
|
||||||
case .enableReactionOverrides:
|
case .enableReactionOverrides:
|
||||||
return 33
|
return 33
|
||||||
case .resetInAppPurchases:
|
case .restorePurchases:
|
||||||
return 34
|
return 34
|
||||||
case .playerEmbedding:
|
case .playerEmbedding:
|
||||||
return 35
|
return 35
|
||||||
@ -1043,9 +1043,21 @@ private enum DebugControllerEntry: ItemListNodeEntry {
|
|||||||
})
|
})
|
||||||
}).start()
|
}).start()
|
||||||
})
|
})
|
||||||
case .resetInAppPurchases:
|
case .restorePurchases:
|
||||||
return ItemListActionItem(presentationData: presentationData, title: "Reset IAP Transactions", kind: .destructive, alignment: .natural, sectionId: self.section, style: .blocks, action: {
|
return ItemListActionItem(presentationData: presentationData, title: "Restore Purchases", kind: .generic, alignment: .natural, sectionId: self.section, style: .blocks, action: {
|
||||||
arguments.context?.inAppPurchaseManager?.finishAllTransactions()
|
arguments.context?.inAppPurchaseManager?.restorePurchases(completion: { state in
|
||||||
|
let text: String
|
||||||
|
switch state {
|
||||||
|
case .succeed:
|
||||||
|
text = "Done"
|
||||||
|
case .failed:
|
||||||
|
text = "Failed"
|
||||||
|
}
|
||||||
|
if let context = arguments.context {
|
||||||
|
let controller = textAlertController(context: context, title: nil, text: text, actions: [TextAlertAction(type: .genericAction, title: "OK", action: {})])
|
||||||
|
arguments.presentController(controller, nil)
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
case let .hostInfo(_, string):
|
case let .hostInfo(_, string):
|
||||||
return ItemListTextItem(presentationData: presentationData, text: .plain(string), sectionId: self.section)
|
return ItemListTextItem(presentationData: presentationData, text: .plain(string), sectionId: self.section)
|
||||||
@ -1111,7 +1123,7 @@ private func debugControllerEntries(sharedContext: SharedAccountContext, present
|
|||||||
if case .internal = sharedContext.applicationBindings.appBuildType {
|
if case .internal = sharedContext.applicationBindings.appBuildType {
|
||||||
entries.append(.enableReactionOverrides(experimentalSettings.enableReactionOverrides))
|
entries.append(.enableReactionOverrides(experimentalSettings.enableReactionOverrides))
|
||||||
}
|
}
|
||||||
entries.append(.resetInAppPurchases(presentationData.theme))
|
entries.append(.restorePurchases(presentationData.theme))
|
||||||
entries.append(.playerEmbedding(experimentalSettings.playerEmbedding))
|
entries.append(.playerEmbedding(experimentalSettings.playerEmbedding))
|
||||||
entries.append(.playlistPlayback(experimentalSettings.playlistPlayback))
|
entries.append(.playlistPlayback(experimentalSettings.playlistPlayback))
|
||||||
}
|
}
|
||||||
|
@ -215,7 +215,7 @@ extension InAppPurchaseManager: SKPaymentTransactionObserver {
|
|||||||
transactionState = .purchased(transactionId: transactionIdentifier)
|
transactionState = .purchased(transactionId: transactionIdentifier)
|
||||||
if let transactionIdentifier = transactionIdentifier {
|
if let transactionIdentifier = transactionIdentifier {
|
||||||
self.disposableSet.set(
|
self.disposableSet.set(
|
||||||
self.engine.payments.assignAppStoreTransaction(transactionId: transactionIdentifier, receipt: getReceiptData() ?? Data(), restore: false).start(error: { _ in
|
self.engine.payments.sendAppStoreReceipt(receipt: getReceiptData() ?? Data(), restore: false).start(error: { _ in
|
||||||
Logger.shared.log("InAppPurchaseManager", "Transaction \(transaction.transactionIdentifier ?? "") failed to assign AppStore transaction")
|
Logger.shared.log("InAppPurchaseManager", "Transaction \(transaction.transactionIdentifier ?? "") failed to assign AppStore transaction")
|
||||||
queue.finishTransaction(transaction)
|
queue.finishTransaction(transaction)
|
||||||
}, completed: {
|
}, completed: {
|
||||||
@ -229,18 +229,6 @@ extension InAppPurchaseManager: SKPaymentTransactionObserver {
|
|||||||
Logger.shared.log("InAppPurchaseManager", "Transaction \(transaction.transactionIdentifier ?? ""), original transaction \(transaction.original?.transactionIdentifier ?? "") restroring")
|
Logger.shared.log("InAppPurchaseManager", "Transaction \(transaction.transactionIdentifier ?? ""), original transaction \(transaction.original?.transactionIdentifier ?? "") restroring")
|
||||||
let transactionIdentifier = transaction.transactionIdentifier
|
let transactionIdentifier = transaction.transactionIdentifier
|
||||||
transactionState = .restored(transactionId: transactionIdentifier)
|
transactionState = .restored(transactionId: transactionIdentifier)
|
||||||
if let transactionIdentifier = transactionIdentifier {
|
|
||||||
self.disposableSet.set(
|
|
||||||
self.engine.payments.assignAppStoreTransaction(transactionId: transactionIdentifier, receipt: getReceiptData() ?? Data(), restore: true).start(error: { _ in
|
|
||||||
Logger.shared.log("InAppPurchaseManager", "Transaction \(transaction.transactionIdentifier ?? "") failed to assign AppStore transaction")
|
|
||||||
queue.finishTransaction(transaction)
|
|
||||||
}, completed: {
|
|
||||||
Logger.shared.log("InAppPurchaseManager", "Transaction \(transaction.transactionIdentifier ?? "") successfully assigned AppStore transaction")
|
|
||||||
queue.finishTransaction(transaction)
|
|
||||||
}),
|
|
||||||
forKey: transactionIdentifier
|
|
||||||
)
|
|
||||||
}
|
|
||||||
case .failed:
|
case .failed:
|
||||||
Logger.shared.log("InAppPurchaseManager", "Transaction \(transaction.transactionIdentifier ?? "") failed \((transaction.error as? SKError)?.localizedDescription ?? "")")
|
Logger.shared.log("InAppPurchaseManager", "Transaction \(transaction.transactionIdentifier ?? "") failed \((transaction.error as? SKError)?.localizedDescription ?? "")")
|
||||||
transactionState = .failed(error: transaction.error as? SKError)
|
transactionState = .failed(error: transaction.error as? SKError)
|
||||||
@ -268,6 +256,15 @@ extension InAppPurchaseManager: SKPaymentTransactionObserver {
|
|||||||
Logger.shared.log("InAppPurchaseManager", "Transactions restoration finished")
|
Logger.shared.log("InAppPurchaseManager", "Transactions restoration finished")
|
||||||
onRestoreCompletion(.succeed)
|
onRestoreCompletion(.succeed)
|
||||||
self.onRestoreCompletion = nil
|
self.onRestoreCompletion = nil
|
||||||
|
|
||||||
|
if let receiptData = getReceiptData() {
|
||||||
|
self.disposableSet.set(
|
||||||
|
self.engine.payments.sendAppStoreReceipt(receipt: receiptData, restore: true).start(completed: {
|
||||||
|
Logger.shared.log("InAppPurchaseManager", "Sent restored receipt")
|
||||||
|
}),
|
||||||
|
forKey: "restore"
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6227,13 +6227,12 @@ public extension Api.functions.messages {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public extension Api.functions.payments {
|
public extension Api.functions.payments {
|
||||||
static func assignAppStoreTransaction(flags: Int32, transactionId: String, receipt: Buffer) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Updates>) {
|
static func assignAppStoreTransaction(flags: Int32, receipt: Buffer) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Updates>) {
|
||||||
let buffer = Buffer()
|
let buffer = Buffer()
|
||||||
buffer.appendInt32(267129798)
|
buffer.appendInt32(224186320)
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
serializeString(transactionId, buffer: buffer, boxed: false)
|
|
||||||
serializeBytes(receipt, buffer: buffer, boxed: false)
|
serializeBytes(receipt, buffer: buffer, boxed: false)
|
||||||
return (FunctionDescription(name: "payments.assignAppStoreTransaction", parameters: [("flags", String(describing: flags)), ("transactionId", String(describing: transactionId)), ("receipt", String(describing: receipt))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Updates? in
|
return (FunctionDescription(name: "payments.assignAppStoreTransaction", parameters: [("flags", String(describing: flags)), ("receipt", String(describing: receipt))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Updates? in
|
||||||
let reader = BufferReader(buffer)
|
let reader = BufferReader(buffer)
|
||||||
var result: Api.Updates?
|
var result: Api.Updates?
|
||||||
if let signature = reader.readInt32() {
|
if let signature = reader.readInt32() {
|
||||||
|
@ -8,12 +8,12 @@ public enum AssignAppStoreTransactionError {
|
|||||||
case generic
|
case generic
|
||||||
}
|
}
|
||||||
|
|
||||||
func _internal_assignAppStoreTransaction(account: Account, transactionId: String, receipt: Data, restore: Bool) -> Signal<Never, AssignAppStoreTransactionError> {
|
func _internal_sendAppStoreReceipt(account: Account, receipt: Data, restore: Bool) -> Signal<Never, AssignAppStoreTransactionError> {
|
||||||
var flags: Int32 = 0
|
var flags: Int32 = 0
|
||||||
if restore {
|
if restore {
|
||||||
flags |= (1 << 0)
|
flags |= (1 << 0)
|
||||||
}
|
}
|
||||||
return account.network.request(Api.functions.payments.assignAppStoreTransaction(flags: flags, transactionId: transactionId, receipt: Buffer(data: receipt)))
|
return account.network.request(Api.functions.payments.assignAppStoreTransaction(flags: flags, receipt: Buffer(data: receipt)))
|
||||||
|> mapError { _ -> AssignAppStoreTransactionError in
|
|> mapError { _ -> AssignAppStoreTransactionError in
|
||||||
return .generic
|
return .generic
|
||||||
}
|
}
|
||||||
@ -23,6 +23,10 @@ func _internal_assignAppStoreTransaction(account: Account, transactionId: String
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum RestoreAppStoreReceiptError {
|
||||||
|
case generic
|
||||||
|
}
|
||||||
|
|
||||||
func _internal_canPurchasePremium(account: Account) -> Signal<Bool, NoError> {
|
func _internal_canPurchasePremium(account: Account) -> Signal<Bool, NoError> {
|
||||||
return account.network.request(Api.functions.payments.canPurchasePremium())
|
return account.network.request(Api.functions.payments.canPurchasePremium())
|
||||||
|> map { result -> Bool in
|
|> map { result -> Bool in
|
||||||
|
@ -38,8 +38,8 @@ public extension TelegramEngine {
|
|||||||
return _internal_clearBotPaymentInfo(network: self.account.network, info: info)
|
return _internal_clearBotPaymentInfo(network: self.account.network, info: info)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func assignAppStoreTransaction(transactionId: String, receipt: Data, restore: Bool) -> Signal<Never, AssignAppStoreTransactionError> {
|
public func sendAppStoreReceipt(receipt: Data, restore: Bool) -> Signal<Never, AssignAppStoreTransactionError> {
|
||||||
return _internal_assignAppStoreTransaction(account: self.account, transactionId: transactionId, receipt: receipt, restore: restore)
|
return _internal_sendAppStoreReceipt(account: self.account, receipt: receipt, restore: restore)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func canPurchasePremium() -> Signal<Bool, NoError> {
|
public func canPurchasePremium() -> Signal<Bool, NoError> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user