Fix audit entry click navigation for Oversight Admin

handleNavigateToAuditedItem silently failed because campaignProofs are
loaded lazily (only when viewing a campaign), and errors went to a
setError() state that was never rendered. Now the function fetches and
caches proofs on demand when not already loaded, and uses alert() for
visible error messages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
michael 2026-02-22 08:03:55 -06:00
parent ebfcd60c71
commit 8220955cd4

View file

@ -802,20 +802,38 @@ const AppContent: React.FC<{ msalInstance: any }> = ({ msalInstance }) => {
};
const handleNavigateToAuditedItem = (item: { campaignName: string; proofName: string; version: number }) => {
const proofToSelect = campaignProofs[item.campaignName]?.find(a => a.proofName === item.proofName);
const handleNavigateToAuditedItem = async (item: { campaignName: string; proofName: string; version: number }) => {
// Use cached proofs or fetch from API (e.g. Oversight Admin going straight to Auditing)
let proofs = campaignProofs[item.campaignName];
if (!proofs) {
const campaign = campaigns.find(c => c.name === item.campaignName);
if (!campaign?._id) {
alert(`Campaign "${item.campaignName}" not found. It may have been deleted.`);
return;
}
try {
const rawProofs = await apiService.getProofs(campaign._id);
proofs = rawProofs.map(p => apiService.convertProofToFrontend(p));
setCampaignProofs(prev => ({ ...prev, [item.campaignName]: proofs! }));
} catch (error) {
console.error('Failed to load proofs for campaign:', item.campaignName, error);
alert('Failed to load proofs. Please try again.');
return;
}
}
const proofToSelect = proofs.find(a => a.proofName === item.proofName);
if (proofToSelect) {
const versionExists = proofToSelect.versions.some((v: any) => v.version === item.version);
if (versionExists) {
setSelectedCampaign(item.campaignName);
// Add a temporary property to the proof object to indicate which version to show.
setSelectedProof({ ...proofToSelect, initialVersion: item.version });
setCurrentView('Campaigns');
} else {
setError(`Version ${item.version} not found for proof ${item.proofName}. It may have been deleted.`);
alert(`Version ${item.version} not found for proof "${item.proofName}". It may have been deleted.`);
}
} else {
setError(`Proof ${item.proofName} not found in campaign ${item.campaignName}. It may have been deleted.`);
alert(`Proof "${item.proofName}" not found in campaign "${item.campaignName}". It may have been deleted.`);
}
};