filipegarrett / Salarium

Repositório de desenvolvimento.
1 stars 0 forks source link

Migrar para FirebaseDatabase #23

Closed filipegarrett closed 5 years ago

filipegarrett commented 5 years ago

Para poder persistir dados localmente na ausência de conexão, precisamos migrar todas as instâncias de banco de DatabaseReference para FirebaseReference que permite usar o método setPersistenceEnabled(true).

Isso significa que:

public static DatabaseReference getFirebaseDatabase(){
        if(firebase == null){
            firebase = FirebaseDatabase.getInstance().getReference();

        }
        return firebase;

Não funciona. A implementação correta seria:

public static FirebaseDatabase getFirebaseDatabase(){
        if(firebase == null){
            firebase = FirebaseDatabase.getInstance().setPersistence(true);

        }
        return firebase;

Aí dentro das classes, ao criar um objeto FirebaseDatabase, passamos o .getReference().

Eu fiz uns testes superficiais e encontrei vários problemas: para começar, o getReference() que usamos para apontar para o primeiro nó do banco não pode ser chamado diretamente por um FirebaseDatabase. Encontrei outros problemas também que provocam crash no app referentes à necessidade de se chamar setPersistenceEnabled(true).

Marquei nós dois nessa issue porque a coisa parece que vai ser mais complicada - não porque seja um processo complexo, mas sim porque criamos todo o projeto de um jeito e teremos que retrabalhá-lo - e porque temos várias classes para ajustar. Sugiro fazer testes aí também para ver se você encontra uma forma de migrar o projeto sem tanto estresse.

filipegarrett commented 5 years ago

Eu fiz uns testes aqui por curiosidade em cima de uma teoria que eu tinha. Como o problema no acionamento da persistência local parecia ser relacionado com a necessidade de chamar apenas uma vez o método, acabei aplicando essa chamada na classe App, a primeira que o Android executa quando o aplicativo é aberto e até aqui os testes preliminares tem sido bem sucedidos.