Skip to content

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.tsallIds 🔴

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 🟡