import { useState, useEffect } from 'react'; import { Persona } from '@/types/persona'; import { personasApi } from '@/lib/api'; import { toast } from 'sonner'; export const GENERATED_PERSONAS_KEY = 'ai-recruiter-generated-personas'; export function usePersonaStorage() { const [storedPersonas, setStoredPersonas] = useState([]); const savePersonas = async (personas: Persona[]) => { const savedPersonas = []; for (const persona of personas) { // Clean up any local-specific properties before sending to API const personaToSave = { ...persona }; if (personaToSave._id && typeof personaToSave._id === 'string' && personaToSave._id.startsWith('local-')) { delete personaToSave._id; } const result = await personasApi.create(personaToSave); console.log('Persona saved to database:', result.data); // Add the database ID to the persona savedPersonas.push({ ...persona, id: result.data._id || result.data.id, _id: result.data._id || result.data.id, isDbPersona: true }); } setStoredPersonas(savedPersonas); }; const loadPersonas = async (): Promise => { const response = await personasApi.getAll(); if (response && response.data && Array.isArray(response.data)) { console.log('Personas loaded from database:', response.data.length); return response.data.map(p => ({ ...p, id: p._id || p.id, isDbPersona: true })); } return []; }; // Load personas from database or localStorage on component mount useEffect(() => { const fetchPersonas = async () => { const personas = await loadPersonas(); setStoredPersonas(personas); }; fetchPersonas(); }, []); const clearPersonas = async () => { // Clear all personas from database const personas = await loadPersonas(); for (const persona of personas) { if (persona._id) { await personasApi.delete(persona._id); } } setStoredPersonas([]); }; return { storedPersonas, savePersonas, loadPersonas, clearPersonas }; }