Volver a Hooks

useCampaignApproval

Descripción

Hook personalizado que gestiona la lógica de aprobación o rechazo de campañas publicitarias. Proporciona funciones para filtrar, listar y procesar las solicitudes de campañas pendientes o rechazadas.

Propiedades devueltas

activeSection

Sección activa actual ('solicitadas' | 'rechazadas')

setActiveSection

Función para cambiar la sección activa

campaigns

Array de campañas filtradas por el estado activo

isLoading

Estado de carga de los datos

handleApprove

Función para aprobar una campaña

handleReject

Función para rechazar una campaña

Ejemplo de uso


import { useCampaignApproval } from '@/hooks/useCampaignApproval';

const CampaignApprovalComponent = () => {
  const { 
    activeSection,
    setActiveSection,
    campaigns,
    isLoading,
    handleApprove,
    handleReject
  } = useCampaignApproval();

  return (
    <div>
      <div className="mb-4">
        <button onClick={() => setActiveSection('solicitadas')}>Solicitadas</button>
        <button onClick={() => setActiveSection('rechazadas')}>Rechazadas</button>
      </div>
      
      {isLoading ? (
        <p>Cargando...</p>
      ) : (
        <table>
          <thead>
            <tr>
              <th>Campaña</th>
              <th>Acciones</th>
            </tr>
          </thead>
          <tbody>
            {campaigns?.map((campaign) => (
              <tr key={campaign.campaign_id}>
                <td>{campaign.title}</td>
                <td>
                  {activeSection === 'solicitadas' && (
                    <>
                      <button onClick={() => handleApprove(campaign)}>
                        Aprobar
                      </button>
                      <button onClick={() => handleReject(campaign.campaign_id)}>
                        Rechazar
                      </button>
                    </>
                  )}
                </td>
              </tr>
            ))}
          </tbody>
        </table>
      )}
    </div>
  );
};
            

Flujo de datos

Diagrama de flujo de datos

Diagrama representativo del flujo de aprobación de campañas

1. Fetch de datos

Utiliza React Query para obtener campañas filtradas por estado.

2. Mutaciones

Dos mutaciones principales: approveCampaignMutation y rejectCampaignMutation.

3. Actualización de estado

Tras aprobar/rechazar, se invalida la caché de React Query para refrescar los datos.

4. Notificaciones

Utiliza el hook useToast para mostrar mensajes de éxito o error.