Executando verificação de segurança...
11

Pitch: Barra de busca para o Tabnews sem sair do Tabnews

Desde o começo da plataforma essa é uma das funcionalidades mais pedidas, então resolvi tentar cria-la e aproveitar para escrever o meu primeiro userscript.

Sobre o projeto

Demo da TabBusca

Como visto no gif acima, esse userscript adiciona apenas uma barra simples ao lado do ícone que abre as opções do perfil. Os posts são puxados do Google através de um fetch(), utilizando a API do serviço de proxy do All Origins para não ter problema de erro de CORS.

Devido o serviço ser grátis, possui algumas limitações, mas acredito ser o suficiente para fazer buscas simples. Entretanto, ainda há a opção de trocar o serviço de proxy pelo CorsAnywhere, que retorna mais resultados, porém como o serviço online é só para testes de desenvolvimento, eu coloquei somente a fim de testar, sendo a melhor opção você próprio hospedar o Cors Anywhere caso queira utilizar. Mais informações sobre isso aqui.

As instruções para trocar de proxy você encontra aqui.

Como Instalar

  1. Primeiro você precisa instalar um dos seguintes gerenciadores de userscripts:
  1. Depois é só clicar em um dos links abaixo para instalar.

Desafio e maior aprendizado

Eu decidi colocar essa informação aqui porque pode ajudar outros devs que tiverem o mesmo problema que eu futuramente.

O maior desafio que tive foi o de adicionar a barra aqui no Tabnews, pois como a página não é atualizada quando algum link é clicado da forma tradicional, o evento load do window ou o DOMContentLoaded são acionados só uma vez, e não dá para adicionar a busca só uma vez, pois apesar da página em si não ser atualizada, alguns elementos são, dentre eles o #header, onde a busca é adicionada, fazendo com que o elemento que adicionei seja sobrescrito.

Minha primeira abordagem foi colocar um seTimeout que esperava o #header ser carregado (como você pode ver a partir da linha 26 aqui), mas era uma gambiarra bem estranha, além de gerar alguns bugs e não carregar caso a conexão do usuário fosse lenta, pois à página poderia demorar mais tempo para carregar do que o tempo definido no setTimeout.

Foi então que descobri o MutationObserver, uma interface que propicia observar mudanças no DOM. A partir disso foi só configurar para ficar de olho nas mudanças e adicionar a div da busca caso alguma mudança no #header fosse encontrada :)

Como disse, esse é o meu primeiro userscript, então caso tenham alguma dúvida, sugestões ou dicas de melhoria, passem lá no repositório do projeto: https://github.com/ludwiklejzer/TabBusca


Se você curte userscripts, dá uma olhada nesse outro post que fiz falando mais sobre eles: Melhorando os seus websites favoritos

Carregando publicação patrocinada...
2

Eu tenho muito orgulho dessa comunidade! Muito mesmo, obrigado por fazer parte dela ludwiklejzer 🤝 ainda mais por não somente criar uma publicação muito bem escrita, mas também por disponibilizar a solução de forma open source para outras pessoas estudarem como foi feito 💪

1
1

O Rodrigo Kulb tinha sugerido no passado fazer aquela integração de que você faz a busca, e o resultado aparece lá no Google mesmo em tela cheia. Acho que descartamos porque apareciam anúncios, eu não me lembro direito.

Mas talvez o maior detalhe é que o Google não está indexando todas as páginas :(

1

Acho que ninguém implementou por causa das propagandas mesmo. Se for exibir propaganda, dá pra usar oficialmente o Google incorporado ao TabNews. Dá até pra receber uns trocados por isso 🤑

Sobre a indexação... Não está indexando as páginas mais recentes ou mesmo algumas antigas não estão sendo indexadas?

Temos que analisar o motivo. De alguma maneira o Google pode estar escolhendo o que é ou não é relevante e devemos entender para ter maior controle sobre isso.

Eu tinha iniciado uma discussão relacionada lá no repositório.

1

Obrigado, Filipe! Eu que agradeço por poder participar de um espaço que é tão acolhedor e com tanta gente incrível. A comunidade do Tabnews me inspira muito e é uma honra poder fazer parte dela.

1
1