diff --git a/frontend/App.tsx b/frontend/App.tsx index 12b13f6..e36b360 100755 --- a/frontend/App.tsx +++ b/frontend/App.tsx @@ -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 + )); } };