Skip to main content

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

  1. HomePage: _loadMyProfile() → GET myProfileHttp
  2. Backend retorna 404 ou "perfil não encontrado"
  3. Se usuário tem email verificado: _ensurePendingAccountOnFirstLogin()
  4. Abre diálogo para selecionar igreja (getSignupChurchOptions)
  5. Usuário seleciona igreja e confirma
  6. Chama registerCurrentUserPendingAccount ou USER_SELF_REGISTER
  7. Recarrega perfil → abre AccountSheet (ProfileDialog)

Código de referência

  • frontend/lib/presentation/pages/home/home_page.dart_ensurePendingAccountOnFirstLogin, _loadMyProfile
  • frontend/lib/application/use_cases/register_current_user_pending_account.dart
  • frontend/lib/application/use_cases/get_signup_church_options.dart
  • backend/functions/src/interfaces/http/register-pending-account-controller.ts
  • backend/functions/src/application/use-cases/create-pending-account.ts