Não foi possível substituir topic-list-item.raw.hbs / topic-list-item.hbr no celular

Olá a todos,

Estou desenvolvendo um tema para personalizar vários aspectos do Discourse padrão. Com isso em mente, uma das coisas que preciso personalizar é o topic-list-item, que parece ser bastante simples. Adicionei no meu tema um arquivo no caminho javascripts/discourse/templates/components/topic-list-item.hbs e posso colocar meu código lá. No entanto, é aí que as perguntas começam a surgir.

Existe um método no componente para aquele template chamado renderTopicListItem, que é o responsável por definir uma propriedade topicListItemContents, a qual é renderizada por padrão. Confira:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/templates/components/topic-list-item.hbs

A primeira pergunta é POR QUÊ? Por que precisamos fazer isso? Por que não simplesmente usar o código Handlebars como de costume?

Para não interferir demais no código principal, decidi manter o topic-list-item como está e substituir o topic-list-item.raw.hbs no meu tema, o que funciona sem problemas.

No entanto, espero que ao adicionar um arquivo como javascripts/discourse/templates/mobile/list/topic-list-item.raw.hbs no meu tema, ele substitua a visualização móvel, mas não está funcionando.

O método findRawTemplate ainda está retornando o template móvel padrão do Discourse, que contém:

Mesmo fazendo edições manuais dentro do meu projeto local do Discourse, não consigo atualizar a versão móvel com as alterações.

Espero que a explicação faça sentido e que alguém tenha conhecimento sobre o assunto. Parece realmente quebrado por enquanto, e talvez queiramos corrigi-lo SE estiver realmente quebrado (posso fazer isso se entender um pouco mais o que está acontecendo).

Enquanto isso, continuarei procurando uma resposta e atualizarei com qualquer novidade. Abaixo, um pequeno GIF do que tenho no meu ambiente local.

http://g.recordit.co/AtOJlltJ8o

ATUALIZAÇÃO: Também atualizei o raw para .hbr, pois um commit recente alterou os arquivos, mas ainda não consegui fazer funcionar.

Acabei de testar e estou vendo o mesmo problema… Não consigo substituir esse template de forma alguma. Parece ter ocorrido nos últimos dias. Isso pode estar relacionado à mudança para hbr @markvanlan?

Quando criei este tópico, meu Discourse local era de 17 de janeiro, se não me engano. Dito isso, tive o problema com essa versão e, após atualizar com as últimas alterações e renomear de raw.hbs para hbr, ainda tenho os mesmos problemas.

Até agora, o que fiz foi personalizar em javascripts/discourse/templates/components/topic-list-item.hbs, mas idealmente os modelos raw deveriam se comportar como os outros modelos (em termos de substituição e personalização).

@awesomerobot se você verificar o commit imediatamente antes da alteração do hbr, ele funciona?

Ah, sim, obrigado pela data @duranmla… é um problema um pouco antigo @markvanlan, estou rastreando agora.

FYI, não vi esse problema afetar Topic List Previews (legacy), que substitui o raw do Item da Lista de Tópicos mobile. https://github.com/paviliondev/discourse-topic-previews/tree/master/assets/javascripts/discourse/templates/mobile/list Testei isso apenas em testes-passed, no entanto.

Ok, então eu estava tendo um pouco de dificuldade para rastrear o problema, pois, após reverter, precisei remover e depois reaplicar a personalização para reproduzir o erro.

Acho que o problema está realmente no commit do hbr @markvanlan (https://github.com/discourse/discourse/commit/3e897749084faeb29eb9a524d3f3b3f1d46a8738), desculpe pela indecisão sobre isso.

Para testar, adicionei o seguinte ao <head> do tema atual, por meio da seção de personalização no painel de administração:

<script type='text/x-handlebars' data-template-name='mobile/list/topic-list-item.raw'>
  test
</script>

No commit anterior a isso, tudo funcionava bem. Assim que apliquei esse commit e depois reapliquei a personalização, o template foi ignorado.

Talvez eu tenha me confundido mesmo, achei que fosse mais antigo do que isso.
De qualquer forma, vou ficar de olho neste tópico. Obrigado pela resposta rápida para rastrear isso, @awesomerobot

Já há uma correção disponível se você puxar a versão mais recente

Mark vai fazer um trabalho adicional para descobrir por que os testes estavam passando, mesmo com isso quebrado.

No entanto, atualizei e o erro persiste ao trabalhar com a estrutura de projeto de tema (o que provavelmente é o mais comum para projetos de médio e grande porte). Vou deixar este vídeo aqui mostrando o erro: https://www.loom.com/share/d3f437347c8f4d5aa4dd1c7ce08e1bf9

PD: Vou deixar o vídeo disponível por um tempo, caso seja útil para alguém entender o problema e reproduzi-lo. Preciso excluí-lo após algumas semanas :grimacing:

OBS: Também tentei renomear de volta para topic-list-item.raw.hbs em vez de topic-list-item.hbr, e o problema continua o mesmo.

Está funcionando para mim com o diretório javascripts (com a extensão antiga ou nova).

Uma coisa que encontrei ontem à noite é que você pode precisar editar o arquivo e salvá-lo, ou remover o arquivo e adicioná-lo novamente (os modelos são compilados ao salvar, então é possível que você esteja temporariamente preso em um estado com bug.).