Compartilhar Repertório — Design Técnico
Gerado pelo Writer (Reversa) em 2026-05-11
Fluxo Completo
compartilharRepertorio(id_repertorio)
→ CompartilharService.getToken()
→ CredentialsService.getGenericPassword()
→ Se não existe ou expirado → Auth.autenticar()
→ OAuth PKCE Google → POST /auth → Bearer JWT
→ Retorna idToken
→ Se token undefined → abortar silenciosamente
→ Api.compartilharRepertorio(bearer, { repertorio, itens })
→ Se slug.corrente existe → PUT /api/v1/repertorios/{slug_corrente}
→ Se não → POST /api/v1/repertorios
→ Recebe { conta: { slug: contaSlug }, slug: repertorioSlug }
→ RepertoriosRepository.updateSlugCorrente(id_repertorio, `${contaSlug}:${repertorioSlug}`)
→ RepertorioService.gerarMensagemCompartilhamento(repertorio, itens, url)
→ Linha 1: *Título do Repertório*
→ Linha 2: metadata (data pt-BR longa + dia litúrgico romcal se disponível)
→ Para cada item em ordem_musicas:
· `tonalidade` + _momento_ + título/termo
· Se tem livro: sigla + índice (ex: "CE 23")
→ URL: https://canta.app/repertorios/?{contaSlug}:{repertorioSlug}
→ Share.share({ message: mensagemMarkdown }) [RN dialog nativo]
→ Metricas.compartilharRepertorio()
Formato da Mensagem Gerada
*Missa de Domingo*
_5 de junho de 2026 — Solenidade de Pentecostes_
`Lá menor` _Entrada_ Ave Maria Cheia de Graça (CE 12)
_Ofertório_ Vem, Espírito Santo
`Sol maior` _Comunhão_ Cordeiro de Deus
https://canta.app/repertorios/?joao123:missa-domingo-abc
Dependências
| Dependência | Papel | Confiança |
|---|---|---|
CompartilharService.getToken |
Provê Bearer JWT com renovação automática | 🟢 |
Auth.autenticar |
OAuth PKCE Google quando não logado | 🟢 |
Api.compartilharRepertorio |
POST/PUT para API Canta.app | 🟢 |
RepertorioService.gerarMensagem... |
Formata texto Markdown compatível com WhatsApp | 🟢 |
CalendarioLiturgicoService |
Resolve nome do dia litúrgico para metadados | 🟢 |
Share.share (React Native) |
Dialog nativo de compartilhamento | 🟢 |
Metricas.compartilharRepertorio |
Sentry Metrics | 🟢 |