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:
-
Crie um componente (Glimmer ou clássico, não importa) que renderize o que você quiser
-
Use
registerWidgetShimpara tornar esse componente disponível como um widget. O exemplo do adplugin está criando um widget chamado “after-post-ad”, que renderiza o componentePostBottomAd. Ele está passando todos os atributos do widget(@data)para o argumento@modeldo componente. -
Use
api.decorateWidgetpara renderizar seu novo widget shim na posiçãopost: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.