Insira um componente glimmer após a primeira postagem

Receio ter sido um pouco otimista demais aqui @pfaffman, desculpe! O PR que fiz introduziria um novo wrapper <div> entre cada postagem, mesmo que o outlet não estivesse sendo usado. Isso não é algo que realmente queremos fazer.

Pode haver maneiras de evitar o wrapper… mas nada simples que possamos fazer imediatamente.

Portanto, acho que a melhor solução imediata para você será copiar a implementação do adplugin que você referenciou no OP.

Essencialmente:

  1. Crie um componente (Glimmer ou clássico, não importa) que renderize o que você quiser

  2. Use registerWidgetShim para tornar esse componente disponível como um widget. O exemplo do adplugin está criando um widget chamado “after-post-ad”, que renderiza o componente PostBottomAd. Ele está passando todos os atributos do widget (@data) para o argumento @model do componente.

  3. Use api.decorateWidget para renderizar seu novo widget shim na posição post:after. No seu caso, como você só o quer na primeira postagem, você poderia fazer algo como:

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

Quando eventualmente fizermos o glimmer-ify da página do tópico, você precisará remover o widget shim/decoração e substituí-lo por um plugin outlet. Isso deve ser bem fácil, já que toda a sua lógica de exibição no componente será reutilizável no plugin outlet.

Nos diga como você se sai! Ficarei feliz em ajudar com quaisquer perguntas de acompanhamento - sei que há muitas partes móveis aqui.

3 curtidas