/**
* External dependencies
*/
import { __ } from '@wordpress/i18n';
import { Component } from '@wordpress/element';
import PropTypes from 'prop-types';
/**
* WooCommerce dependencies
*/
import { Link } from '@woocommerce/components';
/**
* Internal dependencies
*/
import { Button, ProductIcon } from '../../components';
import { recordEvent } from 'lib/tracks';
class InstalledExtensionRow extends Component {
constructor( props ) {
super( props );
this.onActivateClick = this.onActivateClick.bind( this );
this.onFinishSetupClick = this.onFinishSetupClick.bind( this );
}
getLinks() {
const { docsUrl, settingsUrl, supportUrl, dashboardUrl } = this.props;
const links = [];
if ( docsUrl ) {
links.push( {
key: 'docs',
href: docsUrl,
text: __( 'Docs', 'woocommerce-admin' ),
} );
}
if ( supportUrl ) {
links.push( {
key: 'support',
href: supportUrl,
text: __( 'Get support', 'woocommerce-admin' ),
} );
}
if ( settingsUrl ) {
links.push( {
key: 'settings',
href: settingsUrl,
text: __( 'Settings', 'woocommerce-admin' ),
} );
}
if ( dashboardUrl ) {
links.push( {
key: 'dashboard',
href: dashboardUrl,
text: __( 'Dashboard', 'woocommerce-admin' ),
} );
}
return (
{ links.map( ( link ) => {
return (
-
{ link.text }
)
} ) }
)
}
onLinkClick( link ) {
const { name } = this.props;
recordEvent( 'marketing_installed_options', { name, link: link.key } );
}
onActivateClick() {
const { activatePlugin, name } = this.props;
recordEvent( 'marketing_installed_activate', { name } );
activatePlugin();
}
onFinishSetupClick() {
const { name } = this.props;
recordEvent( 'marketing_installed_finish_setup', { name } );
}
getActivateButton() {
const { isLoading } = this.props;
return (
)
}
getFinishSetupButton() {
return (
)
}
render() {
const { name, description, status, icon } = this.props;
let actions = null;
switch ( status ) {
case 'installed':
actions = this.getActivateButton();
break;
case 'activated':
actions = this.getFinishSetupButton();
break;
case 'configured':
actions = this.getLinks();
break;
}
return (
{ name }
{ status === 'configured' || (
{ description }
) }
{ actions }
)
}
}
InstalledExtensionRow.defaultProps = {
isLoading: false,
};
InstalledExtensionRow.propTypes = {
name: PropTypes.string.isRequired,
slug: PropTypes.string.isRequired,
description: PropTypes.string.isRequired,
status: PropTypes.string.isRequired,
settingsUrl: PropTypes.string,
docsUrl: PropTypes.string,
supportUrl: PropTypes.string,
dashboardUrl: PropTypes.string,
activatePlugin: PropTypes.func.isRequired,
};
export default InstalledExtensionRow;