Общий URL страницы оплаты пользователя в JavaScript не работает

Итак, я уже знаю, что /my/billing/subscriptions — это путь для связывания текущего пользователя с его профилем, в частности, с разделом выставления счетов, который доступен в Discourse Subscriptions. Однако в моём коде ниже это, похоже, не работает, особенно в выражении внутри оператора if. Я пытаюсь сделать так, чтобы кнопка отображалась только на странице выставления счетов пользователя. На самом деле, похоже, что это не работает ни для одного URL вида /my, будь то billing, preferences, activity или что-то ещё. Я что-то делаю не так? Что мне следует использовать? (Имейте в виду, что проблема возникает только в операторе if. В остальном использование /my работает и работало нормально.)

<script type="text/discourse-plugin" version="0.8">
api.registerConnectorClass("above-user-profile", "back-button", {
    setupComponent(args, component) {
    api.onPageChange((url) => {

        if (url === "/my/billing/subscriptions" ) { 
          document.querySelector("html").classList.add("custom-homepage"); 
          component.set("displayCustomHomepage", true); 
        } else {  
          document.querySelector("html").classList.remove("custom-homepage"); 
          component.set("displayCustomHomepage", false); 
        }
    });
    }
});

</script>

<script type="text/x-handlebars" data-template-name="/connectors/above-user-profile/back-button">
  {{#if displayCustomHomepage}} 
    <a href="https://mathbymiles.com/my/preferences" class="btn btn-default">
        <span class="d-button-label">
            Вернуться к настройкам!
        </span>
    </a>
  {{/if}}
</script>

Разве это не потому, что пользователи никогда не оказываются на URL-адресах вида /my/*, поскольку это просто умная перенаправление?

Например, /my/preferences перенаправит меня на /u/falco/preferences, поэтому я никогда не буду на странице /my/preferences, чтобы условие if в вашем коде сработало.

Понятно, вы правы. Я вижу, почему это не подходит для if, так как условие никогда не будет истинным. Что же мне тогда делать?

Я попробовал сделать иначе, в if:

url === "/u/" + user.username + "/billing/subscriptions"

где

const user = api.getCurrentUser(),

но это тоже, похоже, не сработало…

РЕДАКТИРОВАНИЕ: Итак, используя console.log, я смог выяснить, что в целом этот подход работает нормально. Например, если я просто помещу код

const user = api.getCurrentUser()
console.log("/u/" + user.username + "/billing/subscriptions")

в скрипт, я получу желаемый результат /u/Miles/billing/subscriptions.

Однако проблема возникает, когда я пытаюсь поместить это внутрь setupComponent(args, component) {}. Как только я это делаю, console.log перестает что-либо показывать. Всё ещё не уверен, что я делаю не так…

Есть ли у вас доступ к объекту api в методе setupComponent? Мне интересно, не в этом ли причина ваших проблем.

Я так и думал, потому что api.onPageChange(url) уже используется и работает без проблем. Обратите внимание, что я адаптирую код отсюда, поэтому, похоже, действительно верно, что у меня есть доступ к объекту api в методе setupComponent.

Для дальнейшего уточнения вот что у меня получилось на данный момент:

С кодом

<script type="text/discourse-plugin" version="0.8">
    const user = api.getCurrentUser();
    console.log("/u/" + user.username + "/billing/subscriptions");

    api.registerConnectorClass("above-user-profile", "back-button", {
    setupComponent(args, component) {

    api.onPageChange((url) => {

        if (url === "/u/" + user.username + "/billing/subscriptions" ){ 
          document.querySelector("html").classList.add("custom-homepage"); 
          component.set("displayCustomHomepage", true); 
        } else {  
          document.querySelector("html").classList.remove("custom-homepage"); 
          component.set("displayCustomHomepage", false); 
        }
    });
    }
});

я получаю правильный вывод /u/Miles/billing/subscriptions в консоли. Но когда я делаю так:

<script type="text/discourse-plugin" version="0.8">
    

    api.registerConnectorClass("above-user-profile", "back-button", {
    setupComponent(args, component) {

    const user = api.getCurrentUser();
    console.log("/u/" + user.username + "/billing/subscriptions");

    api.onPageChange((url) => {

        if (url === "/u/" + user.username + "/billing/subscriptions" ){ 
          document.querySelector("html").classList.add("custom-homepage"); 
          component.set("displayCustomHomepage", true); 
        } else {  
          document.querySelector("html").classList.remove("custom-homepage"); 
          component.set("displayCustomHomepage", false); 
        }
    });
    }
});

никакого вывода не наблюдается…