Tu privacidad es importante

    Utilizamos cookies para mejorar tu experiencia, mostrar contenido personalizado y analizar el tráfico del sitio. Para más información, visita nuestra política de cookies.

    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.