Custom Header Links rifiuta l'URL di Matrix

Durante l’aggiornamento alla versione 3.4, il componente del tema “Custom Header links” si è rifiutato di aggiornarsi a causa di un link Matrix come https://matrix.to/#/#matrix-meta-chat:fedoraproject.org. Errore: The property at JSON Pointer '/3/url' must be a valid URL.

Una volta rimosso questo link, l’aggiornamento è andato a buon fine, ma è stato impossibile aggiungere nuovamente il link.

(Soluzione alternativa: creare un permalink /matrix che reindirizza a https://matrix.to/#/#matrix-meta-chat:fedoraproject.org e quindi aggiungere /matrix come link nell’intestazione personalizzata)

Tuttavia, potrebbe essere utile renderlo un po’ più flessibile. Apparentemente il formato del link va bene per un permalink.

3 Mi Piace

Il doppio # fa fallire la convalida dell’impostazione dell’oggetto nel core (non questo TC di per sé).

URI non valido (non è un URI?): "https://matrix.to/#/#matrix-meta-chat:fedoraproject.org" (URI::InvalidURIError)

Non è un URI strettamente valido, quindi dovresti codificare il frammento.
Qui, usando https://matrix.to/#/%23matrix-meta-chat:fedoraproject.org funzionerà.

Guardando il codice:
https://github.com/discourse/discourse/blob/main/lib/theme_settings_object_validator.rb#L191-L193
is_valid_url è definito qui:

Puoi vedere che hanno già un’altra funzione per gestire questa situazione e viene utilizzata in altri posti:

Penso che sia ragionevole usare relaxed_parse per la convalida dell’URL dell’oggetto tema.
Ad esempio: if validations&.dig(:url) && !UrlHelper.relaxed_parse?(value)

6 Mi Piace