Fix campaign status change not persisting in UI

Use optimistic update pattern to immediately reflect status changes
in the UI, with rollback on API error.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
michael 2026-01-08 09:31:59 -06:00
parent 5d5bfd571b
commit abfcb6aae2

View file

@ -374,15 +374,23 @@ const App: React.FC = () => {
return;
}
const previousStatus = campaign.status;
const previousLastModified = campaign.lastModified;
// Optimistically update local state immediately
setCampaigns(prev => prev.map(p =>
p.name === campaignName ? { ...p, status: newStatus, lastModified: new Date().toISOString() } : p
));
try {
await apiService.updateCampaign(campaign._id, { status: newStatus });
// Optimistically update local state
setCampaigns(prev => prev.map(p =>
p.name === campaignName ? { ...p, status: newStatus, lastModified: new Date().toISOString().split('T')[0] } : p
));
} catch (error) {
console.error('Error updating campaign status:', error);
setError('Failed to update campaign status.');
// Rollback on error
setCampaigns(prev => prev.map(p =>
p.name === campaignName ? { ...p, status: previousStatus, lastModified: previousLastModified } : p
));
}
};