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:
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.