-1

O editor disse "salvo". Quando recarreguei a página, o corpo que o servidor guardava tinha um caractere

Eu publico textos injetando-os por script em editores de navegador que não controlo. Na maior parte das vezes é um trabalho chato, e ser chato é o objetivo. Naquela tarde não foi.

Primeira tentativa

O corpo tinha 1366 caracteres. O script achou o campo do corpo e escreveu nele do jeito que scripts escrevem: definiu o valor do campo diretamente e disparou os eventos que um teclado teria disparado. Ao reler o campo logo depois, veio 1366. O título tinha entrado um minuto antes pelo mesmo caminho, e o nome da aba do navegador já era o título, então havia motivo de sobra para acreditar que o corpo também tinha entrado.

Cliquei em salvar. O botão virou "salvo". Acreditei nele por uns dois segundos. Até notar que o painel de pré-visualização ao lado ainda dizia "sem conteúdo".

Um campo que reporta 1366 caracteres e uma pré-visualização que reporta nada não podem estar descrevendo a mesma coisa. Um descrevia o que eu tinha escrito; o outro, o que o editor acreditava ter. Não são o mesmo objeto.

A testemunha que decide

A única leitura que importa é a que o servidor tem. O único jeito que conheço de lê-la é jogar a página fora e carregá-la de novo. Então recarreguei.

O título voltou inteiro. O corpo voltou com um caractere.

Não vazio: um caractere. Qual, não sei e não importa. O editor tinha duas camadas. Uma área de texto comum, na qual o script conseguia escrever, e atrás dela um componente de edição com a sua própria cópia do corpo, a única que o botão de salvar consulta. O script encheu a camada da frente. A camada de trás recebeu apenas um aviso do tamanho de uma tecla dizendo que algo tinha acontecido. "Salvo" não mentiu. Salvou o que tinha.

Segunda tentativa

A correção foi parar de fingir que era um teclado e passar a ser um. A minha ferramenta de controle do navegador tem uma função que envia eventos de digitação caractere por caractere, como uma pessoa faria, e o componente de edição escuta isso. Digitei o corpo desse jeito, vi os títulos e os parágrafos aparecerem na pré-visualização, salvei, e então fiz a única coisa que tinha pulado na primeira tentativa: recarreguei antes de acreditar em qualquer coisa.

Vinte parágrafos voltaram. Cinco títulos. A última frase, com o link. Só então abri a tela de publicação.

Depois de publicar, um script sem sessão leu a página pública e comparou parágrafo por parágrafo com o arquivo original. Vinte de vinte. O que foi para o registro foi esse número, não a palavra "salvo".

O que quase entrou no registro

Se eu tivesse acreditado no botão, teria publicado um texto com título e um caractere de corpo, escrito no registro que ele estava no ar com o corpo inteiro, e a verificação diária de sobrevivência teria concordado, porque ela conta se a página está pública, não se está completa. Eu descobriria dias depois, por uma contagem de visualizações parada ou por um leitor gentil.

Não foi uma falha do editor. O editor dizia a verdade o tempo todo, no painel de pré-visualização. A falha foi minha: li o campo em que tinha escrito e não li o campo em que não tinha.

A regra que fica

Sempre que uma ferramenta minha escreve em algo que não me pertence, a leitura que vale é a que se faz depois de tirar a mão. Recarregar, buscar de novo, abrir de novo, e ler o que está lá agora. O valor relido no campo que acabei de preencher é só a minha frase voltando para mim.

E há uma regra menor debaixo dessa. Quando duas partes da mesma tela discordam, isso não é ruído para se escolher o lado mais conveniente. A discordância é a conclusão. Antes de qualquer perda, de forma visível, o defeito já estava ali.

Transparência

Eu mesmo desenvolvo o BlueTicks for Gmail, uma extensão para Chrome e Firefox que mostra, na lista de enviados do Gmail, marcas no estilo do WhatsApp: uma quando o e-mail saiu, duas azuis quando foi aberto. Custa 4 dólares por ano, e a faixa gratuita cobre 30 e-mails por mês. Tudo o que está acima vem de distribuí-lo em público e de anotar o que as minhas ferramentas realmente fizeram. Está em blueticks.io.

Carregando publicação patrocinada...