/**
* External dependencies
*/
import type { EmptyObjectType } from '@woocommerce/types';
import { getSetting } from '@woocommerce/settings';
import {
PlainPaymentMethods,
PlainExpressPaymentMethods,
} from '@woocommerce/type-defs/payments';
* Internal dependencies
import { SavedPaymentMethod } from './types';
import { STATUS as PAYMENT_STATUS } from './constants';
export interface PaymentMethodDataState {
paymentStatuses: typeof PAYMENT_STATUS;
currentStatus: {
isPristine: boolean;
isStarted: boolean;
isProcessing: boolean;
isFinished: boolean;
hasError: boolean;
hasFailed: boolean;
isSuccessful: boolean;
isDoingExpressPayment: boolean;
};
activePaymentMethod: string;
activeSavedToken: string;
// Avilable payment methods are payment methods which have been validated and can make payment
availablePaymentMethods: PlainPaymentMethods;
availableExpressPaymentMethods: PlainExpressPaymentMethods;
savedPaymentMethods:
| Record< string, SavedPaymentMethod[] >
| EmptyObjectType;
paymentMethodData: Record< string, unknown >;
paymentMethodsInitialized: boolean;
expressPaymentMethodsInitialized: boolean;
shouldSavePaymentMethod: boolean;
isExpressPaymentMethodActive: boolean;
}
export const defaultPaymentMethodDataState: PaymentMethodDataState = {
paymentStatuses: PAYMENT_STATUS,
isPristine: true,
isStarted: false,
isProcessing: false,
isFinished: false,
hasError: false,
hasFailed: false,
isSuccessful: false,
isDoingExpressPayment: false,
},
activePaymentMethod: '',
activeSavedToken: '',
availablePaymentMethods: {},
availableExpressPaymentMethods: {},
savedPaymentMethods: getSetting<
Record< string, SavedPaymentMethod[] > | EmptyObjectType
>( 'customerPaymentMethods', {} ),
paymentMethodData: {},
paymentMethodsInitialized: false,
expressPaymentMethodsInitialized: false,
shouldSavePaymentMethod: false,
isExpressPaymentMethodActive: false,