Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | 25x 25x 25x 3x 3x 2x 25x 8x 8x 8x | import { LanguageService } from '@bigcommerce/checkout-sdk'; import { memoize } from '@bigcommerce/memoize'; import { boolean, object, string, ObjectSchema } from 'yup'; export type checkoutcomCustomPaymentMethods = 'fawry' | 'sepa'; export type documentPaymentMethods = 'oxxo' | 'qpay' | 'boleto' | 'ideal'; export type checkoutcomPaymentMethods = documentPaymentMethods | checkoutcomCustomPaymentMethods; export interface CustomValidationSchemaOptions { paymentMethod: checkoutcomPaymentMethods; language: LanguageService; } export interface DocumentOnlyCustomFormFieldsetValues { ccDocument?: string; } export interface SepaCustomFormFieldsetValues { iban: string; sepaMandate: boolean; } export interface IdealCustomFormFieldsetValues { bic: string; } export interface FawryCustomFormFieldsetValues { customerMobile: string; customerEmail: string; } const checkoutComShemas: { [key in checkoutcomPaymentMethods]: (language: LanguageService) => {} } = { oxxo: (language: LanguageService) => ({ ccDocument: string() .required(language.translate('payment.checkoutcom_document_invalid_error_oxxo')) .length( 18, language.translate('payment.checkoutcom_document_invalid_error_oxxo') ), }), qpay: (language: LanguageService) => ({ ccDocument: string() .notRequired() .max( 32, language.translate('payment.checkoutcom_document_invalid_error_qpay') ), }), boleto: (language: LanguageService) => ({ ccDocument: string() .required(language.translate('payment.checkoutcom_document_invalid_error_boleto')) .min( 11, language.translate('payment.checkoutcom_document_invalid_error_boleto') ) .max( 14, language.translate('payment.checkoutcom_document_invalid_error_boleto') ), }), sepa: (language: LanguageService) => ({ iban: string() .required( language.translate('payment.sepa_account_number_required') ), sepaMandate: boolean() .required( language.translate('payment.sepa_mandate_required') ), }), ideal: (language: LanguageService) => ({ bic: string() .required( language.translate('payment.ideal_bic_required') ), }), fawry: (language: LanguageService) => ({ customerMobile: string() .required(language.translate('payment.checkoutcom_fawry_customer_mobile_invalid_error')) .matches( new RegExp(`^\\d{11}$`), language.translate('payment.checkoutcom_fawry_customer_mobile_invalid_error') ), customerEmail: string() .required(language.translate('payment.checkoutcom_fawry_customer_email_invalid_error')) .email( language.translate('payment.checkoutcom_fawry_customer_email_invalid_error') ), }), }; export default memoize(function getCheckoutcomValidationSchemas({ paymentMethod, language, }: CustomValidationSchemaOptions): ObjectSchema<DocumentOnlyCustomFormFieldsetValues | FawryCustomFormFieldsetValues | IdealCustomFormFieldsetValues | SepaCustomFormFieldsetValues> { return object(checkoutComShemas[paymentMethod](language)); }); |