Sincronização
Quando você trabalha offline, o Scripvio armazena alterações em uma fila local (SQLite no dispositivo). Assim que a rede volta, o app esvazia automaticamente essa fila para o servidor — na maioria dos casos sem passo manual.
Disparo automático
Seção intitulada “Disparo automático”sequenceDiagram participant A as App participant L as Fila local participant S as Servidor Note over A: Perda de rede A->>L: Notas, diário, acompanhamento na fila Note over A: Rede detectada A->>A: Banner Sincronizando… A->>S: flushOfflineQueue (notas) A->>S: flushOfflineQueue (diário) A->>S: flushOfflineQueue (acompanhamento) S-->>A: Ids servidor, ACK A->>L: Fila esvaziada ou reduzida| Evento | Comportamento |
|---|---|
| Alteração local | Contador da fila +1 — banner Algumas alterações aguardam… se online sem sync |
| Rede de volta | Banner Sincronizando com o servidor… e envio |
| Sucesso | Banner some (fila = 0) |
| Falha parcial / total | Falha na sincronização… — fila mantida, nova tentativa no próximo online |
O app escuta mudanças de conectividade (connectivity_plus) continuamente.
O que entra na fila?
Seção intitulada “O que entra na fila?”A fila agrega vários tipos de operação:
| Domínio | Exemplos de operações |
|---|---|
| Notas | Criações (local_…), patches, exclusões |
| Seções | Criar, atualizar, reordenar |
| Referências da nota | Versículos estruturados (local_verse_…) |
| Diário | Criações, edições, publicação pendente |
| Acompanhamento | Leituras, orações, meditações criadas ou alteradas |
| Lembretes (preferências) | Salvamento adiado se API indisponível |
Um banner global reflete a soma dessas filas (sem contador por tipo na UI).
Ordem e lógica de envio
Seção intitulada “Ordem e lógica de envio”| Princípio | Detalhe |
|---|---|
| Flush sequencial | Notas → diário → acompanhamento (a cada reconexão) |
| Criar antes de patch | Nota local_… é criada no servidor antes de patches dependentes |
| Falha de rede | Linhas permanecem na fila (treatDioFailureAsDeferredSync: timeout, 5xx, sem rede) |
| Requisição cancelada | Não entra na fila por padrão |
Você não gerencia a ordem manualmente; app e servidor tratam dependências (ex.: ACK de patch da nota).
Após sync bem-sucedida
Seção intitulada “Após sync bem-sucedida”| Efeito | Onde você vê |
|---|---|
local_… → id servidor | Listas Criar, editores |
| Publicação pendente aplicada | Entrada aparece na Biblioteca após atualizar |
| Painel de Acompanhamento | Atualizado (gráfico, calendário) |
| Referências pendentes | Badges « pendente » removidos |
Notificações (opcional)
Seção intitulada “Notificações (opcional)”Conforme Notificações da conta:
- Push: pode sinalizar sync concluída ou falha (configuração servidor / Firebase);
- E-mail: resumo possível após sync (evolução de produto).
Lembretes pessoais de Acompanhamento são locais — independentes desta sync de conteúdo.
Publicação e sync
Seção intitulada “Publicação e sync”| Ação offline | Mensagem ao usuário | Após sync |
|---|---|---|
| Publicar uma nota | Publicação na fila (offline). | Nota publicada na Biblioteca |
| Publicar diário | Publicação na fila (offline). | Entrada de diário publicada |
Até o servidor confirmar a publicação, a Biblioteca pode não mostrar o conteúdo como publicado.
Vários dispositivos
Seção intitulada “Vários dispositivos”| Situação | Risco |
|---|---|
| Mesma nota editada no celular A (offline) e tablet B (online) | Conflito possível — última sync ou regras do servidor |
| Somente leitura em B enquanto trabalha em A | B vê versão antiga até A sincronizar |
Falha de sincronização
Seção intitulada “Falha de sincronização”| Sintoma | Causa provável | Ações |
|---|---|---|
| Banner Falha na sincronização… | API 5xx, timeout, rede instável | Fique online; reabra o app |
| Fila não esvazia | Erro recorrente em um item | Anote a mensagem; suporte |
| Dados ainda visíveis localmente | Normal | Nada se « perde » no dispositivo até você sair |
| Logout forçado offline | Diálogo de aviso | Confirme só se aceitar perder dados locais |
Tooltips do editor podem exibir Aguardando sincronização ou Falha na sincronização — ainda salvo neste dispositivo em alguns versículos.
Ações que dependem da sync
Seção intitulada “Ações que dependem da sync”| Ação | Vínculo com sync |
|---|---|
| Exportar PDF | Oferece Sincronizar antes de exportar se fila não vazia |
| Pesquisa → Adicionar versículo | Exige nota/diário já no servidor |
| Vínculo Acompanhamento ↔ diário | Após ids estáveis no servidor |
| Atualizar perfil | Pull do perfil = rede |
Logout e limpeza local
Seção intitulada “Logout e limpeza local”No logout, o Scripvio pode limpar cache e fila local nesse dispositivo (especialmente se confirmar offline com dados não sincronizados).
No login em novo dispositivo: download dos dados da conta + cache inicial (tipos de evento etc.).
→ Perfil
Verificar se tudo sincronizou
Seção intitulada “Verificar se tudo sincronizou”| Indicador | Estado « OK » |
|---|---|
| Banner offline/sync | Ausente |
Nota local_… | Substituída por id numérico / UUID do servidor |
| Publicação | Visível na Biblioteca |
| Exportar PDF | Permitido sem diálogo de sync prévia |
Se o banner Aguardando persistir online: mantenha o app em primeiro plano um momento ou reabra.
Posso sincronizar manualmente?
Sem botão dedicado na UI atual — reconectar e abrir o app relança o flush.
Por quanto tempo a fila é mantida?
Até sucesso, logout (purge) ou reinstalação.
A sync consome muitos dados?
Envia alterações (JSON), não o catálogo inteiro — razoável no mobile.
Sync em segundo plano no iOS/Android?
Depende do SO; reabrir o Scripvio após a rede é o mais confiável.
Guias relacionados
Seção intitulada “Guias relacionados”| Assunto | Link |
|---|---|
| Modo offline | Modo offline |
| FAQ | Offline e sync |
| Notas | Rascunho e publicação |
| Biblioteca | Rascunhos e publicados |