Pular para o conteúdo
Development

Duas notas que ninguém nunca viu

Por Victor Da Luz•
rusttauridev-loggreenhouse

O Greenhouse tem dois lugares onde você pode escrever uma nota para si mesmo. Quando você captura uma ideia, pode anotar rapidamente do que se trata. Quando você registra um toque num projeto, pode deixar uma nota de transição, uma “carta para o seu eu futuro” sobre onde você parou. As duas são salvas. Nenhuma das duas jamais aparecia em lugar nenhum do app.

O problema da nota de captura era estrutural: o campo existia em todo item, mas o wire type que envia os dados do item para o frontend, a coisa que todo card do dashboard usa para renderizar, simplesmente não o incluía. A UI não tinha nenhum bug escondendo a nota, não havia lugar nenhum nos dados para a nota sequer chegar. Isso significava que toda decisão de Vault-ou-Work, continuar trabalhando nisso ou arquivar, estava sendo tomada só com o nome de um projeto, às vezes um nome gerado automaticamente se você pulou a etapa de nomear.

A nota de transição era um tipo diferente de falha. Aqueles dados fluem bem, estão ali no histórico de toques, e já existe um comando que os retorna. O diálogo onde você de fato ia querer ler isso, aquele que aparece bem na hora em que você está prestes a registrar um novo toque e retomar de onde parou, simplesmente nunca pedia por ela. Eu construí o mecanismo de entrega e depois nunca liguei de volta o lado da leitura.

Corrigir as duas foi mais sobre fechar essa lacuna do que inventar encanamento novo. Dois campos adicionados ao tipo de item compartilhado, populados a partir de dados que já existiam. Um fetch adicionado ao diálogo de toque na abertura, best-effort, se falhar você simplesmente não recebe o banner, mas não fica impedido de registrar seu toque. Um botão de mostrar no Finder e uma duração de “dormente há” adicionados ao único card que não tinha o que todo outro card já tinha.

Uma decisão de design que tomei no caminho: se “dormente há” deveria calcular a hora atual dentro do componente, ou recebê-la como um valor passado de fora. Fui pelo caminho de passar de fora, com um padrão que usa o relógio real quando ninguém fornece nada. É a mesma regra que o backend deste projeto já segue para qualquer coisa baseada em tempo, nunca chamar o relógio do sistema de dentro de uma função que você quer testar de forma determinística. Um teste pode passar um número fixo e verificar uma string exata, em vez de escrever uma regex que só torce para o limite do dia não cair errado.

Leitura relacionada

Você também pode achar útil

RackNerd

RackNerd VPS

Hospedagem VPS econômica para serviços leves que funcionam continuamente.

Como afiliado da RackNerd, ganho com compras qualificadas.

Saiba mais
Proton

Proton Mail

E-mail criptografado de ponta a ponta, com arquitetura de acesso zero.

Como parceiro da Proton, ganho com compras qualificadas dos serviços de privacidade e segurança da Proton (Pass, Mail, VPN, Drive).

Saiba mais
AdGuard

AdGuard para iOS

Bloqueio de anúncios e rastreadores em todo o sistema no iOS, sem necessidade de um servidor DNS separado.

Como afiliado da AdGuard, ganho com compras qualificadas.

Saiba mais