Custom Header Links refuse l'URL Matrix

Lors de la mise à jour vers la version 3.4, le composant de thème « Custom Header links » a refusé de se mettre à jour en raison d’un lien Matrix comme https://matrix.to/#/#matrix-meta-chat:fedoraproject.org. Erreur : The property at JSON Pointer '/3/url' must be a valid URL.

Une fois ce lien supprimé, la mise à jour s’est déroulée sans problème, mais il était impossible de le rajouter.

(Solution de contournement : créer un permalien /matrix qui redirige vers https://matrix.to/#/#matrix-meta-chat:fedoraproject.org, puis ajouter /matrix comme lien d’en-tête personnalisé)

Néanmoins, il serait peut-être bon de rendre cela un peu plus flexible. Apparemment, le format du lien convient à un permalien.

3 « J'aime »

Le double # fait échouer la validation du paramètre d’objet dans le cœur (pas ce TC en soi).

mauvais URI (n'est pas un URI ?) : "https://matrix.to/#/#matrix-meta-chat:fedoraproject.org" (URI::InvalidURIError)

Ce n’est pas strictement un URI valide, vous devrez donc encoder le fragment.
Ici ; utiliser https://matrix.to/#/%23matrix-meta-chat:fedoraproject.org fonctionnera.

En regardant le code :
https://github.com/discourse/discourse/blob/main/lib/theme_settings_object_validator.rb#L191-L193
is_valid_url est défini ici :

Vous pouvez voir qu’ils ont déjà une autre fonction pour gérer cette situation et qu’elle est utilisée ailleurs :

Je pense qu’il est raisonnable d’utiliser relaxed_parse pour la validation de l’URL de l’objet de thème.
Par exemple : if validations&.dig(:url) && !UrlHelper.relaxed_parse?(value)

6 « J'aime »