Listar Livros
Gerado pelo Writer (Reversa) em 2026-05-11
doc_level: detalhado | Módulo pai: livros
Visão Geral
Caso de uso que exibe todos os hinários (edições de livro) disponíveis no catálogo local ao usuário, permitindo navegar para ver as músicas de um livro específico.
Responsabilidades
- Disparar carregamento dos livros no store ao montar a tela
- Exibir lista de
EdicaoLivro com título, editora e edição
- Navegar para
LivroScreen ao selecionar um item
Regras de Negócio
- Livros são exibidos em ordem de
livro.titulo ASC, edicao ASC 🟢
- O carregamento é disparado uma única vez na montagem da tela via Redux thunk 🟢
- Um spinner é exibido enquanto o estado do store for
OCIOSO ou CARREGANDO 🟢
- Se nenhum livro estiver disponível, a lista fica vazia sem mensagem de erro explícita 🟡
Requisitos Funcionais
| ID |
Requisito |
Prioridade |
Critério de Aceite |
| RF-01 |
Exibir lista de edições de livros do catálogo local |
Must |
Lista aparece com título, editora e edição de cada livro |
| RF-02 |
Mostrar indicador de carregamento durante fetch |
Should |
ActivityIndicator visível nos estados OCIOSO e CARREGANDO |
| RF-03 |
Navegar para tela de músicas do livro ao selecionar um item |
Must |
Navega para AppStack.Livro com idEdicaoLivro correto |
| RF-04 |
Não recarregar lista se livros já estão no store |
Should |
Dispatch de carregar é feito apenas uma vez; store não é limpo |
Requisitos Não Funcionais
| Tipo |
Requisito inferido |
Evidência no código |
Confiança |
| Performance |
Lista usa FlatList nativa para virtualização |
src/view/screen/LivrosScreen.tsx — <FlatList> |
🟢 |
| Usabilidade |
Bug: allIds aponta para repertorios.ids (ver EC-01) |
src/store/Livros/Livros.selector.ts — allIds |
🔴 |
Critérios de Aceitação
Dado que o usuário acessa a tela de Livros
Quando o carregamento é completado com sucesso
Então a lista exibe todas as edições de livro com título e informações de edição
Dado que o store já possui livros carregados
Quando a tela é montada novamente
Então o dispatch de carregar é re-executado (não há guard de idempotência no carregar geral)
Dado que ocorre erro no carregamento (banco indisponível)
Quando o thunk é rejeitado
Então o estado passa para FALHOU e a lista fica vazia sem feedback explícito ao usuário
Prioridade (MoSCoW)
| Requisito |
MoSCoW |
Justificativa |
| Listar livros do catálogo |
Must |
Caminho crítico — entrada para músicas por livro |
| Spinner de carregamento |
Should |
Feedback visual relevante, mas app funciona sem |
| Navegação para músicas do livro |
Must |
Objetivo principal da tela |
| Deduplicação de carregamento |
Could |
Sem guard no thunk carregar (ao contrário de carregarLivro) |
Rastreabilidade de Código
| Arquivo |
Função / Classe |
Cobertura |
src/view/screen/LivrosScreen.tsx |
LivrosScreen |
🟢 |
src/store/Livros/Livros.action.ts |
LivrosAction.carregar |
🟢 |
src/store/Livros/Livros.selector.ts |
LivrosSelect.allIds |
🔴 (bug) |
src/repository/LivrosRepository.ts |
LivrosRepository.findAll |
🟢 |
src/view/component/list/item/LivroItemList.tsx |
buildLivroItemList |
🟡 |