Nombre de archivo ICS indefinido

:information_source: Resumen

Al hacer clic en “Añadir al calendario” en la ventana modal de vista previa del evento (la que aparece después de hacer clic en la fecha del evento):

el archivo .ics descargado se nombra undefined.ics y el título del evento dentro del archivo del calendario también se establece en SUMMARY:undefined. Sin embargo, descargar el calendario a través de la opción “Añadir al calendario” desde el menú de 3 puntos del evento funciona como se esperaba, utilizando el título del evento tanto para el nombre del archivo como para el resumen del calendario.

:walking_woman: Pasos para reproducir

  1. Crear o abrir un tema con un evento
  2. Hacer clic en la fecha del evento que se muestra en la publicación para expandir la ventana modal de vista previa
  3. En la ventana modal, hacer clic en Añadir al calendario
  4. Guardar el archivo .ics generado.
  5. Opcionalmente, comparar haciendo clic en el menú de 3 puntos del evento y utilizando “Añadir al calendario” desde allí

:white_check_mark: Resultados esperados

  • El archivo .ics descargado debe nombrarse según el título del evento
  • El contenido del archivo del calendario debe tener un SUMMARY: correcto con el título del evento

:x: Resultados observados

  • El archivo descargado se nombra undefined.ics
  • El título del evento en el archivo del calendario es SUMMARY:undefined
  • (Cuando se descarga desde el menú de 3 puntos, tanto el nombre del archivo como el resumen son correctos).

:books: Contexto adicional

  • Ejemplo de contenido ICS mal formado:
    BEGIN:VCALENDAR
    VERSION:2.0
    PRODID:-//Discourse//EN
    BEGIN:VEVENT
    UID:1762794000000_1762801200000
    DTSTAMP:20251105T173754Z
    DTSTART:20251110T170000Z
    DTEND:20251110T190000Z
    SUMMARY:undefined
    END:VEVENT
    END:VCALENDAR
    

Probado en Meta y varios otros sitios de Discourse, mismo resultado.

3 Me gusta

Este es un caso complicado, Dax, que es un efecto secundario de nuestro pipeline.

Generamos el bbcode para las fechas aquí:

Y lo procesamos aquí:

Por lo tanto, en el contexto del fragmento de HTML procesado, la opción “descargar ics” no tiene conocimiento de la publicación en la que se encuentra (o del evento).

También tenemos un pipeline diferente para la generación de ics en:

Así que necesitamos decidir desde una perspectiva de ingeniería si:

  1. Enseñamos al “procesamiento de fechas” cómo redirigir la generación de ics a Discourse Calendar.

O

  1. Proporcionamos suficiente contexto a Discourse Local Dates para que pueda generar el ics de forma independiente y mantener el código fragmentado.

No estoy seguro de cuál es la acción correcta a tomar aquí, pero la he priorizado para que el equipo pueda clasificarla y resolverla.

5 Me gusta

Hola a ambos, para añadir algo de contexto, si haces clic en los tres puntos de un evento, hay una opción de Añadir al calendario y esta funciona. No sé si eso puede ayudarles a investigar esto, pero parece que ya se ha resuelto en otra parte del código.

6 Me gusta

Hay MUCHO aquí:

Es viernes (al menos en algún lugar ;p ) así que esperaré hasta el lunes para fusionar.

Este cambio es increíblemente extenso y debería darnos un soporte ICS significativamente mejor.

  • Unifica el pipeline para la generación de ICS: solo usamos un mecanismo tanto para agregar al calendario como para hacer clic en las fechas.
  • Corrige muchos pequeños matices en el formato ics
    • Pasamos RRULE, así que si tomas un evento recurrente
    • Saltos de línea CRLF adecuados y cumplimiento general del formato ICS
    • Soporte de zona horaria, de modo que cuando tomes un ICS para un evento, señalará la zona horaria correcta en lugar de ser un evento UTC; esto significa que la recurrencia funcionará.
  • Expande el formato de fechas locales para admitir un ics codificado opcionalmente.

Una pregunta abierta que tengo es sí, rrule o no, rrule.

Si haces clic aquí:

¿Tenemos la intención de agregar el evento recurrente? ¿O solo una instancia del evento?

De manera similar, ¿qué pasa aquí?

@lindsey Estoy indeciso aquí, puedo ver argumentos para ambos lados.

  1. Hice clic en un evento recurrente y quería agregar la recurrencia a mi calendario.

O

  1. Hice clic en una INSTANCIA de una recurrencia y solo quiero agregarla.

Implementé (1) porque tiendo a sentir que es más correcto, pero estoy abierto a cambiarlo a 2 si lo prefieres.

7 Me gusta

Se fusionó una publicación en un tema existente: La página de próximos eventos se rompió después de la actualización reciente

Puedo entender el argumento en cualquier dirección, pero yo también prefiero el 1. Creo que es más correcto y más fácil de “arreglar” si no era lo que el usuario quería, porque la mayoría de los programas de calendario facilitan la eliminación de eventos adicionales con una sola acción (como Google Calendar):

Así que la molestia de:

  • No quería confirmar mi asistencia a todos los eventos, así que necesito eliminar los adicionales

Es mucho menor que la molestia de:

  • quería confirmar mi asistencia a todos los eventos, así que necesito volver aquí cada semana y asegurarme de seguir añadiéndolos a mi calendario
5 Me gusta

Genial, me quedé con la confirmación de asistencia a todos.

Se fusionó hoy :confetti_ball:

5 Me gusta

Este tema se cerró automáticamente después de 4 días. Ya no se permiten más respuestas.