RGJ
(Richard - Communiteq)
15 فبراير 2025، 12:16م
1
عند التحديث إلى الإصدار 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 معرف هنا:
يمكنك أن ترى أن لديهم بالفعل وظيفة أخرى للتعامل مع هذا الموقف ويتم استخدامها في أماكن أخرى:
# At the moment this handles invalid URLs that browser address bar accepts
# where second # is not encoded
#
# Longer term we can add support of simpleidn and encode unicode domains
def self.relaxed_parse(url)
url, fragment = url.split("#", 2)
uri = URI.parse(url)
أعتقد أنه من المعقول استخدام relaxed_parse للتحقق من صحة عنوان URL لكائن السمة.
على سبيل المثال: if validations&.dig(:url) && !UrlHelper.relaxed_parse?(value)
6 إعجابات