Skip to content

Ver Detalhes do Livro — Tarefas de Implementação

Gerado pelo Writer (Reversa) em 2026-05-11 doc_level: detalhado

Pré-requisitos

  • [ ] LivrosRepository.findById implementado
  • [ ] LivrosAction.carregarLivro com guard de idempotência disponível
  • [ ] openLink implementado em src/arch/util/linking.ts
  • [ ] Rota AppStack.LivroDetalhes definida no navigator

Tarefas

  • [ ] T-01 — Implementar LivroDetalhesScreen com layout de ScrollView
  • Origem no legado: src/view/screen/LivroDetalhesScreen.tsx
  • Critério de pronto: Tela exibe título, subtítulo (edição, ano, editora), descrição e botão
  • Confiança: 🟢

  • [ ] T-02 — Implementar lógica de habilitação do botão baseada em site

  • Origem no legado: LivroDetalhesScreen.tsxhasSite + disabled={!hasSite}
  • Critério de pronto: Botão habilitado apenas quando livro.site não é null/undefined
  • Confiança: 🟢

  • [ ] T-03 — Implementar comprarVersao usando openLink

  • Origem no legado: LivroDetalhesScreen.tsxcomprarVersao = () => livro?.site && openLink(livro.site)
  • Critério de pronto: Pressionar botão habilitado abre o site da editora no browser externo
  • Confiança: 🟢

  • [ ] T-04 — Implementar openLink com validação de schema de URL

  • Origem no legado: src/arch/util/linking.ts — ausência de validação
  • Critério de pronto: openLink rejeita URLs sem schema http:// ou https://; exibe toast de erro quando falha
  • Confiança: 🟡

  • [ ] T-05 — Adicionar indicador de carregamento durante fetch do livro

  • Origem no legado: Não implementado
  • Critério de pronto: Spinner ou skeleton exibido quando livro === undefined
  • Confiança: 🟡

Tarefas de Teste

  • [ ] TT-01 — Happy path: livro com site → botão habilitado → link aberto
  • [ ] TT-02 — Sem site: livro com site = null → botão desabilitado
  • [ ] TT-03 — Loading state: livro não no store → spinner → dados exibidos após fetch

Ordem Sugerida

  1. T-01 (layout base)
  2. T-02 + T-03 (lógica do botão)
  3. T-04 (validação de URL — segurança)
  4. T-05 (UX polish)

Lacunas Pendentes (🔴)

  • Sem tratamento de UI quando carregarLivro é rejeitado (livro não encontrado)
  • openLink sem validação pode causar crash silencioso em URLs malformadas