Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios

This commit is contained in:
Ilya Laktyushin 2021-04-09 14:40:50 +03:00
commit 9a075f5fde
3 changed files with 23 additions and 2 deletions

View File

@ -431,6 +431,11 @@ private func availablePaymentMethods(form: BotPaymentForm, current: BotCheckoutP
methods.append(current) methods.append(current)
} }
} }
if let savedCredentials = form.savedCredentials {
if !methods.contains(.savedCredentials(savedCredentials)) {
methods.append(.savedCredentials(savedCredentials))
}
}
return methods return methods
} }

View File

@ -353,10 +353,21 @@ final class BotCheckoutNativeCardEntryControllerNode: ViewControllerTracingNode,
guard let maskedCardNumber = resultInfo["masked_card_number"] as? String else { guard let maskedCardNumber = resultInfo["masked_card_number"] as? String else {
throw ReponseError.generic throw ReponseError.generic
} }
guard let cardType = resultInfo["card_type"] as? String else {
throw ReponseError.generic
}
var last4 = maskedCardNumber
if last4.count > 4 {
let lastDigits = String(maskedCardNumber[maskedCardNumber.index(maskedCardNumber.endIndex, offsetBy: -4)...])
if lastDigits.allSatisfy(\.isNumber) {
last4 = "\(cardType) *\(lastDigits)"
}
}
let responseJson: [String: Any] = [ let responseJson: [String: Any] = [
"type": "card", "type": "card",
"id": "\(token)" "token": "\(token)"
] ]
let serializedResponseJson = try JSONSerialization.data(withJSONObject: responseJson, options: []) let serializedResponseJson = try JSONSerialization.data(withJSONObject: responseJson, options: [])
@ -366,7 +377,7 @@ final class BotCheckoutNativeCardEntryControllerNode: ViewControllerTracingNode,
} }
strongSelf.completion(.webToken(BotCheckoutPaymentWebToken( strongSelf.completion(.webToken(BotCheckoutPaymentWebToken(
title: maskedCardNumber, title: last4,
data: serializedResponseString, data: serializedResponseString,
saveOnServer: strongSelf.saveInfoItem.isOn saveOnServer: strongSelf.saveInfoItem.isOn
))) )))

View File

@ -823,6 +823,8 @@ public final class PresentationGroupCallImpl: PresentationGroupCall {
} }
deinit { deinit {
assert(Queue.mainQueue().isCurrent())
self.audioSessionShouldBeActiveDisposable?.dispose() self.audioSessionShouldBeActiveDisposable?.dispose()
self.audioSessionActiveDisposable?.dispose() self.audioSessionActiveDisposable?.dispose()
self.summaryStateDisposable?.dispose() self.summaryStateDisposable?.dispose()
@ -1074,6 +1076,9 @@ public final class PresentationGroupCallImpl: PresentationGroupCall {
activeCallInfo = nil activeCallInfo = nil
} }
} }
if self.leaving {
shouldJoin = false
}
if shouldJoin, let callInfo = activeCallInfo { if shouldJoin, let callInfo = activeCallInfo {
let callContext: OngoingGroupCallContext let callContext: OngoingGroupCallContext