import DriftDecision from '@/features/interventions/detail/DriftDecision';
import CodeTag from '@/features/interventions/detail/CodeTag';
import { resolvePageRef } from '@/features/interventions/detail/pageRef';

/**
 * Detail for the `optimizedescsingle` / `drift` intervention (type selection).
 *
 * The user changed a meta description after Flavio had set it; the scanner
 * noticed. Sibling of TitleDrift on the same shared DriftDecision.
 *
 * Contract metadata: `drift:{ description:{current,expected} }`.
 * userResponse: { choice:"keep_current" | "revert_to_expected" }.
 *
 * Defensive on metadata: every field is read with a fallback.
 */
const DescDrift = ({ intervention = {}, interventionId, onBack, onResolved }) => {
	const m = intervention.metadata || {};
	const drift = m.drift || {};
	const { pageLabel, pageUrl } = resolvePageRef(m);

	const description = drift.description || {};
	const changes = [
		{
			label: 'Meta description',
			current: description.current || '',
			expected: description.expected || '',
			renderValue: (v) => (
				<CodeTag
					before={'<meta name="description" content="'}
					after={'">'}
					value={v}
				/>
			),
		},
	];

	return (
		<DriftDecision
			interventionId={interventionId}
			onBack={onBack}
			onResolved={onResolved}
			heading="Your meta description changed"
			subtitle="You edited this after my last update. Tell me which version to keep going forward."
			pageLabel={pageLabel}
			pageUrl={pageUrl}
			changes={changes}
			keepDoneText="Got it. I'll keep your version and stop suggesting changes here."
			revertDoneText="Done. I'll restore my version shortly."
		/>
	);
};

export default DescDrift;
