Sincronização
Centro de controle do modo offline — status da conexão, fila de pendências e sincronização manual com o Firebase.
O que é
O app Expedição Glider Brasil é offline-first: todas as seções funcionam sem conexão com a internet, usando dados armazenados localmente no dispositivo via banco de dados Sembast. A tela de Sincronização é o painel de controle desta funcionalidade — ela exibe o status atual da conexão, quando foi a última sincronização bem-sucedida e quais itens estão aguardando para ser enviados ao servidor quando a conexão for restaurada.
O app sincroniza automaticamente em segundo plano sempre que detecta uma conexão ativa. Mas há situações onde a sincronização pode ser necessária manualmente: após um longo período offline, após resolver um conflito de dados, ou quando você suspeita que os dados exibidos estão desatualizados. Esta tela oferece o botão "Sincronizar agora" para isso.
A arquitetura offline do app usa uma fila de sincronização (sync queue) para garantir que nenhuma ação realizada offline seja perdida. Cada ação (marcar item no checklist, registrar voo, votar em enquete, etc.) é primeiro salva localmente e depois adicionada à fila para envio ao Firebase quando a conexão for restaurada.
Como usar
Acesse a tela de Sincronização pelo menu lateral (Tela Mais → Sincronização) ou pelas Configurações. O painel exibe imediatamente o status atual da conexão e da sincronização.
- Observe o indicador de status de conexão no topo: Verde (Online), Amarelo (Conexão instável), Vermelho (Offline).
- Veja a data e hora da última sincronização bem-sucedida com o Firebase.
- Verifique se há itens na fila de pendências — ações realizadas offline que ainda não foram enviadas ao servidor.
- Se estiver online, toque em "Sincronizar agora" para forçar uma sincronização imediata de todos os dados.
- Acompanhe o progresso da sincronização em tempo real na barra de progresso que aparece durante o processo.
- Ao concluir, um resumo exibe quantos itens foram sincronizados, atualizados e se houve conflitos.
O indicador de status de conexão também aparece como um chip discreto no topo de todas as telas do app. Um chip cinza com "Offline" indica modo offline; o chip desaparece quando online.
Fila de pendências
A fila de pendências lista todas as ações realizadas enquanto o dispositivo estava offline que ainda não foram enviadas ao Firebase. Cada item da fila exibe: tipo de ação (Checklist marcado, Voo registrado, Voto em enquete etc.), data e hora em que a ação foi realizada e o status (Aguardando, Enviando, Falhou).
A fila é processada automaticamente na ordem FIFO (primeiro a entrar, primeiro a sair) quando a conexão é restaurada. Itens com status "Falhou" precisam de atenção: toque no item para ver o motivo da falha (conflito de dados, item excluído por outro usuário, permissão negada) e as opções de resolução (tentar novamente, descartar a ação ou editar os dados antes de reenviar).
Em condições normais, a fila deve estar sempre vazia quando online. Uma fila com muitos itens indica que o dispositivo ficou muito tempo offline. Todos os itens da fila serão enviados assim que a conexão for estável.
Ações disponíveis
| Ação | Quem pode | Como acessar |
|---|---|---|
| Ver status de sincronização | Todos os pilotos aprovados | Tela de Sincronização |
| Forçar sincronização agora | Todos os pilotos aprovados | Botão "Sincronizar agora" |
| Ver fila de pendências | Todos os pilotos aprovados | Seção "Fila" na tela |
| Resolver conflito de dados | Todos os pilotos aprovados | Toque no item com conflito |
| Descartar item da fila | Todos os pilotos aprovados | Toque longo no item → Descartar |
| Limpar cache local | Todos os pilotos aprovados | Configurações → Armazenamento → Limpar cache |
Problemas comuns
A sincronização trava e nunca conclui.
Verifique se a conexão está estável. Uma conexão 3G fraca pode fazer a sincronização demorar muito. Tente fechar e reabrir o app, ou aguarde uma conexão Wi-Fi. Se a sincronização continuar travando, acesse Configurações → Armazenamento → Limpar cache e tente novamente.
Há itens com status "Falhou" na fila há muito tempo.
Itens que falham repetidamente podem ter problemas de dados ou permissão. Toque no item para ver o erro específico. Na maioria dos casos, "Descartar e tentar novamente" resolve. Se o item for um voo ou checklist importante, faça o registro novamente após descartar o item com falha.
Os dados do app parecem desatualizados mesmo estando online.
Toque em "Sincronizar agora" na tela de Sincronização. Se o problema persistir após a sincronização, pode haver um problema com os listeners do Firestore. Faça logout e login novamente para reiniciar as conexões com o Firebase.