code-review-fix task 12.7: add hasLoaded flag to TalibPatternPanel to prevent re-fetch on empty array

This commit is contained in:
Marko Djordjevic 2026-02-18 20:39:53 +01:00
parent e8b8bbb56f
commit a4bb3efa70

View file

@ -1,6 +1,6 @@
'use client';
import { useState, useEffect, useCallback } from 'react';
import { useState, useEffect, useCallback, useRef } from 'react';
import { ChevronDown, Trash2 } from 'lucide-react';
interface PatternInfo {
@ -33,21 +33,23 @@ export default function TalibPatternPanel({
const [results, setResults] = useState<DetectionResult[]>([]);
const [deletingLabel, setDeletingLabel] = useState<string | null>(null);
const [isDeletingAll, setIsDeletingAll] = useState(false);
const hasLoaded = useRef(false);
// Fetch available patterns when panel expands
useEffect(() => {
if (expanded && patterns.length === 0) {
if (expanded && !hasLoaded.current) {
setIsFetchingPatterns(true);
fetch('/api/patterns/available')
.then((r) => r.json())
.then((data) => {
const list: PatternInfo[] = data.patterns || data;
setPatterns(list);
hasLoaded.current = true;
})
.catch(() => setError('Failed to load patterns'))
.finally(() => setIsFetchingPatterns(false));
}
}, [expanded, patterns.length]);
}, [expanded]);
const handleSelectAll = () => {
setSelectedPatterns(new Set(patterns.map((p) => p.function_name)));