Favoritar Música
Gerado pelo Writer (Reversa) em 2026-05-11 Unit:
musicas/favoritar-musica
Visão Geral
Permite ao usuário marcar e desmarcar músicas como favoritas, persistindo localmente no SQLite. Não requer autenticação. O estado de favorito é lido do banco, não do store Redux.
Responsabilidades
- Persistir estado de favorito de uma música no SQLite local
- Disparar métricas de favoritar/desfavoritar
- Exibir toast de erro em caso de falha de persistência
Regras de Negócio
- Favoritar não requer autenticação — persiste apenas localmente 🟢
- O store Redux não é atualizado imediatamente após favoritar — o ícone reflete o banco 🟢
- Favoritos são armazenados no repertório padrão id=1 ("Músicas favoritas") 🟢
Requisitos Funcionais
| ID | Requisito | Prioridade | Critério de Aceite |
|---|---|---|---|
| RF-01 | Persistir favorito no SQLite ao tocar no ícone de favorito | Must | Após favoritar, reiniciar app ainda mostra a música como favorita |
| RF-02 | Disparar métrica de favoritar ou desfavoritar | Should | Evento Sentry registrado após a operação |
| RF-03 | Exibir toast de erro se a persistência falhar | Should | Toast visível ao usuário em caso de falha de I/O |
Critérios de Aceitação
Dado que uma música não está favoritada
Quando o usuário toca no ícone de favorito
Então a música é salva no repertório "Músicas favoritas" e o ícone atualiza
Dado que uma música está favoritada
Quando o usuário toca novamente no ícone de favorito
Então a música é removida dos favoritos e o ícone atualiza
Dado que a operação de favoritar falha (I/O error)
Quando o usuário toca no ícone
Então um toast de erro é exibido e o ícone não muda de estado
Rastreabilidade de Código
| Arquivo | Função / Classe | Cobertura |
|---|---|---|
src/store/Musicas/Musicas.action.ts |
setFavorita |
🟢 |
src/repository/musicas/MusicasFavoritasRepository.ts |
update |
🟢 |
src/service/MusicaService.ts |
Metricas.favoritarMusica |
🟢 |