-
Notifications
You must be signed in to change notification settings - Fork 401
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove markdown do body
do conteúdo por dentro do getStaticProps
#661
Conversation
@kaique-soares is attempting to deploy a commit to the TabNews Team on Vercel. To accomplish this, @kaique-soares needs to request access to the Team. Afterwards, an owner of the Team is required to accept their membership request. If you're already a member of the respective Vercel Team, make sure that your Personal Vercel Account is connected to your GitHub account. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kaique-soares muito obrigado pela contribuição!!!!!! Eu não rodei o código, mas fiz umas sugestões, veja se faz sentido 🤝
@@ -240,6 +241,9 @@ export async function getStaticProps(context) { | |||
|
|||
const secureChildrenList = authorization.filterOutput(userTryingToGet, 'read:content:list', childrenFound); | |||
|
|||
const cleanBody = removeMarkdown(secureContentValues.body).replace(/\s+/g, ' '); | |||
secureContentValues.body = cleanBody; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Se você sobrescrever o body
com o valor do cleanBody
, será que isso não vai remover o markdown dos conteúdos da página? Eu não rodei aqui e estou dando esse palpite só pela leitura do código, posso estar bastante enganado 🤝
De qualquer forma, estou pensando aqui, talvez podemos criar uma terceira variável que é retornada no props
lá em baixo, por exemplo:
contentFound: JSON.parse(JSON.stringify(secureContentValues)),
childrenFound: JSON.parse(JSON.stringify(secureChildrenList)),
sanitizedMetadata: ...
E alí você já colocaria todo o metadado sanitizado, incluindo com o .substring(0, 190)
por exemplo no caso do body
, ou o do title
e todas as informações que são enviadas aqui:
<DefaultLayout content={contentFound}>
Então ao invés de enviar o contentFound
, enviar o sanitizedMetadata
, que é um objeto muito similar ao contentFound
, mas só com os dados que o DefaultLayout
precisa e todos já sanitizados/trabalhados.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Outro detalhe é fazer o rebase e resolver o conflito 🤝
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Se você sobrescrever o
body
com o valor docleanBody
, será que isso não vai remover o markdown dos conteúdos da página? Eu não rodei aqui e estou dando esse palpite só pela leitura do código, posso estar bastante enganado 🤝
Nos testes em localhost
não houve perda da formatação mas especulo que tenha sido um falso positivo, justamente por eu ter testado apenas em localhost
, por causa do getStaticProps
. Vou investigar e testar em homologação
🤝
De qualquer forma, estou pensando aqui, talvez podemos criar uma terceira variável que é retornada no
props
...
Aaah sensacional 😍 Vou implementar, e pelo ângulo que eu tava olhando nunca teria pensado nisso, apesar de ter visto essa abordagem no passado, na playlist dos robôs! 🤯
Outro detalhe é fazer o rebase e resolver o conflito 🤝
👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
rebase
feito e conflito resolvido 👍
E com isso, destaco alguns pontos:
- Para resolver o conflito e não quebrar nada, voltamos a utilizar o model
removeMarkdown
como antes, por dentro doDefaultLayout
, então, no fim das contas a dinâmica de limpar obody
do conteúdo pelo client-side continua e é isso que vou atacar agora, trabalhando na questão dosanitizedMetadata
que tu sugeriu 👍 - Sobre o
rebase
, nunca havia utilizado o comando antes, conhecia mas não havia aplicado ainda, então, não sei se foi a estratégia mais adequada, começar por ele ou ter continuado a implementação e feito orebase
depois.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sobre o item 2
, eu sempre prefiro fazer o rebase antes para deixar a branch limpa de merge commits
o máximo que der 👍 mas não existe o certo ou errado, são estratégias com trade-offs diferentes 🤝
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@filipedeschamps após o commit, em que trabalhei na implementação do sanitizedMetadata
, fui investigar o ponto que tu levantou:
Se você sobrescrever o
body
com o valor docleanBody
, será que isso não vai remover o markdown dos conteúdos da página?...
E sim, foi um falso positivo:
Nos testes em
localhost
não houve perda da formatação mas especulo que tenha sido um falso positivo, justamente por eu ter testado apenas emlocalhost
, por causa dogetStaticProps
. Vou investigar...
E comprovei isso forçando o SWR usar o fallbackData: contentFoundFallback
, quebrando a url da mesma postagem que antes "não havia perdido a formatação", porque ela perdia mas eu que não percebi, foi um detalhe sutil que me deu uma rasteira sensacional 😅 e vou compartilhar isso no TabNews 🤝
…hod > `pages/[username]/[slug]`
06f3c29
to
568cad3
Compare
@aprendendofelipe acompanha essa delicinha de PR, continuando sua implementação sobre a performance das páginas 🤝 |
82910c0
to
be9c29f
Compare
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Opa, boa iniciativa @kaique-soares! Como não existe nenhuma necessidade de recomputar os metadados após o render inicial, a minha ideia era mover para dentro de Então eu começaria sem mudar nada que já existe, mas só adicionando um model Em seguida eu criaria um componente Com isso feito, aí começaria a mudar todas as páginas para usar o model E o componente Acho que era essa minha ideia, se fizer sentido pra você ou se quiser partir por outro caminho, posso ir lhe ajudando 🤝 |
@aprendendofelipe não consegui visualizar muito bem, mas algumas coisas eu capturei 🤝 Sugestão: eu só faria uma movimentação assim depois que a RFC de layouts do Next.js for aprovada e esse novo recurso entrar em produção, pois eu especulo que iremos jogar tudo que temos hoje fora. Então eu vou seguir com esse PR altamente sugiro para reformularmos tudo somente após a RFC. Esse merge também vai me liberar para mandar um PR que estou quase terminando aqui e que implementa um método que encontra o conteúdo |
@filipedeschamps, será que não é melhor então deixar esse PR para depois? Pois já está bastante remendada a parte de metadados, e vamos remendar ainda mais ao invés de aproveitar para organizar a casa? Só um exemplo Mas se quiser encerrar hoje esse PR, posso dar uma refatorada enquanto você cuida do PR que encontra o |
Show! 😍 Então vou continuar aqui com a implementação e que também se tiver conflito, vai ser super simples de resolver 🤝 |
Está feito tudo que eu tinha pensado em fazer 😅 Do que eu tinha listado acima, só não fiz o model, mas na verdade por enquanto não precisa, pois só a rota |
bf0afa0
to
be06843
Compare
Agora entendi o que você queria fazer @aprendendofelipe 😂 👍 Talvez o nome
Então isso possibilita, por exemplo, termos o Mas eu li no PR por cima, porque apesar de tecnicamente eu já ter conseguido fazer tudo sobre o |
Mudei a lógica de acrescentar o |
@aprendendofelipe muiiiito obrigado! 😍 Acessei o Github para nofiticar o @filipedeschamps sobre o progresso de alguns pontos levantados por ele:
e fui direto para a E foi simplismente sensacional o que eu li, muito obrigado! Bom, com toda certeza eu levaria muito mais tempo para implementar o que tu propôs e já implementou 😅 De qualquer forma, valeu muito a experiência e tudo que aprendi até aqui 👍 e vou tentar implementar localmente mesmo assim 😅 |
Eu não tinha entendido justamente por não ter nada de Layout no Se a questão é ter uma base padrão para as tags, tem uma alternativa mais comum que é passar a configuração padrão para o Acho que podemos usar os nomes Acabei de subir essa alteração para você avaliar. Eu mantive o Do jeito que eu fiz irá funcionar os dois jeitos, ou seja, colocando o E o
ou
ou
tem todos o mesmo efeito
Imagina, e se tiver qualquer coisa que você faria diferente, vamos conversando. |
Todas as tags estão sendo geradas como deveriam. Aproveitei para colocar o título na única página que não tinha, que era a de ativação do cadastro. E agora todas as páginas tem descrição padrão, caso não seja informada uma específica. E a performance da página 😍😍😍 ProduçãoEssa branchPs. A diferença de SEO é pq em homologação a Vercel não deixa indexar as páginas ConclusãoAinda podemos melhorar bastante, mas estamos no caminho 🚀 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@filipedeschamps, deixei os dois commits separados para ser fácil de reverter para a versão que você achar melhor. Mas agora que entendi sua intenção com o BaseLayout
, ou seja, que você queria garantir a presença das tags em qualquer página que seja criada futuramente, então a última versão é a que garante isso. Se aprovar eu faço squash dos dois últimos commits.
@aprendendofelipe desculpa a demora em responder!! Vida real aqui me atravessou 😂 E cara que solução sensacional do componente E sugiro deixar todos os commits, ta um histórico MUITO massa! Então nesse ponto não sugiro apagar nada e vou fazer merge 👍 |
Mergeeeed!! Let's goooooo!!! Parabéns @kaique-soares e @aprendendofelipe ! E @kaique-soares viu como valeu a pena abrir o PR? A turma aqui do TabNews é muito massa!! 🤝 |
@aprendendofelipe de onde exatamente é esse report? Seria show testar agora como ficou 🤝 |
Opa, mas é essa a vida que importa! haha
É do web.dev https://web.dev/measure Em produção a pontuação dessa publicação pesada foi de 44 para 73 🚀 Estou testando com essa publicação que tem cópia nos dois ambientes: https://www.tabnews.com.br/jackson541/models-e-consultas-em-django Sempre rodo duas vezes para garantir que já exista cache na região do servidor do teste. |
WOOOOOWW 😍 que sensacional!!!!! Muito muito bom!!! |
Este PR tem como objetivo resolver a issue #650
Com esse PR nós passamos a utilizar o model
removeMarkdown
por dentro dogetStaticProps
nos lugares em que o componenteDefaultLayout
recebe o conteúdo pela propriedadecontent
, passando a limpar obody
do conteudo pelo server-side.A implementação em si me parece simples, no entando, uma dificuldade que tive foi comprovar que a modificação que eu fiz, de fato, ocorreu em todos os lugares que devia. E esse é um ponto que peço a ajuda de vocês, se realmente o único lugar em que o
DefaultLayout
recebe a propriedadecontent
é no arquivopages/[username]/[slug]/index.public.js
👍