Spaces:
Sleeping
Sleeping
| import { useState, useCallback } from 'react'; | |
| const HISTORY_KEY = 'cattle_classifier_history'; | |
| const MAX_HISTORY = 20; | |
| export function usePredictionHistory() { | |
| const [history, setHistory] = useState(() => { | |
| try { | |
| const stored = localStorage.getItem(HISTORY_KEY); | |
| return stored ? JSON.parse(stored) : []; | |
| } catch { | |
| return []; | |
| } | |
| }); | |
| const addPrediction = useCallback((prediction, imagePreview) => { | |
| const entry = { | |
| id: Date.now(), | |
| timestamp: new Date().toISOString(), | |
| predictedBreed: prediction.predicted_breed, | |
| confidence: prediction.confidence, | |
| topK: prediction.top_k, | |
| imagePreview: imagePreview?.substring(0, 200), // Truncate for storage | |
| }; | |
| setHistory(prev => { | |
| const updated = [entry, ...prev].slice(0, MAX_HISTORY); | |
| try { | |
| localStorage.setItem(HISTORY_KEY, JSON.stringify(updated)); | |
| } catch { /* Storage full */ } | |
| return updated; | |
| }); | |
| }, []); | |
| const clearHistory = useCallback(() => { | |
| setHistory([]); | |
| localStorage.removeItem(HISTORY_KEY); | |
| }, []); | |
| return { history, addPrediction, clearHistory }; | |
| } | |