كيفية إطلاق النار على كل تحميل تذييل (أو تحميل صفحة؟)

مرحبًا @Johani، إذن هناك إصدار آخر من هذه المشكلة المتعلقة بـ “كيف يتم تشغيل أو كيف يتم تحفيز”، وهو أنني أستخدم نسخة من Custom Header Links في إضافة. تقوم هذه الإضافة بربط بعض العناصر (“الخوادم”) التي تم إنشاؤها في نموذج منفصل تضيفه إضافتي. عند إنشاء خادم، أريد إعادة بناء روابط الرأس لربطها بأحدث خادمين تم إنشاؤهما. أقوم بذلك حاليًا في مُهيئ (initializer) ويعمل بشكل جيد، إلا أنه لتحديث الروابط بعد إضافة خادم، يجب إعادة تحميل الصفحة.

لقد أخبرتني كيفية إضافة ومراقبة المحفزات (triggers)، فظننت أنني قد أستطيع حل هذه المشكلة، لكن الصفحة التي تقوم بالعمل موجودة في discourse-subscriptions. ربما ما أريده هو تقديم طلب دمج (PR) إلى discourse-subscriptions يضيف:

 this.appEvents.trigger("purchase-complete")

بعد اكتمال عملية الشراء (حيث يؤدي الشراء إلى إضافة المستخدم إلى مجموعة، مما يؤدي بدوره إلى إنشاء خادم وإزالة المستخدم من المجموعة). أو، إذا كان بإمكاني ببساطة إعادة تحميل الصفحة بعد اكتمال الشراء، أو عند النقر على “موافق” في نافذة “اكتمال الشراء” المنبثقة، فسيكون ذلك كافيًا، لكنني لا أعرف كيف أفعل ذلك أيضًا (ما حاولته أعاد تحميل الصفحة إلى الأبد…)

لذا ربما هنا:

https://github.com/discourse/discourse-subscriptions/blob/main/assets/javascripts/discourse/controllers/s-show.js.es6#L71-L81

أريد إضافة:

 this.appEvents.trigger("successful-transaction")

بعد تعيين المتغير loading إلى false، ثم يمكنني أن أضيف في مُهيئتي:

 this.appEvents.on("successful-transaction")

لإجراء التعديل على الروابط؟

أعتقد أنه بمجرد القيام بذلك، سأحتاج إلى فعل شيء مختلف لأنني أخشى أن:

      api.decorateWidget("header-buttons:before", (helper) => {
        return helper.h("ul.pfaffmanager-header-links", headerLinks);
      });

تضيف إلى header-buttons:before بدلاً من استبدالها، وبالتالي سأحصل على روابط إضافية في كل مرة يتم فيها استدعاؤها؟