Apporter des modifications personnalisées à la barre latérale par programmation

Vous pouvez examiner comment le plugin de chat est intégré à la barre latérale :

Dans ce cas, l’état des liens est conservé dans l’objet de service et chaque fois que l’état est modifié, la barre latérale est mise à jour :

Une solution potentielle consisterait à s’abonner à l’événement de changement de page et à mettre à jour les liens. Le pseudocode pourrait ressembler à ceci :

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

api.addSidebarSection(
  (BaseCustomSidebarSection, BaseCustomSidebarSectionLink) => {
    const TestSectionLink = class extends BaseCustomSidebarSectionLink {
      // définissez vos propriétés de lien personnalisées ici
    };

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

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

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

      get newLinksArray() {
        // liste des liens basée sur l'URL actuelle
      }

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

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