import { __, sprintf } from '@wordpress/i18n'; import type { Frequency, Job, JobId } from '../../shared/api/types/jobs'; import { formatNumber } from '../../shared/lib/numbers'; import { linksPhrase } from '../../shared/text/countedPhrases'; import type { IconName } from '../../shared/ui/Icon'; export function jobIcon( jobId: JobId ): IconName { switch ( jobId ) { case 'check': return 'link'; case 'full': return 'scan'; case 'mail': return 'mail'; case 'tidy': return 'tidy'; } } export function jobDescription( jobId: JobId ): string { switch ( jobId ) { case 'check': return __( 'Checks a small batch of links.', 'aiplaz-link-checkup' ); case 'full': return __( 'Looks at every link on the site.', 'aiplaz-link-checkup' ); case 'mail': return __( 'Sends you the new broken links.', 'aiplaz-link-checkup' ); case 'tidy': return __( 'Deletes old results to keep the database small.', 'aiplaz-link-checkup' ); } } export function frequencyLabel( frequency: Frequency ): string { switch ( frequency ) { case 'minute': return __( 'Every minute', 'aiplaz-link-checkup' ); case '5_minutes': return __( 'Every 5 minutes', 'aiplaz-link-checkup' ); case '15_minutes': return __( 'Every 15 minutes', 'aiplaz-link-checkup' ); case 'nightly': return __( 'Every night', 'aiplaz-link-checkup' ); case 'daily': return __( 'Every day', 'aiplaz-link-checkup' ); case 'weekly': return __( 'Every week', 'aiplaz-link-checkup' ); case 'monthly': return __( 'Every month', 'aiplaz-link-checkup' ); case 'never': return __( 'Never', 'aiplaz-link-checkup' ); } } export function jobLastResult( job: Job ): string { if ( job.last_count === null ) { return __( 'Has not run yet', 'aiplaz-link-checkup' ); } const count = formatNumber( job.last_count ); switch ( job.id ) { case 'mail': return sprintf( /* translators: %s: number of new broken links */ __( 'Sent, %s new broken links', 'aiplaz-link-checkup' ), count ); case 'tidy': return sprintf( /* translators: %s: number of old results */ __( '%s old results removed', 'aiplaz-link-checkup' ), count ); case 'check': case 'full': return sprintf( /* translators: %s: number of links, for example "3 links" */ __( '%s checked', 'aiplaz-link-checkup' ), linksPhrase( job.last_count ) ); } }