[TabNews] Otimizações e diversos bugs surgindo e sendo corrigidos 🐞

Fala Turma!

Mais uma semana se passou desde a minha última publicação, e mais uma vez estou aqui para falar sobre as atualizações do TabNews. Nessa semana, atualizamos as dependências, corrigimos bugs antigos e novos, implementamos uma funcionalidade importante, além de otimizações de consultas ao banco de dados.

Dependências atualizadas

Foram atualizadas todas as dependências possíveis. Com destaque para o @primer/react e o next, que envolveram alguns bugs novos e antigos.

Algumas bibliotecas que não eram mais utilizadas foram removidas, e apenas seis dependências não puderam ser atualizadas, seja por incompatibilidade com outras dependências, incompatibilidade com o código ou por bugs conhecidos. Mais detalhes podem ser conferidos no PR #1733.

@primer/react

A atualização do @primer/react corrigiu um bug que existia no TextInput.Action. Com isso, foi possível remover a adequação provisória que contornava esse bug no componente PasswordInput.

Além disso, o @primer/react trouxe uma mudança estética no Tooltip, que passou a ter um formato um pouco mais arredondado e sem seta.

Vendo o resultado da atualização, o @rafael comentou que, sem a seta, o Tooltip poderia ficar um pouco mais próximo do gatilho, então também ajustei isso no mesmo PR #1733:

Antigo Atualizado Ajustado
Tooltip antes Tooltip depois Tooltip depois

next

A atualização do next veio com uma otimização na geração de CSS. Mas isso introduziu um bug que fazia com que o CSS do visualizador de markdown não fosse carregado totalmente. O @rafael notou rapidamente o problema em algumas publicações, então fizemos um rollback até descobrirmos a causa e contornarmos o problema com o PR #1734.

Armazenar histórico de alterações de username

Uma adição importante, tanto para a segurança quanto para otimização do cache de páginas que dependem do username, foi a criação de um histórico de alterações. Agora, sempre que um usuário alterar seu username, os dados antigos e novos serão guardados no evento de edição.

Ao criar os testes para a nova funcionalidade, acabei descobrindo um bug em outro histórico de modificações, o de comentários, que acabavam sendo registrados como edição de publicação e não de comentário.

Na revisão do PR, o @rafael apontou outro bug relacionado, que sempre verificava se o usuário possuía permissão de edição de publicações, mesmo que fosse uma edição de comentário.

Todos esses bugs foram corrigidos no PR #1727, que também adicionou testes para a nova funcionalidade e para os bugs corrigidos, além de outras melhorias nos testes.

Otimização de consultas

O @rafael notou que, ao criar ou editar um conteúdo, era possível diminuir o número de consultas e gravações realizadas no PostgreSQL. Na revisão do PR, notei que era possível reduzir ainda mais gravações, inclusive na edição de usuários.

Foram eliminadas todas gravações extras que inseriam metadados nos eventos de criação e edição de conteúdos, e de edição de usuários. Agora os metadados já são inseridos em uma única gravação do evento. Também foram reduzidas as consultas que verificavam a consistência de dados, como a existência de um conteúdo pai para cada comentário.

Essas otimizações foram realizadas no PR #1729.

Conclusão

As atualizações e correções de bugs dessa semana foram essenciais para manter o TabNews funcionando de forma segura e otimizada. Mas ainda há muito a ser feito, principalmente na otimização do cache da Vercel e na implementação da Revenue Share.

Compartilhe suas ideias e sugestões aqui nos comentários ou no repositório do TabNews no GitHub. 💪

Aproveite também para contribuir com outros projetos de código aberto, pois as adequações que fizemos no Tooltip e no CSS dão boas ideias de por onde começar com correções no @primer/react e no next. É muito satisfatório contribuir com a comunidade e ver o resultado impactando positivamente milhares de projetos. 🤩

Até logo! 👋