Skip to content

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 🟢