Кнопка Zendesk не обновляется корректно при смене темы без перезагрузки страницы

Привет! У меня возникла проблема с поведением кнопки «Посмотреть в Zendesk» в плагине Zendesk. Когда в Zendesk уже существует тикет, кнопка корректно отображается как «Посмотреть в Zendesk». Однако, если я перехожу к другой теме, для которой нет соответствующего тикета в Zendesk, кнопка сначала всё ещё показывает «Посмотреть в Zendesk» вместо «Создать тикет в Zendesk». После обновления страницы кнопка обновляется и корректно отображает вариант «Создать тикет в Zendesk».

Похоже, что компонент кнопки не перерисовывается при переходе к новой теме. Я считаю, что решение может заключаться в принудительной перерисовке этого компонента при каждом изменении страницы.

Мог бы кто-нибудь посоветовать, как лучше всего подойти к решению этой проблемы, или есть ли способ заставить компонент корректно обновляться при навигации? Любые идеи или предложения будут очень кстати.

Здравствуйте,

Надеюсь, у вас всё хорошо! Хотел(а) бы уточнить, появились ли какие-либо новости по этому вопросу. Буду очень признателен(а) за ваши комментарии или рекомендации.

Заранее спасибо!

Это может быть связано с тем, что не обнаруживается изменение страницы. Вероятно, это обусловлено тем, как фреймворк фронтенда (скорее всего, Ember.js, так как Discourse использует его) обрабатывает рендеринг компонентов при навигации.

Вы можете добавить слушатель изменений маршрута, что-то вроде этого:


export default Component.extend({
  router: service(),

  didInsertElement() {
    this._super(...arguments);

    this.router.on('routeDidChange', () => {
      this.refreshZendeskButton();
    });
  },

  willDestroyElement() {
    this._super(...arguments);

    this.router.off('routeDidChange', this.refreshZendeskButton);
  },
});

Это, возможно, придётся исправить, так как используется setupComponent(): discourse-zendesk-plugin/assets/javascripts/discourse-zendesk-plugin/connectors/after-topic-footer-buttons/zendesk-topic-actions.js at 0d24cfa4aeedc224cb35749341b6188095701c5f · discourse/discourse-zendesk-plugin · GitHub

Проверка наличия действительного билета Zendesk использует zendesk_id. Возможно, потребуется api.onPageChange()?