Skip to main content

PRD — Diálogo de perfil do usuário (ProfileDialog)

Status

Implementado

Contexto

O produto oferece uma tela de perfil do usuário na forma de um diálogo modal (ProfileDialog), aberto ao clicar no avatar no header da Home quando o usuário está autenticado. Essa tela concentra a visualização e edição dos dados do perfil, o gerenciamento de cargos na EBD, mensagens e preferências de aparência.

A autoridade dos dados é o backend; decisões de ciclo de vida e armazenamento constam no ADR-0013 — Perfil de usuário e ciclo de vida.


Comportamento do produto

Acesso

  • Gatilho: clique/toque no avatar do usuário no header da página Home (quando logado).
  • Resultado: abre o ProfileDialog em modal, com o perfil já carregado (dados vindos do último carregamento do perfil na Home).

Estrutura da tela

  • Título: "Perfil".
  • Navegação: três abas — Dados Pessoais, Perfil na EBD, Mensagens e Preferências.
  • Rodapé: botão Salvar perfil (aplica à aba Dados Pessoais), botão Sair, e botão de fechar (X).
  • Regra de reflexo em tela: conforme ADR-0021, toda ação que altere o perfil ou realize chamada ao backend deve refletir imediatamente na tela, sem fechar o diálogo.

Abas e funcionalidades

1. Dados Pessoais

  • Objetivo: exibir e editar dados cadastrais e avatar.
  • Conteúdo: avatar (preview circular, iniciais ou foto), nome completo, apelido, e-mail (somente leitura), telefone, dropdown de igreja.
  • Avatar: alteração por URL (colar e salvar), galeria ou câmera; ao tocar no avatar abre visualizador para zoom/posição e confirmar; indicação quando há alteração não salva.
  • Igreja: lista carregada do backend (publicChurchesHttp); troca de igreja pode exigir confirmação (impacto no perfil na EBD).
  • Ação principal: Salvar perfil — persiste nome, apelido, telefone, igreja e avatar no backend (USER_PROFILE_UPDATE).
  • Detalhe técnico: TDD — Tab Dados Pessoais.

2. Perfil na EBD

  • Objetivo: gerenciar cargo ativo, solicitar novos cargos e (quando aplicável) aprovar/rejeitar solicitações pendentes.
  • Conteúdo:
    • Cargo atual de operação: texto + ChoiceChips com os cargos elegíveis; seleção única; ao mudar, pode exigir confirmação.
    • Cargo desejado: dropdown com papéis que o usuário ainda não possui e ainda não solicitou (excluindo aprovados e pendentes); loading enquanto carrega.
    • Solicitar aprovação de cargo: quando o cargo desejado exige aprovação — motivo (se obrigatório) e botão "Solicitar aprovação de cargo"; quando não exige — botão "Confirma o novo cargo".
    • Minhas solicitações e Aprovações pendentes exibidas em sub-abas (uma por vez): na sub-aba "Minhas solicitações" aparece a lista das próprias solicitações (com opção excluir); na sub-aba "Aprovações pendentes" aparece a lista de solicitações pendentes para o usuário aprovar (quando tem cargo com permissão), com botões Aprovar, Rejeitar, Excluir e confirmação quando aplicável.
  • Quem aprova: usuários cujo papel (conforme backend) está no nível hierárquico superior ao cargo solicitado e com permissão de aprovar no catálogo (can_approve_roles). Detalhes e validações: TDD Perfil na EBD — Definições de aprovação.
  • Ações: trocar cargo ativo (ChoiceChip ou "Confirma o novo cargo"), solicitar cargo, aprovar/rejeitar/excluir solicitações.
  • Detalhe técnico: TDD — Tab Perfil na EBD, TDD API Gateway.

3. Mensagens e Preferências

  • Objetivo: exibir mensagens do perfil e editar preferências de aparência.
  • Sub-abas:
    • Mensagens: lista de mensagens do perfil (destaques e demais agrupadas); sem ação de marcar como lida na UI atual.
    • Preferências: skin do app (Default, Light, Dark, Sepia), botão Salvar preferências (USER_PREFERENCES_UPDATE).
  • Detalhe técnico: TDD — Tab Mensagens e Preferências.

  • Salvar perfil: aplica alterações da aba Dados Pessoais.
  • Sair: encerra a sessão (clear do perfil em memória + Firebase Auth signOut) e fecha o diálogo.
  • Fechar (X): fecha o diálogo sem deslogar.

Critérios de aceite (resumo)

  • Usuário logado consegue abrir o perfil pelo avatar na Home e ver suas informações em três abas.
  • Dados pessoais e avatar podem ser editados e salvos; a tela reflete o resultado da operação sem fechar o diálogo.
  • Cargo ativo pode ser alterado; cargo desejado pode ser solicitado ou confirmado conforme regras do catálogo; solicitações pendentes podem ser aprovadas/rejeitadas por quem tem permissão.
  • Preferências de skin podem ser alteradas e salvas; mensagens do perfil são exibidas.
  • Botão Sair encerra a sessão e fecha o diálogo; botão Fechar apenas fecha o diálogo.

Referências

TipoDocumento
BRD(a criar se houver requisito de negócio explícito para "perfil único")
ADRADR-0013 — Perfil de usuário e ciclo de vida, ADR-0021 — Reflexo em tela após ações, ADR-0009 — Princípios de interface
TDDProfileDialog README, TDD Dados Pessoais, TDD Perfil na EBD, TDD Mensagens e Preferências, TDD API Perfil
Códigofrontend/lib/presentation/modules/profile_dialog/