Various fixes

This commit is contained in:
Ilya Laktyushin 2022-07-25 00:08:32 +03:00
parent 55215a7304
commit 3f9f29b7fb
2 changed files with 14 additions and 8 deletions

View File

@ -810,9 +810,9 @@ final class BotCheckoutControllerNode: ItemListControllerNode, PKPaymentAuthoriz
} }
} }
let openNewCard: () -> Void = { [weak self] in let openNewCard: (String?) -> Void = { [weak self] customUrl in
if let strongSelf = self, let paymentForm = strongSelf.paymentFormValue { if let strongSelf = self, let paymentForm = strongSelf.paymentFormValue {
if let nativeProvider = paymentForm.nativeProvider, nativeProvider.name == "stripe" { if customUrl == nil, let nativeProvider = paymentForm.nativeProvider, nativeProvider.name == "stripe" {
guard let paramsData = nativeProvider.params.data(using: .utf8) else { guard let paramsData = nativeProvider.params.data(using: .utf8) else {
return return
} }
@ -891,7 +891,7 @@ final class BotCheckoutControllerNode: ItemListControllerNode, PKPaymentAuthoriz
controller?.dismiss() controller?.dismiss()
} }
strongSelf.present(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) strongSelf.present(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet))
} else if let nativeProvider = paymentForm.nativeProvider, nativeProvider.name == "smartglocal" { } else if customUrl == nil, let nativeProvider = paymentForm.nativeProvider, nativeProvider.name == "smartglocal" {
guard let paramsData = nativeProvider.params.data(using: .utf8) else { guard let paramsData = nativeProvider.params.data(using: .utf8) else {
return return
} }
@ -961,7 +961,7 @@ final class BotCheckoutControllerNode: ItemListControllerNode, PKPaymentAuthoriz
strongSelf.present(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) strongSelf.present(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet))
} else { } else {
var dismissImpl: (() -> Void)? var dismissImpl: (() -> Void)?
let controller = BotCheckoutWebInteractionController(context: context, url: paymentForm.url, intent: .addPaymentMethod({ [weak self] token in let controller = BotCheckoutWebInteractionController(context: context, url: customUrl ?? paymentForm.url, intent: .addPaymentMethod({ [weak self] token in
dismissImpl?() dismissImpl?()
guard let strongSelf = self else { guard let strongSelf = self else {
@ -1060,12 +1060,14 @@ final class BotCheckoutControllerNode: ItemListControllerNode, PKPaymentAuthoriz
strongSelf.controller?.view.endEditing(true) strongSelf.controller?.view.endEditing(true)
let methods = availablePaymentMethods(form: paymentForm, current: strongSelf.currentPaymentMethod) let methods = availablePaymentMethods(form: paymentForm, current: strongSelf.currentPaymentMethod)
if methods.isEmpty { if methods.isEmpty {
openNewCard() openNewCard(nil)
} else { } else {
strongSelf.present(BotCheckoutPaymentMethodSheetController(context: strongSelf.context, currentMethod: strongSelf.currentPaymentMethod, methods: methods, applyValue: { method in strongSelf.present(BotCheckoutPaymentMethodSheetController(context: strongSelf.context, currentMethod: strongSelf.currentPaymentMethod, methods: methods, applyValue: { method in
applyPaymentMethod(method) applyPaymentMethod(method)
}, newCard: { }, newCard: {
openNewCard() openNewCard(nil)
}, otherMethod: { url in
openNewCard(url)
}), ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) }), ViewControllerPresentationArguments(presentationAnimation: .modalSheet))
} }
} }

View File

@ -39,7 +39,7 @@ enum BotCheckoutPaymentMethod: Equatable {
final class BotCheckoutPaymentMethodSheetController: ActionSheetController { final class BotCheckoutPaymentMethodSheetController: ActionSheetController {
private var presentationDisposable: Disposable? private var presentationDisposable: Disposable?
init(context: AccountContext, currentMethod: BotCheckoutPaymentMethod?, methods: [BotCheckoutPaymentMethod], applyValue: @escaping (BotCheckoutPaymentMethod) -> Void, newCard: @escaping () -> Void) { init(context: AccountContext, currentMethod: BotCheckoutPaymentMethod?, methods: [BotCheckoutPaymentMethod], applyValue: @escaping (BotCheckoutPaymentMethod) -> Void, newCard: @escaping () -> Void, otherMethod: @escaping (String) -> Void) {
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let strings = presentationData.strings let strings = presentationData.strings
@ -82,7 +82,11 @@ final class BotCheckoutPaymentMethodSheetController: ActionSheetController {
value = nil value = nil
} }
items.append(BotCheckoutPaymentMethodItem(title: title, icon: icon, value: value, action: { [weak self] _ in items.append(BotCheckoutPaymentMethodItem(title: title, icon: icon, value: value, action: { [weak self] _ in
applyValue(method) if case let .other(method) = method {
otherMethod(method.url)
} else {
applyValue(method)
}
self?.dismissAnimated() self?.dismissAnimated()
})) }))
} }