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.

  1. Observe o indicador de status de conexão no topo: Verde (Online), Amarelo (Conexão instável), Vermelho (Offline).
  2. Veja a data e hora da última sincronização bem-sucedida com o Firebase.
  3. Verifique se há itens na fila de pendências — ações realizadas offline que ainda não foram enviadas ao servidor.
  4. Se estiver online, toque em "Sincronizar agora" para forçar uma sincronização imediata de todos os dados.
  5. Acompanhe o progresso da sincronização em tempo real na barra de progresso que aparece durante o processo.
  6. 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.

Sincronização automática: o app sincroniza automaticamente quando: (1) o app é aberto com conexão ativa; (2) o dispositivo passa de offline para online; (3) há mais de 30 minutos desde a última sincronização. Não é necessário sincronizar manualmente na maioria dos casos.

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.

Conflitos: em casos raros, dois usuários podem editar o mesmo dado offline. O app detecta conflitos automaticamente e exibe um aviso com as duas versões para que você escolha qual manter. Conflitos não resolvidos ficam destacados em laranja na fila.

Ações disponíveis

AçãoQuem podeComo acessar
Ver status de sincronizaçãoTodos os pilotos aprovadosTela de Sincronização
Forçar sincronização agoraTodos os pilotos aprovadosBotão "Sincronizar agora"
Ver fila de pendênciasTodos os pilotos aprovadosSeção "Fila" na tela
Resolver conflito de dadosTodos os pilotos aprovadosToque no item com conflito
Descartar item da filaTodos os pilotos aprovadosToque longo no item → Descartar
Limpar cache localTodos os pilotos aprovadosConfiguraçõ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.

Dica para a expedição: antes de partir para locais sem internet (como a duna de voo), abra o app com Wi-Fi e faça uma sincronização manual. Isso garante que você tem a versão mais atualizada de todos os dados para usar offline.