Insérer un composant Glimmer après le premier message

Je crains d’avoir été un peu trop optimiste ici @pfaffman, désolé ! Le PR que j’ai fait introduirait un nouveau wrapper <div> entre chaque publication, même si l’outlet n’était pas utilisé. Ce n’est pas vraiment ce que nous voulons faire.

Il peut y avoir des moyens d’éviter le wrapper… mais rien de simple que nous puissions faire immédiatement.

Je pense donc que la meilleure solution immédiate pour vous sera de copier l’implémentation de adplugin à laquelle vous avez fait référence dans l’OP.

Essentiellement :

  1. Créez un composant (Glimmer ou classique, peu importe) qui rend ce que vous voulez.

  2. Utilisez registerWidgetShim pour rendre ce composant disponible en tant que widget. L’exemple adplugin crée un widget appelé “after-post-ad”, qui rend le composant PostBottomAd. Il transmet tous les attributs du widget (@data) à l’argument @model du composant.

  3. Utilisez api.decorateWidget pour rendre votre nouveau widget shim dans la position post:after. Dans votre cas, puisque vous ne le voulez que sur la première publication, vous pourriez faire quelque chose comme :

    api.decorateWidget("post:after", (helper) => {
      if (helper.widget.model.post_number === 1) {
        return helper.attach("my-widget-shim");
      }
    });
    

Lorsque nous passerons enfin la page de sujet à glimmer, vous devrez supprimer le widget shim/décoration et le remplacer par un plugin outlet. Cela devrait être assez facile, car toute votre logique d’affichage dans le composant sera réutilisable dans le plugin outlet.

Faites-nous savoir comment vous vous en sortez ! Nous serons heureux de répondre à toutes vos questions de suivi - je sais qu’il y a beaucoup de pièces mobiles ici.

3 « J'aime »