أعلم بالفعل أن /my/billing/subscriptions هي الطريقة لربط المستخدم الحالي بملفه الشخصي، وتحديداً قسم الفواتير المرفق مع اشتراكات Discourse. ومع ذلك، يبدو أن هذا لا يعمل في الكود أدناه، وتحديداً في التعبير داخل جملة الشرط (if-statement). على وجه التحديد، أحاول إظهار زر فقط على صفحة الفواتير الخاصة بالمستخدم. في الواقع، يبدو أن الأمر لا يعمل لأي عنوان URL من الصيغة /my، سواء كان الفواتير، التفضيلات، النشاط، أو أي شيء آخر. هل أقوم بشيء خاطئ؟ ما الذي يجب أن أستخدمه؟ (تذكر أن هذا لا يعمل فقط داخل جملة الشرط. بخلاف ذلك، استخدام /my كان ويعمل بشكل جيد.)
أليس ذلك لأن المستخدمين لا يكونون أبدًا في عناوين URL مثل /my/* لأنها مجرد إعادة توجيه ذكية؟
على سبيل المثال، /my/preferences سيعيد توجيهي إلى /u/falco/preferences، لذا فأنا لا أكون أبدًا في صفحة /my/preferences لكي يتحقق الشرط if في الكود الخاص بك.
تحرير: إذن، باستخدام console.log تمكنت من استنتاج أن هذا النهج يعمل بشكل جيد بشكل عام. على سبيل المثال، إذا وضعت الكود ببساطة
const user = api.getCurrentUser()
console.log("/u/" + user.username + "/billing/subscriptions")
في سكريبت، أحصل على النتيجة المطلوبة /u/Miles/billing/subscriptions.
ومع ذلك، تظهر المشكلة عندما أحاول وضع هذا داخل setupComponent(args, component) {}. بمجرد فعل ذلك، لم يعد console.log يعرض أي شيء. لا زلت غير متأكد مما أفعله خطأ…
كنت أظن ذلك، لأن استخدام api.onPageChange(url) موجود بالفعل ويعمل بشكل صحيح. لاحظ أنني أقوم بتكييف الكود من هنا، لذا يبدو أنه صحيح تمامًا أن لدي وصولًا إلى كائن api داخل دالة setupComponent.