Ver Detalhes do Livro — Tarefas de Implementação
Gerado pelo Writer (Reversa) em 2026-05-11
doc_level: detalhado
Pré-requisitos
- [ ]
LivrosRepository.findByIdimplementado - [ ]
LivrosAction.carregarLivrocom guard de idempotência disponível - [ ]
openLinkimplementado emsrc/arch/util/linking.ts - [ ] Rota
AppStack.LivroDetalhesdefinida no navigator
Tarefas
- [ ] T-01 — Implementar
LivroDetalhesScreencom 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.tsx—hasSite+disabled={!hasSite} - Critério de pronto: Botão habilitado apenas quando
livro.sitenão énull/undefined -
Confiança: 🟢
-
[ ] T-03 — Implementar
comprarVersaousandoopenLink - Origem no legado:
LivroDetalhesScreen.tsx—comprarVersao = () => 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
openLinkcom validação de schema de URL - Origem no legado:
src/arch/util/linking.ts— ausência de validação - Critério de pronto:
openLinkrejeita URLs sem schemahttp://ouhttps://; 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
- T-01 (layout base)
- T-02 + T-03 (lógica do botão)
- T-04 (validação de URL — segurança)
- T-05 (UX polish)
Lacunas Pendentes (🔴)
- Sem tratamento de UI quando
carregarLivroé rejeitado (livro não encontrado) openLinksem validação pode causar crash silencioso em URLs malformadas