Custom Header Links rechaza URL de Matrix

Al actualizar a la versión 3.4, el componente temático de enlaces de encabezado personalizado se negó a actualizarse debido a un enlace de Matrix como https://matrix.to/#/#matrix-meta-chat:fedoraproject.org. Error: La propiedad en JSON Pointer '/3/url' debe ser una URL válida.

Una vez que se eliminó este enlace, la actualización se realizó correctamente, pero fue imposible volver a añadirlo.

(Solución alternativa: crear un permalink /matrix que redirija a https://matrix.to/#/#matrix-meta-chat:fedoraproject.org y luego añadir /matrix como enlace de encabezado personalizado)

Aun así, podría ser bueno hacerlo un poco más flexible. Al parecer, el formato del enlace es correcto para un permalink.

3 Me gusta

El doble # hace que la validación de la configuración del objeto falle en el núcleo (no en este TC en sí).

mal URI (¿no es URI?): "https://matrix.to/#/#matrix-meta-chat:fedoraproject.org" (URI::InvalidURIError)

No es estrictamente una URI válida, por lo que necesitarías codificar el fragmento.
Aquí, usar https://matrix.to/#/%23matrix-meta-chat:fedoraproject.org funcionará.

Mirando el código:
https://github.com/discourse/discourse/blob/main/lib/theme_settings_object_validator.rb#L191-L193
is_valid_url se define aquí:

Puedes ver que ya tienen otra función para lidiar con esta situación y se está utilizando en otros lugares:

Creo que es razonable usar relaxed_parse para la validación de URL del objeto de tema.
Por ejemplo: if validations&.dig(:url) && !UrlHelper.relaxed_parse?(value)

6 Me gusta