Geração de título de página e evento page:changed

Esta questão está nos detalhes da API.

Estou usando um fork do excelente componente de tema Matomo. Isso permite rastrear visualizações de página com o Matomo. Meu fork é uma tentativa de contornar problemas. É essencialmente idêntico. O comportamento descrito abaixo ocorre também com o componente upstream.

O componente usa o callback onPageChange para configurar uma API/facilidade do Matomo.

O problema que estou enfrentando é que, às vezes, o callback onPageChange é chamado antes que o título da página seja gerado. Isso é inconsistente. Às vezes o título está totalmente formado, às vezes não.

O resultado é que o histórico de logs do Matomo tem uma mistura de títulos de página totalmente formados e não.

Analisando o código-fonte do Discourse, isso é chamado antes do gatilho page:changed:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/lib/page-tracker.js#L31

Tudo isso parece que deveria funcionar — o título deveria ser atualizado no momento em que onPageChange é chamado. Não é — pelo menos não de forma consistente.

Há outro problema que pode estar relacionado. onPageChange às vezes é chamado duas vezes. Esta é minha solução alternativa (e a motivação para o fork):

No caso em que onPageChange é chamado duas vezes para a mesma visualização de página, uma das duas chamadas fornece um argumento url diferente da localização atual da janela. Eu verifico isso e saio antecipadamente.

(Observação: eu lido com o evento page:changed via onAppEvent em vez de onPageChange, mas vejo o mesmo comportamento em ambos os casos.)

Testei para ver se o título é definido com o seguinte código:

<script type="text/discourse-plugin" version="0.2">
api.onPageChange( (url, title) => {
    console.log('url', url);
    console.log('title', title)
})
</script>

O que estou observando é que, se eu criar um novo tópico, o título do tópico não está definido na chamada a api.onPageChange feita imediatamente após a criação do tópico. Nesse caso, o título do site é usado em seu lugar. Isso parece estar acontecendo no seu site? Se você não estiver vendo nenhum título, certifique-se de ter preenchido as configurações do site title e site description. Essas configurações estão encontradas na aba “Required” (Obrigatório) da página de configurações do seu site.

Obrigado por verificar isso, Simon. Não é isso que estou vendo. Fiz uma gravação de tela e enviarei o link por um canal alternativo, junto com uma referência à fonte do componente do tema em uso.

A ideia geral é que os títulos não são renderizados na primeira chamada a um tópico a partir de um aplicativo já carregado. Na página de entrada (ou seja, a primeira vez que o aplicativo é carregado), vejo o título em onPageChanged e em qualquer página após a primeira. A gravação torna isso muito mais claro, espero :slight_smile: