Skip to content

Compartilhar Repertório — Requisitos

Gerado pelo Writer (Reversa) em 2026-05-11 Caso de uso do módulo repertorios

Visão Geral

Permite ao usuário enviar um repertório para a API Canta.app e compartilhá-lo via dialog nativo do sistema operacional (WhatsApp, e-mail, etc.) com uma mensagem formatada em Markdown.

Regras de Negócio

  • Compartilhar requer autenticação Google — o fluxo OAuth é iniciado automaticamente se o usuário não estiver logado 🟢
  • A mensagem gerada usa Markdown compatível com WhatsApp: *negrito*, _itálico_, `código` 🟢
  • O slug.corrente é atualizado localmente após resposta da API 🟢
  • Falha de rede exibe Toast "sem internet"; não altera slug.corrente 🟢
  • Cancelamento do OAuth aborta o fluxo sem mensagem de erro (retorno silencioso) 🟢
  • A mensagem inclui metadados de data e dia litúrgico quando presentes nos metadados do repertório 🟢

Requisitos Funcionais

ID Requisito Prioridade Critério de Aceite
RF-01 Autenticar usuário via Google OAuth se necessário Must Bearer JWT obtido; fluxo continua; cancelamento aborta sem erro visível
RF-02 Enviar repertório à API (POST se novo, PUT se já tem slug) Must API recebe os dados; resposta contém conta.slug e slug
RF-03 Atualizar slug.corrente localmente após resposta da API Must slug_corrente atualizado no banco e no store
RF-04 Gerar mensagem Markdown com título, itens e URL Must Mensagem contém título, metadata, itens formatados e URL canta.app/repertorios/?conta:slug
RF-05 Abrir dialog nativo de compartilhamento do SO Must Dialog aparece com a mensagem pré-preenchida
RF-06 Registrar métrica de compartilhamento no Sentry Should Metricas.compartilharRepertorio() chamado após dialog aberto
RF-07 Exibir Toast em caso de erro de rede Must Toast "sem internet" exibido; slug.corrente não alterado

Critérios de Aceitação

Dado que o usuário não está logado e aciona compartilhar
Quando o fluxo OAuth Google é iniciado e completado
Então o repertório é enviado à API e o dialog de compartilhamento abre

Dado que o usuário cancela o fluxo OAuth
Quando o dialog é fechado sem completar
Então o compartilhamento é abortado e nenhum Toast de erro é exibido

Dado que o usuário compartilha com sucesso
Quando a API retorna conta.slug e slug
Então slug_corrente é atualizado localmente e o dialog nativo abre com a mensagem

Dado que há falha de rede durante o compartilhamento
Quando a API retorna erro de conexão
Então um Toast "sem internet" é exibido e slug_corrente não é alterado