Contexto
O hook useAddresses() busca de /mocks/adresses.json (com typo no nome). A página de endereços lê addresses.enderecos.lista — um shape que não corresponde ao retorno real da API (GET /address retorna { addresses: [{ _id, cep, endereco, bairro, estado, complemento, active }] }). Parte da migração descrita em #63.
Decisão de design
Substituir o fetch mock pelo Kubb hook getAddress() e criar adapter que traduz o shape da API pro shape esperado pelos componentes. O mapeamento principal: _id → id, endereco → rua, active → principal, adicionar cidade (a API atual não retorna — pode precisar de ajuste no backend).
O que fazer
- Substituir
useAddresses() → getAddress() (Kubb)
- Criar adapter
toAddressProps(): _id → id, endereco → rua, active → principal
- Verificar se a API retorna
cidade — se não, abrir issue de backend
- Conectar
usePutActiveAddress pra marcar endereço como ativo
- Remover mock:
public/mocks/adresses.json
- Atualizar a página de endereços pra ler o novo shape
Fora de escopo
- CRUD completo de endereços (criar, editar, deletar)
- Integração com ViaCEP na listagem (já existe no cadastro)
Comportamento esperado
- Página de endereços carrega lista da API real
- Endereço principal é destacado (campo
active)
- Usuário pode marcar outro endereço como ativo
Critérios de aceite
Arquivos relevantes
src/features/addresses/hooks/useAddresses.ts
src/app/(public)/address/page.tsx
src/kubb/hooks/useGetAddress.ts
src/kubb/hooks/usePutActiveAddress.ts
Parte de #63.
Contexto
O hook
useAddresses()busca de/mocks/adresses.json(com typo no nome). A página de endereços lêaddresses.enderecos.lista— um shape que não corresponde ao retorno real da API (GET /addressretorna{ addresses: [{ _id, cep, endereco, bairro, estado, complemento, active }] }). Parte da migração descrita em #63.Decisão de design
Substituir o fetch mock pelo Kubb hook
getAddress()e criar adapter que traduz o shape da API pro shape esperado pelos componentes. O mapeamento principal:_id→id,endereco→rua,active→principal, adicionarcidade(a API atual não retorna — pode precisar de ajuste no backend).O que fazer
useAddresses()→getAddress()(Kubb)toAddressProps():_id→id,endereco→rua,active→principalcidade— se não, abrir issue de backendusePutActiveAddresspra marcar endereço como ativopublic/mocks/adresses.jsonFora de escopo
Comportamento esperado
active)Critérios de aceite
Arquivos relevantes
src/features/addresses/hooks/useAddresses.tssrc/app/(public)/address/page.tsxsrc/kubb/hooks/useGetAddress.tssrc/kubb/hooks/usePutActiveAddress.tsParte de #63.