Как сделать что бы при изменении пароля или почты в профиле пользователя, отображались изменения и в файрбаз
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.example.myapplication.Model.User;
import com.google.android.gms.auth.api.signin.internal.Storage;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.EmailAuthProvider;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.StorageReference;
import java.util.HashMap;
public class profile extends AppCompatActivity {
private FirebaseAuth firebaseAuth;
FirebaseUser firebaseUser;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
StorageReference storageReference;
TextView editname, editpassword,editemail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
editname = findViewById(R.id.editname);
editpassword = findViewById(R.id.changepassword);
firebaseAuth = firebaseAuth.getInstance();
editemail = findViewById(R.id.editemail);
String uid;
firebaseUser = firebaseAuth.getCurrentUser();
firebaseDatabase = FirebaseDatabase.getInstance();
databaseReference = firebaseDatabase.getReference("Users");
editpassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPasswordChangeDailog();
}
});
editname.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showNamephoneupdate("name");
}
});
editemail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setEditemail();
}
});
}
private void setEditemail(){
View view = LayoutInflater.from(this).inflate(R.layout.activity_emailedit, null);
final EditText oldemail = view.findViewById(R.id.oldemaillog);
final EditText newemail = view.findViewById(R.id.newemaillog);
final EditText passttt = view.findViewById(R.id.passlog);
Button editemail = view.findViewById(R.id.updateemail);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(view);
final AlertDialog dialog = builder.create();
dialog.show();
editemail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String oldem = oldemail.getText().toString().trim();
String newem = newemail.getText().toString().trim();
String pass1 = passttt.getText().toString().trim();
if (TextUtils.isEmpty(oldem)) {
Toast.makeText(profile.this, "Current Password cant be empty", Toast.LENGTH_LONG).show();
return;
}
if (TextUtils.isEmpty(newem)) {
Toast.makeText(profile.this, "New Password cant be empty", Toast.LENGTH_LONG).show();
return;
}
dialog.dismiss();
updateemail(oldem, newem, pass1);
}
});
}
private void updateemail(String oldem, String newem, String pass1) {
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
AuthCredential authCredential = EmailAuthProvider.getCredential(oldem, pass1);
user.reauthenticate(authCredential).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d("value", "User re-authenticated.");
user.updateEmail(newem)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(profile.this, "Пароль успешно заменен", Toast.LENGTH_LONG).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(profile.this, "ошибка", Toast.LENGTH_LONG).show();
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(profile.this, "ошибка", Toast.LENGTH_LONG).show();
}
});;
}
private void showPasswordChangeDailog() {
View view = LayoutInflater.from(this).inflate(R.layout.activity_editpassword, null);
final EditText oldpass = view.findViewById(R.id.oldpasslog);
final EditText newpass = view.findViewById(R.id.newpasslog);
Button editpass = view.findViewById(R.id.updatepass);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(view);
final AlertDialog dialog = builder.create();
dialog.show();
editpass.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String oldp = oldpass.getText().toString().trim();
String newp = newpass.getText().toString().trim();
if (TextUtils.isEmpty(oldp)) {
Toast.makeText(profile.this, "Current Password cant be empty", Toast.LENGTH_LONG).show();
return;
}
if (TextUtils.isEmpty(newp)) {
Toast.makeText(profile.this, "New Password cant be empty", Toast.LENGTH_LONG).show();
return;
}
dialog.dismiss();
updatePassword(oldp, newp);
}
});
}
private void updatePassword(String oldp, final String newp) {
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
AuthCredential authCredential = EmailAuthProvider.getCredential(user.getEmail(), oldp);
user.updatePassword(newp);
user.reauthenticate(authCredential)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
user.updatePassword(newp)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(profile.this, "Пароль успешно заменен", Toast.LENGTH_LONG).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(profile.this, "ошибка", Toast.LENGTH_LONG).show();
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(profile.this, "Failed", Toast.LENGTH_LONG).show();
}
});
}
private void showNamephoneupdate(final String key) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Update" + key);
// creating a layout to write the new name
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setPadding(10, 10, 10, 10);
final EditText editText = new EditText(this);
editText.setHint("Enter" + key);
layout.addView(editText);
builder.setView(layout);
builder.setPositiveButton("Update", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
final String value = editText.getText().toString().trim();
if (!TextUtils.isEmpty(value)) {
// Here we are updating the new name
HashMap<String, Object> result = new HashMap<>();
result.put(key, value);
databaseReference.child(firebaseUser.getUid()).updateChildren(result).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
// after updated we will show updated
Toast.makeText(profile.this, " updated ", Toast.LENGTH_LONG).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(profile.this, "Unable to update", Toast.LENGTH_LONG).show();
}
});
if (key.equals("name")) {
final DatabaseReference databaser = FirebaseDatabase.getInstance().getReference("Posts");
Query query = databaser.orderByChild("uid").equalTo(true);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
String child = databaser.getKey();
dataSnapshot1.getRef().child("uname").setValue(value);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
} else {
Toast.makeText(profile.this, "Unable to update", Toast.LENGTH_LONG).show();
}
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.create().show();
}
}
код юзера
public class User {
public String name, email, pass;
public User() {
}
public String toString(){
return this.name + "." + email + "-" + pass;
}
public User(String name,String email,String pass){
this.name = name;
this.email = email;
this.pass = pass;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}