import {Component, Fragment} from 'react'; import moment from 'moment-timezone'; import type { AdminConfirmParams, AdminConfirmRenderProps, } from 'admin/components/adminConfirmationModal'; import type {Subscription} from 'getsentry/types'; type Props = AdminConfirmRenderProps & { subscription: Subscription; }; type State = { applyBalance: boolean; cancelAtPeriodEnd: boolean; }; /** * Rendered as part of a openAdminConfirmModal call */ class CancelSubscriptionAction extends Component { state: State = { cancelAtPeriodEnd: true, applyBalance: true, }; componentDidMount() { this.props.setConfirmCallback(this.handleConfirm); } handleConfirm = (params: AdminConfirmParams) => { const {applyBalance, cancelAtPeriodEnd} = this.state; this.props.onConfirm?.({cancelAtPeriodEnd, applyBalance, ...params}); }; render() { const {subscription} = this.props; const options: Array<[boolean, string, string]> = [ [false, 'Immediately', 'End the subscription immediately.'], [ true, `At period end (${moment(subscription.contractPeriodEnd).format('ll')})`, 'End the subscription at the end of the current contract period.', ], ]; return ( {options.map(([enabled, label, help]) => (
{enabled ? null : ( )}
))}
); } } export default CancelSubscriptionAction;