From c7f2760abd2328ba9a4948a15c1cb1cca70eed47 Mon Sep 17 00:00:00 2001 From: azeeee05 Date: Tue, 1 Sep 2026 11:01:27 +0530 Subject: [PATCH] feat: implement AddPolicyEngine component for dynamic policy creation and rule management --- .../components/AddPolicyEngine.tsx | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/app/policyEngine/components/AddPolicyEngine.tsx b/src/app/policyEngine/components/AddPolicyEngine.tsx index ce5126d..2d92e59 100644 --- a/src/app/policyEngine/components/AddPolicyEngine.tsx +++ b/src/app/policyEngine/components/AddPolicyEngine.tsx @@ -822,8 +822,8 @@ export default function AddPolicyEngine() { // ─── Handlers ────────────────────────────────────────────────────────────── // Returns the lowest priority (1-10) not already used by an existing rule. - const findFreePriority = () => { - const taken = rules.map(r => r.priority); + const findFreePriority = (currentRules: Rule[]) => { + const taken = currentRules.map(r => r.priority); for (let p = 1; p <= 10; p++) { if (!taken.includes(p)) return p; } @@ -831,21 +831,21 @@ export default function AddPolicyEngine() { }; const handleAddRule = () => { - setRules([...rules, { + setRules(prevRules => [...prevRules, { id: crypto.randomUUID(), category: '', - priority: findFreePriority(), + priority: findFreePriority(prevRules), conditions: [{ id: crypto.randomUUID(), condition: '', operator: '', value: '', logic: 'AND' }], actions: [{ id: crypto.randomUUID(), actionCategoryId: '', actionTypeId: '', logic: 'AND', fieldValues: {} }] }]); }; const handleDeleteRule = (ruleId: string) => { - setRules(rules.filter(r => r.id !== ruleId)); + setRules(prevRules => prevRules.filter(r => r.id !== ruleId)); }; const handleUpdateRule = (ruleId: string, updates: Partial) => { - setRules(rules.map(r => r.id === ruleId ? { ...r, ...updates } : r)); + setRules(prevRules => prevRules.map(r => r.id === ruleId ? { ...r, ...updates } : r)); }; // Priorities used by every OTHER rule — a rule may never land on one of these. @@ -871,7 +871,7 @@ export default function AddPolicyEngine() { }; const handleAddCondition = (ruleId: string) => { - setRules(rules.map(r => { + setRules(prevRules => prevRules.map(r => { if (r.id === ruleId) { return { ...r, @@ -883,7 +883,7 @@ export default function AddPolicyEngine() { }; const handleUpdateCondition = (ruleId: string, conditionId: string, updates: Partial) => { - setRules(rules.map(r => { + setRules(prevRules => prevRules.map(r => { if (r.id === ruleId) { return { ...r, @@ -895,7 +895,7 @@ export default function AddPolicyEngine() { }; const handleDeleteCondition = (ruleId: string, conditionId: string) => { - setRules(rules.map(r => { + setRules(prevRules => prevRules.map(r => { if (r.id === ruleId) { return { ...r, conditions: r.conditions.filter(c => c.id !== conditionId) }; } @@ -904,7 +904,7 @@ export default function AddPolicyEngine() { }; const handleAddAction = (ruleId: string) => { - setRules(rules.map(r => { + setRules(prevRules => prevRules.map(r => { if (r.id === ruleId) { return { ...r, @@ -916,7 +916,7 @@ export default function AddPolicyEngine() { }; const handleUpdateAction = (ruleId: string, actionId: string, updates: Partial) => { - setRules(rules.map(r => { + setRules(prevRules => prevRules.map(r => { if (r.id === ruleId) { return { ...r, @@ -928,7 +928,7 @@ export default function AddPolicyEngine() { }; const handleDeleteAction = (ruleId: string, actionId: string) => { - setRules(rules.map(r => { + setRules(prevRules => prevRules.map(r => { if (r.id === ruleId) { return { ...r, actions: r.actions.filter(a => a.id !== actionId) }; }