روابط ترويسة مخصصة ترفض عنوان URL لـ Matrix

عند التحديث إلى الإصدار 3.4، رفض مكون سمة روابط الرأس المخصصة التحديث بسبب رابط Matrix مثل https://matrix.to/#/#matrix-meta-chat:fedoraproject.org. الخطأ: يجب أن يكون الخاصية في مؤشر JSON '/3/url' عنوان URL صالحًا.

بمجرد إزالة هذا الرابط، تم التحديث بشكل جيد، ولكن إضافة الرابط مرة أخرى كان مستحيلاً.

(حل بديل: إنشاء رابط دائم /matrix يعيد التوجيه إلى https://matrix.to/#/#matrix-meta-chat:fedoraproject.org ثم إضافة /matrix كرابط رأس مخصص)

ومع ذلك، قد يكون من الجيد جعل هذا الأمر أكثر مرونة. يبدو أن تنسيق الرابط مناسب لرابط دائم.

3 إعجابات

إن علامة # المزدوجة تجعل التحقق من صحة إعداد الكائن يفشل في النواة (ليس هذا الاختبار المحدد بحد ذاته).

URI سيء (هل هو ليس 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 معرف هنا:

يمكنك أن ترى أن لديهم بالفعل وظيفة أخرى للتعامل مع هذا الموقف ويتم استخدامها في أماكن أخرى:

أعتقد أنه من المعقول استخدام relaxed_parse للتحقق من صحة عنوان URL لكائن السمة.
على سبيل المثال: if validations&.dig(:url) && !UrlHelper.relaxed_parse?(value)

6 إعجابات