49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
/**
|
|
* External dependencies
|
|
*/
|
|
import type { EmptyObjectType, PaymentResult } from '@woocommerce/types';
|
|
import { getSetting } from '@woocommerce/settings';
|
|
import {
|
|
PlainPaymentMethods,
|
|
PlainExpressPaymentMethods,
|
|
} from '@woocommerce/types';
|
|
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
import { SavedPaymentMethod } from './types';
|
|
import { STATUS as PAYMENT_STATUS } from './constants';
|
|
|
|
export interface PaymentState {
|
|
status: string;
|
|
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 >;
|
|
paymentResult: PaymentResult | null;
|
|
paymentMethodsInitialized: boolean;
|
|
expressPaymentMethodsInitialized: boolean;
|
|
shouldSavePaymentMethod: boolean;
|
|
}
|
|
|
|
export const defaultPaymentState: PaymentState = {
|
|
status: PAYMENT_STATUS.IDLE,
|
|
activePaymentMethod: '',
|
|
activeSavedToken: '',
|
|
availablePaymentMethods: {},
|
|
availableExpressPaymentMethods: {},
|
|
savedPaymentMethods: getSetting<
|
|
Record< string, SavedPaymentMethod[] > | EmptyObjectType
|
|
>( 'customerPaymentMethods', {} ),
|
|
paymentMethodData: {},
|
|
paymentResult: null,
|
|
paymentMethodsInitialized: false,
|
|
expressPaymentMethodsInitialized: false,
|
|
shouldSavePaymentMethod: false,
|
|
};
|