woocommerce/plugins/woocommerce-admin/client/subscriptions/index.tsx

104 lines
2.5 KiB
TypeScript
Raw Normal View History

2022-04-26 05:22:01 +00:00
/**
* External dependencies
*/
import { __ } from '@wordpress/i18n';
import { createInterpolateElement, useState } from '@wordpress/element';
import { Button } from '@wordpress/components';
2022-04-26 05:37:32 +00:00
import { PLUGINS_STORE_NAME } from '@woocommerce/data';
import { useDispatch } from '@wordpress/data';
2022-04-27 00:18:11 +00:00
import { recordEvent } from '@woocommerce/tracks';
2022-04-26 05:22:01 +00:00
/**
* Internal dependencies
*/
import unconnectedImage from './subscriptions-empty-state-unconnected.svg';
import './style.scss';
2022-04-29 05:05:15 +00:00
declare global {
interface Window {
wcWcpaySubscriptions: {
newSubscriptionProductUrl: string;
onboardingUrl: string;
};
}
}
const {
newSubscriptionProductUrl,
onboardingUrl,
} = window.wcWcpaySubscriptions;
2022-04-26 05:22:01 +00:00
const TOS = () => (
<p className="wcpay-empty-subscriptions__tos">
{ createInterpolateElement(
__(
'By clicking "Get started", you agree to the <a>Terms of Service</a>',
'woocommerce-payments'
),
{
a: (
// eslint-disable-next-line jsx-a11y/anchor-has-content
<a
href="https://wordpress.com/tos/"
target="_blank"
rel="noreferrer"
/>
),
}
) }
</p>
);
const GetStartedButton = () => {
const [ isGettingStarted, setIsGettingStarted ] = useState( false );
2022-04-26 05:37:32 +00:00
const { installAndActivatePlugins } = useDispatch( PLUGINS_STORE_NAME );
2022-04-26 05:22:01 +00:00
return (
<div className="wcpay-empty-subscriptions__button_container">
<Button
disabled={ isGettingStarted }
isBusy={ isGettingStarted }
isPrimary
onClick={ () => {
2022-04-27 00:18:11 +00:00
setIsGettingStarted( true );
recordEvent(
'wccore_subscriptions_empty_state_get_started_click',
{}
);
2022-04-26 05:37:32 +00:00
installAndActivatePlugins( [ 'woocommerce-payments' ] )
.then( () => {
2022-04-29 05:05:15 +00:00
/*
* TODO:
* Navigate to either newSubscriptionProductUrl or onboardingUrl
* depending on the which treatment the user is assigned to.
*/
2022-04-26 05:37:32 +00:00
console.log( 'It was a success!' );
} )
.catch( ( error ) => {
// TODO: Handle erorr.
console.log( 'Oh no, there was an error!' );
} );
2022-04-26 05:22:01 +00:00
} }
>
{ __( 'Get started', 'woocommerce-payments' ) }
</Button>
</div>
);
};
2022-04-26 05:22:01 +00:00
const SubscriptionsPage = () => (
<div className="wcpay-empty-subscriptions__container">
<img src={ unconnectedImage } alt="" />
<p className="wcpay-empty-subscriptions__description">
{ __(
'Track recurring revenue and manage active subscriptions directly from your stores dashboard — powered by WooCommerce Payments.',
'woocommerce-payments'
) }
</p>
<TOS />
<GetStartedButton />
</div>
);
export default SubscriptionsPage;