Boa tarde, tenho o seguinte banco de dados no firebase, minha dúvida é. Contatos fiz ser uma classe filha de Usuario, e sempre que altero a foto, atualiza em usuarios, no nó child do identificador correspondente, mas quando tento atualizar o nó child de contatos, quanto a foto é alterada também, nao estou conseguindo. No caso em contatos eu defino da seguinte maneira:
firebase = firebase.child("contatos")
.child( identificadorUsuarioLogado )
.child( identificadorContato )
Sendo identificadorUsuarioLogado pegando a id do usuario atual, e identificadorContado pegando a id de um email digitado.
Fazendo assim a busca se possui o email cadastrado, e se caso possua adiciona o contato:
Contato contato = new Contato();
contato.setIdentificadorUsuario( identificadorContato );
contato.setEmail( usuarioContato.getEmail() );
contato.setNome( usuarioContato.getNome() );
contato.setFoto(usuarioContato.getFoto());
firebase.setValue( contato );
Dessa forma, estou apenas dando set pegando o que o usuario tem no momento, ou seja, não estou conseguindo recuperar caso ele atualize a foto:
public static boolean atualizarFotoUsuario(Uri url){
try{
FirebaseUser user = getUsuarioAtual();
UserProfileChangeRequest profile = new UserProfileChangeRequest.Builder()
.setPhotoUri(url)
.build();
user.updateProfile(profile).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (!task.isSuccessful()){
Log.d("Perfil", "Erro ao atualizar foto de perfil");
}
}
});
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
public void atualizaFotoUsuario(Uri url){
boolean retorno = UsuarioFirebase.atualizarFotoUsuario(url);
if(retorno){
usuarioLogado.setFoto(url.toString());
usuarioLogado.atualizar();
Toast.makeText(ConfiguracoesActivity.this,
"Sua foto foi alterada!",
Toast.LENGTH_SHORT).show();
}
Alguem poderia me ajudar que tipo de implementação preciso fazer? Obrigado.