DEV Community

Gerardo Andrés Ruiz Castillo
Gerardo Andrés Ruiz Castillo

Posted on • Originally published at geanruca.gitvlg.com

Manejo de Errores y Prevención de Publicaciones Duplicadas en devlog-ist/landing

Introducción

En el proyecto devlog-ist/landing, que permite a los usuarios publicar contenido en diversas plataformas, se ha trabajado en mejorar la robustez del sistema y prevenir problemas comunes relacionados con la publicación de contenido.

El Desafío

El sistema presentaba dos problemas principales:

  1. Errores 500 al alcanzar el límite diario de publicaciones: Cuando un usuario intentaba publicar más contenido del permitido en un día, el sistema respondía con un error 500 genérico, lo cual no era informativo ni amigable.
  2. Publicaciones duplicadas: En ciertas ocasiones, el sistema programaba publicaciones y, al mismo tiempo, el usuario intentaba publicar el mismo contenido de forma inmediata, resultando en una doble publicación.

La Solución

Para abordar estos problemas, se implementaron las siguientes soluciones:

  1. Manejo de DailyPostLimitReachedException: Se capturó la excepción DailyPostLimitReachedException en todas las acciones de publicación (LinkedIn, Dev.to, individual y masiva). En lugar de mostrar un error 500, se muestra una notificación traducida al idioma del usuario, indicando que ha alcanzado su límite diario de publicaciones.

    try {
        // Lógica de publicación
    } catch (DailyPostLimitReachedException $e) {
        // Mostrar notificación traducida
        echo __('daily_publish_limit_reached');
    }
    
  2. Cancelación de publicaciones programadas pendientes: Al publicar contenido de forma inmediata, se cancelan los registros de ScheduledPost pendientes para evitar la doble publicación desde la cola de programación.

    // Cancelar publicaciones programadas pendientes
    ScheduledPost::where('post_id', $postId)->delete();
    

Decisiones Clave

  1. Traducciones: Se agregaron traducciones para el mensaje daily_publish_limit_reached en los cuatro idiomas soportados (inglés, español, francés y alemán).
  2. Robustez: Manejar la excepción específica mejora la experiencia del usuario al proporcionar información clara sobre el problema.
  3. Prevención: Cancelar las publicaciones programadas evita la duplicación de contenido, manteniendo la integridad del sistema.

Resultados

  • Se eliminaron los errores 500 relacionados con el límite diario de publicaciones, mejorando la experiencia del usuario.
  • Se previnieron las publicaciones duplicadas, asegurando que el contenido se publique solo una vez.

Lecciones Aprendidas

Es crucial manejar las excepciones específicas en lugar de depender de errores genéricos. Además, la prevención de problemas a través de la cancelación de tareas redundantes puede mejorar significativamente la fiabilidad del sistema.

Top comments (0)