Custom Header Links가 Matrix URL을 거부합니다

3.4로 업데이트할 때, Custom Header links 테마 구성 요소가 https://matrix.to/#/#matrix-meta-chat:fedoraproject.org와 같은 Matrix 링크 때문에 업데이트를 거부했습니다. 오류: The property at JSON Pointer '/3/url' must be a valid URL.

이 링크를 제거한 후에는 업데이트가 정상적으로 진행되었지만, 링크를 다시 추가하는 것은 불가능했습니다.

(우회 방법: https://matrix.to/#/#matrix-meta-chat:fedoraproject.org로 리다이렉트되는 /matrix 영구 링크를 생성한 후, /matrix를 Custom Header 링크로 추가합니다.)

그래도 이 부분을 조금 더 유연하게 만드는 것이 좋을 수 있습니다. 분명히 해당 링크 형식은 영구 링크에는 문제가 없는 것 같습니다.

3개의 좋아요

더블 #은 코어(이 TC 자체는 아닙니다)에서 객체 설정 검증을 실패하게 만듭니다.

bad URI(is not URI?): "https://matrix.to/#/#matrix-meta-chat:fedoraproject.org" (URI::InvalidURIError)

이것은 엄밀히 유효한 URI가 아니므로, 프레그먼트를 인코딩해야 합니다.
여기서 https://matrix.to/#/%23matrix-meta-chat:fedoraproject.org를 사용하면 작동합니다.

코드를 살펴보면:
https://github.com/discourse/discourse/blob/main/lib/theme_settings_object_validator.rb#L191-L193
is_valid_url은 여기에 정의되어 있습니다:

이미 이 상황을 처리하기 위한 다른 함수가 있으며 다른 곳에서도 사용되고 있는 것을 볼 수 있습니다:

테마 객체 URL 검증에 relaxed_parse를 사용하는 것이 합리적이라고 생각합니다.
예: if validations&.dig(:url) && !UrlHelper.relaxed_parse?(value)

6개의 좋아요