import getRedirectUrl from '@automattic/jetpack-components/tools/jp-redirect';
import { useSelect } from '@wordpress/data';
import { createInterpolateElement, type Element } from '@wordpress/element';
import { __, sprintf } from '@wordpress/i18n';
/**
* Internal dependencies
*/
import { STORE_NAME } from '../store/index.ts';
/**
* Types
*/
import type { Selectors } from '../store/types.ts';
const useFairUsageNoticeMessage = (): Element => {
const { usagePeriod } = useSelect( select => {
const selectors: Selectors = select( STORE_NAME );
return {
usagePeriod: selectors.getAiAssistantFeature().nextTier,
};
}, [] );
const getFormattedUsagePeriodStartDate = planUsagePeriod => {
if ( ! planUsagePeriod?.nextStart ) {
return null;
}
const nextUsagePeriodStartDate = new Date( planUsagePeriod.nextStart );
return (
nextUsagePeriodStartDate.toLocaleString( 'default', { month: 'long' } ) +
' ' +
nextUsagePeriodStartDate.getDate()
);
};
const getFairUsageNoticeMessage = resetDateString => {
const fairUsageMessage = __(
"You've reached this month's request limit, per our fair usage policy.",
'jetpack-ai-client'
);
if ( ! resetDateString ) {
return fairUsageMessage;
}
// Translators: %s is the date when the requests will reset.
const dateMessage = __( 'Requests will reset on %s.', 'jetpack-ai-client' );
const formattedDateMessage = sprintf( dateMessage, resetDateString );
return `${ fairUsageMessage } ${ formattedDateMessage }`;
};
const nextUsagePeriodStartDateString = getFormattedUsagePeriodStartDate( usagePeriod );
// Get the proper template based on the presence of the next usage period start date.
const fairUsageNoticeMessage = getFairUsageNoticeMessage( nextUsagePeriodStartDateString );
const upgradeInfoUrl = getRedirectUrl( 'ai-logo-generator-fair-usage-policy', {
anchor: 'jetpack-ai-usage-limit',
} );
const fairUsageNoticeMessageElement = createInterpolateElement( fairUsageNoticeMessage, {
link: ,
span: ,
} );
return fairUsageNoticeMessageElement;
};
export default useFairUsageNoticeMessage;