Apportare modifiche personalizzate alla barra laterale programmaticamente

Puoi dare un’occhiata a come chat-plugin è integrato con la barra laterale:

In questo caso, lo stato dei collegamenti è mantenuto nell’oggetto service e ogni volta che lo stato viene modificato, la barra laterale viene aggiornata:

Una potenziale soluzione sarebbe sottoscriversi all’evento di cambio pagina e aggiornare i collegamenti. Il pseudocodice potrebbe assomigliare a:

import { tracked } from "@glimmer/tracking";

api.addSidebarSection(
  (BaseCustomSidebarSection, BaseCustomSidebarSectionLink) => {
    const TestSectionLink = class extends BaseCustomSidebarSectionLink {
      // definisci qui le tue proprietà di collegamento personalizzate
    };

    const SidebarTestSection = class extends BaseCustomSidebarSection {
      @tracked links = [];

      constructor() {
        super(...arguments);

        this.#updateLinks();
        this.onAppEvent("page:changed", () => this.#updateLinks());
      }

      get newLinksArray() {
        // elenco dei collegamenti basato sull'URL corrente
      }

      #updateLinks() {
        this.links = this.newLinksArray.map(
          (link) =>
            new TestSectionLink({
              link,
            })
        );
      }

      get sectionLinks() {
        return this.links;
      }
    };
    return SidebarTestSection;
  }
);