import { __ } from '@wordpress/i18n'; import type { Link, LinkStatusFilter } from '../api/types/links'; export type Problem = 'broken' | 'blocked' | 'moved'; export const PROBLEMS: readonly Problem[] = [ 'broken', 'blocked', 'moved' ]; export function problemOf( link: Pick< Link, 'verdict' > ): Problem { if ( link.verdict === 'blocked' || link.verdict === 'moved' ) { return link.verdict; } return 'broken'; } export function isFixable( link: Pick< Link, 'verdict' | 'ignored' > ): boolean { return ( ! link.ignored && PROBLEMS.some( ( problem ) => problem === link.verdict ) ); } export function isProblem( routeValue: string | undefined ): routeValue is Problem { return PROBLEMS.some( ( problem ) => problem === routeValue ); } export function toStatusFilter( routeValue: string | undefined ): LinkStatusFilter { if ( isProblem( routeValue ) ) { return routeValue; } return 'problems'; } export function problemLabel( problem: Problem ): string { switch ( problem ) { case 'blocked': return __( 'Could not check', 'aiplaz-link-checkup' ); case 'moved': return __( 'Moved', 'aiplaz-link-checkup' ); case 'broken': return __( 'Broken', 'aiplaz-link-checkup' ); } }