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 | 31x 31x 31x 31x 31x 31x 31x 46x 46x 46x 46x 46x 31x 46x 46x 92x 46x 46x 46x 64x 46x 31x | import React, { FunctionComponent } from 'react';
import { withCheckout, CheckoutContextProps } from '../../checkout';
import { connectFormik, ConnectFormikProps } from '../../common/form';
import { Fieldset } from '../../ui/form';
import InstrumentStorageField from './InstrumentStorageField';
import InstrumentStoreAsDefaultField from './InstrumentStoreAsDefaultField';
interface StoreInstrumentFieldsetProps {
isAccountInstrument?: boolean;
instrumentId?: string;
}
interface WithStorageSettings {
showSave: boolean;
showSetAsDefault: boolean;
setAsDefaultEnabled: boolean;
}
type WithFormValues = ConnectFormikProps<{ shouldSaveInstrument: boolean }>;
const StoreInstrumentFieldset: FunctionComponent<
StoreInstrumentFieldsetProps & WithStorageSettings
> = ({
showSave,
showSetAsDefault,
isAccountInstrument = false,
setAsDefaultEnabled,
}) => (
<Fieldset>
{ showSave && (
<InstrumentStorageField isAccountInstrument={ isAccountInstrument } />
) }
{ showSetAsDefault && (
<InstrumentStoreAsDefaultField
disabled={ !setAsDefaultEnabled }
isAccountInstrument={ isAccountInstrument }
/>
) }
</Fieldset>
);
const mapToProps = (
context: CheckoutContextProps,
props: StoreInstrumentFieldsetProps & WithFormValues
): WithStorageSettings | null => {
const {
checkoutState: {
data: { getInstruments },
},
} = context;
const allInstruments = getInstruments();
const {
formik: {
values: { shouldSaveInstrument: saveIsChecked },
},
instrumentId,
} = props;
const addingNewInstrument = !instrumentId;
const hasAnyOtherInstruments = !!allInstruments && allInstruments.length > 0;
const instrument =
allInstruments &&
allInstruments.find(({ bigpayToken }) => bigpayToken === instrumentId);
return {
...props,
showSave: addingNewInstrument,
showSetAsDefault:
(addingNewInstrument && hasAnyOtherInstruments) || Boolean(instrument && !instrument.defaultInstrument),
setAsDefaultEnabled: !addingNewInstrument || saveIsChecked,
};
};
export default connectFormik(withCheckout(mapToProps)(StoreInstrumentFieldset));
|