As informações de credenciais do usuário e configurações do ambiente eram salvas no ionic/storage, com o sqlite e um database chamado totvshr. Com a atualização dos plug-ins para o Capacitor, não foi possível permanecer com este plug-in funcionando, mesmo atualizando ele juntamente com o IONIC, configurando ele de maneira compatível com o Capacitor, ao sair do aplicativo e entrar novamente, o mesmo apagava todos os dados. Para que todos os clientes não precisassem configurar novamente o aplicativo ao atualizar para o Meu RH 3.0, foi criado uma sincronização, onde busca todos os dados do ionic/storage e salva no novo banco, é o Preferences do Capacitor. Terá maior clareza no entendimento, com a explicação do funcionamento no código:

No service de sincronização SyncCordovaDataCapacitorService, é conectado com o antigo banco de dados, colocando o mesmo nome do database e configurando o driver.

Após a conexão, terá 3 etapas feitas no método syncUserInformationFromOldAppToNewApp  que será explicada por cor destacada no quadrado abaixo:

Vermelho: Após criar a conexão com o antigo banco, ele verifica se tinha alguma informação do usuário salva no dispositivo.

Amarelo: Caso tenha informações salvas, a primeira a processado sempre será a de configurações salvas, salvando as informações no Preferences no mesmo formato e com a mesma chave.

Verde: Salvará o restante das informações, simulando a configuração do usuário manualmente ou por QR Code.

Ao finalizar este procedimento, é salvo uma informação no Preferences para identificar se o usuário já realizou a sincronização, fazendo com que as próximas vezes que ele faça login não necessite fazer o processamento da sincronização. Está informação é salva no seguinte formato:

Key: synced_cordova_to_capacitor

Value: um objeto no formato:

  • date: Data e horário atual da sincronização.
  • hasError: booleano significando se houve algum erro na sincronização.

Por fim, o método de sincronismo syncUserInformationFromOldAppToNewApp retornará um enumerador com os possíveis resultados:

SYNCED_WITH_DATA: Foi feito a sincronização e o dispositivo tinha informações salvas.

SYNCED_WITHOUT_DATA: Foi feito a sincronização e o dispositivo não tinha informações salvas.

SYNCED_ERROR: Foi realizado a tentativa da sincronização mas houve erros.

Portanto, o app.component.ts no ngOninit irá verificar através do método isAlreadySynchronizedDataFromOldAppWithNewApp se já houve sincronização, e caso não chamará o método explicado acima para que isso seja feito. Para o usuário, o sincronismo acontece e uma mensagem é apresentada com um loader, com texto semelhante á Sincronizando os dados.

  • Sem rótulos