import React from 'react';
import { __, sprintf } from '@wordpress/i18n';
import { useSettings } from 'data/settings/hooks';
import { settingsStore } from 'data/settings';
import { useSelect } from '@wordpress/data';

const ExternalInfo = () => {
	const { storeOwnerWpcomLogin, storeOwnerEmail, canManagePayments } =
		useSettings();
	const paymentMethods = useSelect( ( select ) => {
		return select( settingsStore ).getPaymentMethods();
	} );

	const selectedPaymentMethod = useSelect( ( select ) => {
		return select( settingsStore ).getSelectedPaymentMethod();
	} );

	if ( ! storeOwnerWpcomLogin ) {
		return null;
	}

	const selectedCard = paymentMethods.find(
		( method ) => method.payment_method_id === selectedPaymentMethod
	);
	if ( ! selectedCard ) {
		return null;
	}

	if ( canManagePayments ) {
		const extraInfo = sprintf(
			// translators: %1$s is the WordPress.com username, %2$s is the email address.
			__(
				'Credit cards are retrieved from the following WordPress.com account: %1$s <%2$s>',
				'woocommerce-shipping'
			),
			storeOwnerWpcomLogin,
			storeOwnerEmail
		);
		return <p className="wcshipping-settings__extras">{ extraInfo }</p>;
	}
	const cardDigits = selectedCard?.card_digits ?? '';
	const cardType = selectedCard?.card_type ?? '';
	const extraInfo = sprintf(
		// translators: %1$s is the credit card issuer, %2$s is the the last 4 digits of the card number, %3$s is the WordPress.com username.
		__(
			"We'll charge the credit card (%1$s **** %2$s) on the connected WordPress.com account (%3$s) to pay for the labels you purchase.",
			'woocommerce-shipping'
		),
		cardType,
		cardDigits,
		storeOwnerWpcomLogin
	);
	return <p className="wcshipping-settings__extras">{ extraInfo }</p>;
};

export default ExternalInfo;