Tenho um site com a opção ‘permitir tópicos sem categoria’ desativada, mas a categoria ‘sem categoria’ aparece para usuários deslogados (ou logados como administrador) no Android. Acabei de fazer uma reconstrução. Os componentes do tema não explicam isso. O problema persiste no Modo Seguro. Apenas plugins oficiais estão instalados.
É! É apenas sobre o tópico, nada mais. Não consigo entender como isso seria possível com as especificações que presumo que estejam em vigor. E é apenas no mobile, não no desktop.
Não acredito que esperemos que o tópico Sobre permaneça em Sem Categoria quando estiver desativado. O aviso na descrição da configuração do site ‘permitir tópicos sem categoria’ diz (ênfase adicionada):
AVISO: Se houver qualquer tópico sem categoria, você deverá recategorizá-los antes de desativar essa opção.
Você pode tentar mover o tópico Sobre para uma categoria ativa? Isso pareceu funcionar no meu site de teste.
Isso é bastante confuso, pois normalmente é proibido excluir um tópico “sobre” (mas acho que não é realmente um tópico sobre, já que não é uma categoria). Mas eu excluí, e agora “Sem categoria” não aparece mais. E tive que fazer isso pelo celular, porque senão não conseguiria encontrá-lo.
“Sem categoria” é muito confuso, já que NÃO é uma categoria. Acredito realmente que deveria estar desativado por padrão.
Sim. Entendo esse argumento e costumava concordar, mas acho que uma categoria padrão faria mais sentido do que uma categoria “não definida”. Mas vou tentar não sugerir isso novamente, a menos que, talvez, um dia estejamos no mesmo espaço com .
No desktop, exibimos categorias e tópicos separadamente, mas no mobile exibimos categorias com tópicos, combinados. Tendo isso em mente, é esta linha que causa o bug:
c.displayable_topics.blank? é sempre verdadeiro no desktop porque carregamos os tópicos separadamente, então displayable_topics está sempre vazio. No mobile, é verdadeiro apenas se realmente não houver tópicos naquela categoria.
Temos duas soluções aqui:
mostrar “sem categoria” se houver pelo menos um tópico, independentemente do valor da configuração “permitir tópicos sem categoria”
ocultar “sem categoria” mesmo que haja um tópico, se “permitir tópicos sem categoria” for falso
A segunda solução é mais fácil de implementar porque significa que simplesmente removemos a segunda parte da condição.
Acho que esconder os tópicos que estão em ‘sem categoria’ é (estranhamente) menos confuso do que NÃO esconder ‘sem categoria’ quando você ativa a configuração. Acredito que, se você desativar ‘sem categoria’, notará imediatamente que todos aqueles tópicos desapareceram, mas se nada acontecer ao desativar ‘sem categoria’, parecerá que algo está quebrado.
Optei pela primeira solução porque é a que remove código do Discourse. A outra, na verdade, adiciona código para verificar se há pelo menos um tópico na categoria “Sem categoria”.
Também revisei todos os usos de category.uncategorized? e encontrei alguns locais que podem não ser necessários se fizermos com que “Sem categoria” seja menos um caso especial e mais uma categoria comum:
Essas são partes que não interferem em outros recursos, o que torna as alterações menos arriscadas, mas ainda assim não são fáceis.