TDD — Auto-registro na primeira carga (HomePage)
Status
Implementado
Contexto
Quando o usuário faz login pela primeira vez e ainda não tem perfil no backend, a HomePage detecta "perfil não encontrado" e oferece fluxo de auto-registro: seleção de igreja e criação de conta pendente.
Interface de Usuário (UI)
Diálogo exibido na HomePage quando o usuário faz login pela primeira vez sem perfil no backend.
Componentes e organização:
- Título — "Complete seu cadastro" ou similar
- Dropdown Igreja — lista de igrejas via
publicChurchesHttp; obrigatório - Botão Confirmar — submete registro; loading durante chamada
- Mensagem explicando que o cadastro será concluído
Observação: O diálogo só aparece se o usuário tiver email verificado; após sucesso, perfil é recarregado e pode abrir AccountSheet (ProfileDialog) automaticamente.
Contratos
getSignupChurchOptions
- Chama publicChurchesHttp → lista de igrejas para dropdown
registerCurrentUserPendingAccount (callable) ou USER_SELF_REGISTER (gateway)
- Cria UserAccount com status PENDING
- Payload: ministryId (obrigatório), unitId, name?
- Usuário já autenticado (token Firebase)
Fluxo
- HomePage:
_loadMyProfile()→ GET myProfileHttp - Backend retorna 404 ou "perfil não encontrado"
- Se usuário tem email verificado:
_ensurePendingAccountOnFirstLogin() - Abre diálogo para selecionar igreja (getSignupChurchOptions)
- Usuário seleciona igreja e confirma
- Chama registerCurrentUserPendingAccount ou USER_SELF_REGISTER
- Recarrega perfil → abre AccountSheet (ProfileDialog)
Código de referência
frontend/lib/presentation/pages/home/home_page.dart→_ensurePendingAccountOnFirstLogin,_loadMyProfilefrontend/lib/application/use_cases/register_current_user_pending_account.dartfrontend/lib/application/use_cases/get_signup_church_options.dartbackend/functions/src/interfaces/http/register-pending-account-controller.tsbackend/functions/src/application/use-cases/create-pending-account.ts