From 9c25677563e58cfc026c8a1d0275cdaa7fe2eb9b Mon Sep 17 00:00:00 2001 From: michael Date: Fri, 19 Dec 2025 10:00:23 -0600 Subject: [PATCH] Make Agency Lead field editable in campaign creation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add agencyLead state and form field to CreateCampaignModal - Remove disabled attribute and hardcoded value from Agency Lead input - Pass agency_lead to backend API when creating campaigns 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- frontend/App.tsx | 3 ++- frontend/components/CreateCampaignModal.tsx | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/frontend/App.tsx b/frontend/App.tsx index 5d6baa9..12b13f6 100755 --- a/frontend/App.tsx +++ b/frontend/App.tsx @@ -149,12 +149,13 @@ const App: React.FC = () => { } }, [campaignProofs, selectedCampaign, selectedProof]); - const handleAddNewCampaign = async (campaignData: { name: string; workfrontId: string; clientLead: string; brandGuidelines: string; }) => { + const handleAddNewCampaign = async (campaignData: { name: string; workfrontId: string; clientLead: string; agencyLead: string; brandGuidelines: string; }) => { try { const response = await apiService.createCampaign({ name: campaignData.name, workfront_id: campaignData.workfrontId, client_lead: campaignData.clientLead, + agency_lead: campaignData.agencyLead, brand_guidelines: campaignData.brandGuidelines, }); diff --git a/frontend/components/CreateCampaignModal.tsx b/frontend/components/CreateCampaignModal.tsx index 10a867b..bcfb24b 100755 --- a/frontend/components/CreateCampaignModal.tsx +++ b/frontend/components/CreateCampaignModal.tsx @@ -10,6 +10,7 @@ interface CreateCampaignModalProps { name: string; workfrontId: string; clientLead: string; + agencyLead: string; brandGuidelines: string; }) => void; brandGuidelines?: string[]; @@ -20,6 +21,7 @@ export const CreateCampaignModal: React.FC = ({ isOpen const [selectedBrandGuideline, setSelectedBrandGuideline] = useState(''); const [workfrontId, setWorkfrontId] = useState(''); const [clientLead, setClientLead] = useState(''); + const [agencyLead, setAgencyLead] = useState(''); const [error, setError] = useState(null); useEffect(() => { @@ -29,6 +31,7 @@ export const CreateCampaignModal: React.FC = ({ isOpen setSelectedBrandGuideline(''); setWorkfrontId(''); setClientLead(''); + setAgencyLead(''); setError(null); } }, [isOpen]); @@ -53,7 +56,7 @@ export const CreateCampaignModal: React.FC = ({ isOpen e.preventDefault(); const isIdValidOnSubmit = /^#WF_\d+$/.test(workfrontId); - if (!name.trim() || !clientLead.trim() || !workfrontId.trim() || !selectedBrandGuideline.trim()) { + if (!name.trim() || !clientLead.trim() || !agencyLead.trim() || !workfrontId.trim() || !selectedBrandGuideline.trim()) { return; } @@ -63,13 +66,13 @@ export const CreateCampaignModal: React.FC = ({ isOpen } setError(null); - onAddCampaign({ name, workfrontId, clientLead, brandGuidelines: selectedBrandGuideline }); + onAddCampaign({ name, workfrontId, clientLead, agencyLead, brandGuidelines: selectedBrandGuideline }); onClose(); }; if (!isOpen) return null; - const isFormInvalid = !name.trim() || !workfrontId.trim() || !clientLead.trim() || !selectedBrandGuideline.trim(); + const isFormInvalid = !name.trim() || !workfrontId.trim() || !clientLead.trim() || !agencyLead.trim() || !selectedBrandGuideline.trim(); return (
= ({ isOpen />
- + setAgencyLead(e.target.value)} + className="mt-1 block w-full p-2 border border-gray-300 rounded-md shadow-sm focus:ring-brand-accent focus:border-brand-accent transition bg-white text-gray-900" + required />