diff --git a/submodules/BotPaymentsUI/Sources/BotCheckoutControllerNode.swift b/submodules/BotPaymentsUI/Sources/BotCheckoutControllerNode.swift index a83fee8c2c..b4d8db27ab 100644 --- a/submodules/BotPaymentsUI/Sources/BotCheckoutControllerNode.swift +++ b/submodules/BotPaymentsUI/Sources/BotCheckoutControllerNode.swift @@ -431,6 +431,11 @@ private func availablePaymentMethods(form: BotPaymentForm, current: BotCheckoutP methods.append(current) } } + if let savedCredentials = form.savedCredentials { + if !methods.contains(.savedCredentials(savedCredentials)) { + methods.append(.savedCredentials(savedCredentials)) + } + } return methods } diff --git a/submodules/BotPaymentsUI/Sources/BotCheckoutNativeCardEntryControllerNode.swift b/submodules/BotPaymentsUI/Sources/BotCheckoutNativeCardEntryControllerNode.swift index bbf511a6e5..f51a890059 100644 --- a/submodules/BotPaymentsUI/Sources/BotCheckoutNativeCardEntryControllerNode.swift +++ b/submodules/BotPaymentsUI/Sources/BotCheckoutNativeCardEntryControllerNode.swift @@ -353,10 +353,21 @@ final class BotCheckoutNativeCardEntryControllerNode: ViewControllerTracingNode, guard let maskedCardNumber = resultInfo["masked_card_number"] as? String else { 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] = [ "type": "card", - "id": "\(token)" + "token": "\(token)" ] let serializedResponseJson = try JSONSerialization.data(withJSONObject: responseJson, options: []) @@ -366,7 +377,7 @@ final class BotCheckoutNativeCardEntryControllerNode: ViewControllerTracingNode, } strongSelf.completion(.webToken(BotCheckoutPaymentWebToken( - title: maskedCardNumber, + title: last4, data: serializedResponseString, saveOnServer: strongSelf.saveInfoItem.isOn ))) diff --git a/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift b/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift index 6a5b93cef2..35e91c9cec 100644 --- a/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift +++ b/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift @@ -823,6 +823,8 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { } deinit { + assert(Queue.mainQueue().isCurrent()) + self.audioSessionShouldBeActiveDisposable?.dispose() self.audioSessionActiveDisposable?.dispose() self.summaryStateDisposable?.dispose() @@ -1074,6 +1076,9 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { activeCallInfo = nil } } + if self.leaving { + shouldJoin = false + } if shouldJoin, let callInfo = activeCallInfo { let callContext: OngoingGroupCallContext