Skip to content
JoaoSilva edited this page Oct 1, 2026 · 5 revisions

Estado atual — 01/10/2026: Estado-Atual reúne contrato, integração, limitações e validação da sincronização. Registros anteriores abaixo são históricos.

Welcome to the vejaOprecoApp wiki!

Atualizações - 23 de maio

  • Arquitetura Firebase: Implementação da conexão Firestore.firestore() e estruturação da decodificação assíncrona (async/await) utilizando compactMap para OfertaItem.
  • Estudos e Mapeamento: Diferenciação do ciclo de vida de Threads vs Memória (ARC) e integração transparente de dados do Firestore no ecossistema Swift.
  • Servidor MCP: Adequação do apontamento e diretório para o backend (veja-o-preco-backend).

Atualizações - 25 de maio

  • Arquitetura MVVM: Refatoração da OfertasViewModel para injetar o FirebaseService de verdade em substituição aos Mocks de teste.
  • Concorrência Segura (MainActor): Análise e implementação do atributo @MainActor para resolver o "Thread Confinement". Garantia de que modificações no estado (@Published) disparadas pela Task de background publiquem atualizações estritamente na Main Thread, prevenindo travamentos e purple warnings de UI.
  • Separação de Responsabilidades: Consolidação da regra de que a ViewModel não constrói a tela, atuando unicamente como gestora de estado ("Locutor de Rádio") para a View ("Ouvinte").

Atualizações - 28 de maio

  • Error Handling (Tratamento de Erros): Refinamento do FirebaseService.swift. Substituição da palavra try purista pelo try? dentro da varredura do compactMap. Essa abordagem amansa o early-exit da Thread e permite o descarte silencioso (nil) apenas do item defeituoso, garantindo a integridade e resiliência da coleção de ofertas, sem falhar a listagem inteira.
  • Codable no Firebase: Adição do módulo oficial FirebaseFirestoreSwift para expor o "Syntactic Sugar" de parsing via .data(as:).
  • Motor de Concorrência (Concurrency Runtime): Desconstrução conceitual aprofundada da relação estrita entre as assinaturas async ↔ await (suspensão sem bloqueio da CPU) e throws ↔ try (propagação e mitigação de erros), mapeando o Yield da Thread e o controle de estado no ecossistema Swift.

Clone this wiki locally