Le bouton du pied de page du sujet ne fonctionne pas

J’ai des problèmes pour faire fonctionner dependentKeys dans registerTopicFooterButton (documenté ici)

Mon code (exemple minimal)

  api.registerTopicFooterButton({
    id: "my-topic-footer-button",
    action() {
      this.topic.updateTags(["my-tag"]);
    },
    title() {
      return "my.button.title";
    },
    label() {
      return "my.button.label";
    },
    dependentKeys: ["topic.tags"],
    disabled() {
      return this.topic.tags.includes("my-tag");
    }
  });

Attendu : une fois que j’appuie sur le bouton, les tags du sujet sont définis sur my-tag (fonctionne), ce qui déclenche un nouveau rendu du bouton et le désactive.
Attendu : une fois que j’ajoute le tag manuellement, le bouton est désactivé

Réalité : le nouveau rendu n’est déclenché dans aucun des scénarios.
Le bouton est correctement désactivé/activé lors du rafraîchissement de la page.

Quelqu’un peut-il repérer mon erreur ?

1 « J'aime »

Avoir une propriété calculée dépendant de topic.tags entraînera son invalidation lorsque le tableau lui-même sera remplacé. Mais cela n’entraînera pas d’invalidation lorsque des éléments seront ajoutés/supprimés du tableau.

Je pense donc que vous voulez probablement topic.tags.@each (docs).

En général, nous essayons de nous éloigner des propriétés calculées et de nous rapprocher des getters natifs/autotracking. Je suppose que nous devrons moderniser l’API topic-footer-buttons à un moment donné pour prendre en charge cela :thinking:

2 « J'aime »

Merci pour la réponse très rapide David !

Cependant, l’utilisation de topic.tags.@each ne résout pas ce problème… (dans tous les cas, ni lorsque le tag est ajouté manuellement, ni lorsque le bouton est pressé).
Un console.log dans la fonction disabled() ne s’exécute pas. Il ne s’exécute pas non plus dans displayed().

1 « J'aime »

Lorsque vous cliquez sur votre bouton, le nouveau tag s’affiche-t-il correctement en haut du sujet ?

1 « J'aime »

Oui, cela fonctionne bien.

J’ai aussi essayé this.topic.notifyPropertyChange(\"tags\");

Et je suis même allé désespérément jusqu’à essayer de manipuler d’autres propriétés (comme this.topic.title = this.topic.title + \"!\" et en incluant topic.title dans dependentKeys). Cela ne fonctionne pas non plus. L’utilisation de this.topic.set... ne fonctionne pas non plus.

1 « J'aime »

Étonnamment, si je copie/colle votre exemple de l’OP et l’exécute localement, cela semble fonctionner parfaitement :

Y a-t-il d’autres thèmes/plugins qui pourraient interférer ? Ou peut-être quelque chose de différent dans votre code ‘réel’, par rapport à l’exemple minimal de l’OP ?

:thinking:

Mon code « minimal » dans le premier message est mon code « réel » pour le moment. Je vais le déplacer vers une installation complètement propre et voir si cela change quelque chose.

EDIT oui, cela fonctionne sur une installation propre :sob: :sob:

Je vais retirer ce sujet pour ne pas avoir à vivre avec cette honte :wink:
Je vous tiendrai au courant lorsque j’aurai trouvé la cause de ce problème.

Merci pour votre aide @david !!

2 « J'aime »

Ce sujet a été automatiquement fermé 30 jours après la dernière réponse. Les nouvelles réponses ne sont plus autorisées.