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:
parent
5d5bfd571b
commit
abfcb6aae2
1 changed files with 12 additions and 4 deletions
|
|
@ -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
|
||||
));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue