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:
parent
ebfcd60c71
commit
8220955cd4
1 changed files with 23 additions and 5 deletions
|
|
@ -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.`);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue