Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.cqaai.tutorpal.activity;
- import android.app.Activity;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.net.Uri;
- import android.os.Bundle;
- import android.provider.MediaStore;
- import android.support.annotation.NonNull;
- import android.support.v7.app.AppCompatActivity;
- import android.support.v7.widget.Toolbar;
- import android.text.TextUtils;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.ProgressBar;
- import android.widget.Toast;
- import com.bumptech.glide.Glide;
- import com.google.android.gms.common.data.BitmapTeleporter;
- 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.FirebaseAuth;
- import com.google.firebase.auth.FirebaseUser;
- import com.example.cqaai.tutorpal.Firebase.FirebaseDatabaseHelper;
- import com.example.cqaai.tutorpal.Firebase.FirebaseUserEntity;
- import com.example.cqaai.tutorpal.Helper.Helper;
- import com.example.cqaai.tutorpal.R;
- 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.ValueEventListener;
- import com.google.firebase.storage.FirebaseStorage;
- import com.google.firebase.storage.StorageReference;
- import com.google.firebase.storage.UploadTask;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.Map;
- public class EditProfileActivity extends AppCompatActivity {
- private Button changeFullname, changeUsername, btnChangeFullname, btnChangeUsername, btnChangeEmail, btnChangePassword, btnSendResetEmail, btnRemoveUser,
- changeEmail, changePassword, sendEmail, remove, signOut, mUpload;
- private EditText fullName, userName, oldEmail, newEmail, password, newPassword;
- private ProgressBar progressBar;
- private FirebaseAuth.AuthStateListener authListener;
- private FirebaseAuth auth;
- private DatabaseReference mTutorDatabase;
- private ImageView mProfileImage;
- private Uri resultUri;
- private String userID;
- private String mFullName;
- private String mUserName;
- private String mProfileImageUrl;
- // private static final String TAG = EditProfileActivity.class.getSimpleName();
- //
- // private EditText editProfileName;
- //
- // private EditText editProfileCountry;
- //
- // private EditText editProfilePhoneNumber;
- //
- // private EditText editProfileHobby;
- //
- // private EditText editProfileBirthday;
- //
- // private FirebaseAuth.AuthStateListener authStateListener;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_edit_profile);
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- setTitle("Edit Profile Information");
- btnChangeFullname = (Button) findViewById(R.id.change_fullname_button);
- btnChangeUsername = (Button) findViewById(R.id.change_username_button);
- btnChangeEmail = (Button) findViewById(R.id.change_email_button);
- btnChangePassword = (Button) findViewById(R.id.change_password_button);
- btnSendResetEmail = (Button) findViewById(R.id.sending_pass_reset_button);
- btnRemoveUser = (Button) findViewById(R.id.remove_user_button);
- changeFullname = (Button) findViewById(R.id.changeFullName);
- changeUsername = (Button) findViewById(R.id.changeUsername);
- changeEmail = (Button) findViewById(R.id.changeEmail);
- changePassword = (Button) findViewById(R.id.changePass);
- sendEmail = (Button) findViewById(R.id.send);
- remove = (Button) findViewById(R.id.remove);
- signOut = (Button) findViewById(R.id.sign_out);
- mUpload = (Button) findViewById(R.id.btn_upload);
- fullName = (EditText) findViewById(R.id.full_name);
- userName = (EditText) findViewById(R.id.user_name);
- oldEmail = (EditText) findViewById(R.id.old_email);
- newEmail = (EditText) findViewById(R.id.new_email);
- password = (EditText) findViewById(R.id.password);
- newPassword = (EditText) findViewById(R.id.newPassword);
- mProfileImage = (ImageView) findViewById(R.id.profileImage);
- fullName.setVisibility(View.GONE);
- userName.setVisibility(View.GONE);
- oldEmail.setVisibility(View.GONE);
- newEmail.setVisibility(View.GONE);
- password.setVisibility(View.GONE);
- newPassword.setVisibility(View.GONE);
- changeFullname.setVisibility(View.GONE);
- changeUsername.setVisibility(View.GONE);
- changeEmail.setVisibility(View.GONE);
- changePassword.setVisibility(View.GONE);
- sendEmail.setVisibility(View.GONE);
- remove.setVisibility(View.GONE);
- progressBar = (ProgressBar) findViewById(R.id.progressBar);
- if (progressBar != null) {
- progressBar.setVisibility(View.GONE);
- }
- //get firebase auth instance
- auth = FirebaseAuth.getInstance();
- //get current user
- userID = auth.getCurrentUser().getUid();
- mTutorDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child("Tutors").child(userID);
- getUserInfo();
- mProfileImage.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent intent = new Intent(Intent.ACTION_PICK);
- intent.setType("image/*");
- startActivityForResult(intent, 1);
- }
- });
- //get current user
- final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
- authListener = new FirebaseAuth.AuthStateListener() {
- @Override
- public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
- FirebaseUser user = firebaseAuth.getCurrentUser();
- if (user == null) {
- // user auth state is changed - user is null
- // launch login activity
- startActivity(new Intent(EditProfileActivity.this, LoginActivity.class));
- finish();
- }
- }
- };
- //change full name
- btnChangeFullname.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- changeFullname.setVisibility(View.VISIBLE);
- changeUsername.setVisibility(View.GONE);
- fullName.setVisibility(View.VISIBLE);
- userName.setVisibility(View.GONE);
- oldEmail.setVisibility(View.GONE);
- newEmail.setVisibility(View.GONE);
- password.setVisibility(View.GONE);
- newPassword.setVisibility(View.GONE);
- changeEmail.setVisibility(View.GONE);
- changePassword.setVisibility(View.GONE);
- sendEmail.setVisibility(View.GONE);
- remove.setVisibility(View.GONE);
- }
- });
- //change full name
- btnChangeUsername.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- changeFullname.setVisibility(View.GONE);
- changeUsername.setVisibility(View.VISIBLE);
- fullName.setVisibility(View.GONE);
- userName.setVisibility(View.VISIBLE);
- oldEmail.setVisibility(View.GONE);
- newEmail.setVisibility(View.GONE);
- password.setVisibility(View.GONE);
- newPassword.setVisibility(View.GONE);
- changeEmail.setVisibility(View.GONE);
- changePassword.setVisibility(View.GONE);
- sendEmail.setVisibility(View.GONE);
- remove.setVisibility(View.GONE);
- }
- });
- //INITIATE change username BUTTON FUNCTION
- btnChangeEmail.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- changeFullname.setVisibility(View.GONE);
- changeUsername.setVisibility(View.GONE);
- fullName.setVisibility(View.GONE);
- userName.setVisibility(View.GONE);
- oldEmail.setVisibility(View.VISIBLE);
- newEmail.setVisibility(View.VISIBLE);
- password.setVisibility(View.GONE);
- newPassword.setVisibility(View.GONE);
- changeEmail.setVisibility(View.VISIBLE);
- changePassword.setVisibility(View.GONE);
- sendEmail.setVisibility(View.GONE);
- remove.setVisibility(View.GONE);
- }
- });
- changeFullname.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- saveUserInformationFullName();
- }
- });
- changeUsername.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- saveUserInformationUsername();
- }
- });
- mUpload.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- uploadProfileImage();
- }
- });
- changeEmail.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- progressBar.setVisibility(View.VISIBLE);
- if (user != null && !newEmail.getText().toString().trim().equals("")) {
- user.updateEmail(newEmail.getText().toString().trim())
- .addOnCompleteListener(new OnCompleteListener<Void>() {
- @Override
- public void onComplete(@NonNull Task<Void> task) {
- if (task.isSuccessful()) {
- Toast.makeText(EditProfileActivity.this, "Email address is updated. Please sign in with new email id!", Toast.LENGTH_LONG).show();
- signOut();
- progressBar.setVisibility(View.GONE);
- } else {
- Toast.makeText(EditProfileActivity.this, "Failed to update email!", Toast.LENGTH_LONG).show();
- progressBar.setVisibility(View.GONE);
- }
- }
- });
- } else if (newEmail.getText().toString().trim().equals("")) {
- newEmail.setError("Enter email");
- progressBar.setVisibility(View.GONE);
- }
- }
- });
- btnChangePassword.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- changeFullname.setVisibility(View.GONE);
- changeUsername.setVisibility(View.GONE);
- fullName.setVisibility(View.GONE);
- userName.setVisibility(View.GONE);
- oldEmail.setVisibility(View.GONE);
- newEmail.setVisibility(View.GONE);
- password.setVisibility(View.GONE);
- newPassword.setVisibility(View.VISIBLE);
- changeEmail.setVisibility(View.GONE);
- changePassword.setVisibility(View.VISIBLE);
- sendEmail.setVisibility(View.GONE);
- remove.setVisibility(View.GONE);
- }
- });
- changePassword.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- progressBar.setVisibility(View.VISIBLE);
- if (user != null && !newPassword.getText().toString().trim().equals("")) {
- if (newPassword.getText().toString().trim().length() < 6) {
- newPassword.setError("Password too short, enter minimum 6 characters");
- progressBar.setVisibility(View.GONE);
- } else {
- user.updatePassword(newPassword.getText().toString().trim())
- .addOnCompleteListener(new OnCompleteListener<Void>() {
- @Override
- public void onComplete(@NonNull Task<Void> task) {
- if (task.isSuccessful()) {
- Toast.makeText(EditProfileActivity.this, "Password is updated, sign in with new password!", Toast.LENGTH_SHORT).show();
- signOut();
- progressBar.setVisibility(View.GONE);
- } else {
- Toast.makeText(EditProfileActivity.this, "Failed to update password!", Toast.LENGTH_SHORT).show();
- progressBar.setVisibility(View.GONE);
- }
- }
- });
- }
- } else if (newPassword.getText().toString().trim().equals("")) {
- newPassword.setError("Enter password");
- progressBar.setVisibility(View.GONE);
- }
- }
- });
- btnSendResetEmail.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- changeFullname.setVisibility(View.GONE);
- changeUsername.setVisibility(View.GONE);
- fullName.setVisibility(View.GONE);
- userName.setVisibility(View.GONE);
- oldEmail.setVisibility(View.VISIBLE);
- newEmail.setVisibility(View.GONE);
- password.setVisibility(View.GONE);
- newPassword.setVisibility(View.GONE);
- changeEmail.setVisibility(View.GONE);
- changePassword.setVisibility(View.GONE);
- sendEmail.setVisibility(View.VISIBLE);
- remove.setVisibility(View.GONE);
- }
- });
- sendEmail.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- progressBar.setVisibility(View.VISIBLE);
- if (!oldEmail.getText().toString().trim().equals("")) {
- auth.sendPasswordResetEmail(oldEmail.getText().toString().trim())
- .addOnCompleteListener(new OnCompleteListener<Void>() {
- @Override
- public void onComplete(@NonNull Task<Void> task) {
- if (task.isSuccessful()) {
- Toast.makeText(EditProfileActivity.this, "Reset password email is sent!", Toast.LENGTH_SHORT).show();
- progressBar.setVisibility(View.GONE);
- } else {
- Toast.makeText(EditProfileActivity.this, "Failed to send reset email!", Toast.LENGTH_SHORT).show();
- progressBar.setVisibility(View.GONE);
- }
- }
- });
- } else {
- oldEmail.setError("Enter email");
- progressBar.setVisibility(View.GONE);
- }
- }
- });
- btnRemoveUser.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- progressBar.setVisibility(View.VISIBLE);
- if (user != null) {
- user.delete()
- .addOnCompleteListener(new OnCompleteListener<Void>() {
- @Override
- public void onComplete(@NonNull Task<Void> task) {
- if (task.isSuccessful()) {
- Toast.makeText(EditProfileActivity.this, "Your profile is deleted:( Create a account now!", Toast.LENGTH_SHORT).show();
- startActivity(new Intent(EditProfileActivity.this, RegisterActivity.class));
- finish();
- progressBar.setVisibility(View.GONE);
- } else {
- Toast.makeText(EditProfileActivity.this, "Failed to delete your account!", Toast.LENGTH_SHORT).show();
- progressBar.setVisibility(View.GONE);
- }
- }
- });
- }
- }
- });
- signOut.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- signOut();
- }
- });
- }
- //To display data from database
- private void getUserInfo() {
- mTutorDatabase.addValueEventListener(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- if(dataSnapshot.exists() && dataSnapshot.getChildrenCount()>0){
- Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
- if(map.get("FullName")!=null){
- mFullName = map.get("FullName").toString();
- fullName.setText(mFullName);
- }
- if(map.get("UserName")!=null){
- mUserName = map.get("UserName").toString();
- userName.setText("@"+mUserName);
- }
- if(map.get("profileImageUrl")!=null){
- mProfileImageUrl = map.get("profileImageUrl").toString();
- Glide.with(getApplication()).load(mProfileImageUrl).into(mProfileImage);
- }
- }
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- }
- });
- }
- private void uploadProfileImage() {
- if(resultUri != null) {
- StorageReference filePath = FirebaseStorage.getInstance().getReference().child("profileImageUrl").child(userID);
- Bitmap bitmap = null;
- try {
- bitmap = MediaStore.Images.Media.getBitmap(getApplication().getContentResolver(), resultUri);
- } catch (IOException e) {
- e.printStackTrace();
- }
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- ;
- // bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
- // byte[] data = baos.toByteArray();
- //
- // UploadTask uploadTask = mountainsRef.putBytes(data);
- // uploadTask.addOnFailureListener(new OnFailureListener() {
- // @Override
- // public void onFailure(@NonNull Exception exception) {
- // // Handle unsuccessful uploads
- // }
- // }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
- // @Override
- // public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
- // // taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
- // Uri downloadUrl = taskSnapshot.getDownloadUrl();
- // }
- // });
- // StorageReference riversRef = storageRef.child("images/"+file.getLastPathSegment());
- // uploadTask = riversRef.putFile(file);
- bitmap.compress(Bitmap.CompressFormat.JPEG, 20, baos);
- byte[] data = baos.toByteArray();
- UploadTask uploadTask = filePath.putBytes(data);
- Toast.makeText(EditProfileActivity.this, "Uploading..", Toast.LENGTH_SHORT).show();
- uploadTask.addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(@NonNull Exception e) {
- finish();
- return;
- }
- });
- uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
- @Override
- public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
- Uri downloadUrl = taskSnapshot.getDownloadUrl();
- Map newImage = new HashMap();
- newImage.put("profileImageUrl", downloadUrl.toString());
- mTutorDatabase.updateChildren(newImage);
- return;
- }
- });
- }else{
- finish();
- }
- // if(resultUri != null){
- // StorageReference filePath = FirebaseStorage.getInstance().getReference().child("profile_images").child(userID);
- // Bitmap bitmap = null;
- //
- // try {
- // bitmap = MediaStore.Images.Media.getBitmap(getApplication().getContentResolver(), resultUri);
- // } catch (IOException e) {
- // e.printStackTrace();
- // }
- // //compress image
- // ByteArrayOutputStream baos = new ByteArrayOutputStream();
- // bitmap.compress(Bitmap.CompressFormat.JPEG, 20, baos);
- // byte [] data = baos.toByteArray();
- // UploadTask uploadTask = filePath.putBytes(data);
- //
- // uploadTask.addOnFailureListener(new OnFailureListener() {
- // @Override
- // public void onFailure(@NonNull Exception e) {
- // finish();
- // return;
- // }
- // });
- //
- // uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
- // @Override
- // public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
- // @SuppressWarnings("VisibleForTests") Uri downloadUri = taskSnapshot.getDownloadUrl();
- //
- // Map newImage = new HashMap();
- // newImage.put("profileImageUrl", downloadUri.toString());
- // mTutorDatabase.updateChildren(newImage);
- //
- // finish();
- // return;
- // }
- // });
- // }else{
- // finish();
- //
- // }
- }
- private void saveUserInformationUsername() {
- mUserName = userName.getText().toString();
- Map userInfo = new HashMap();
- userInfo.put("UserName", mUserName);
- mTutorDatabase.updateChildren(userInfo);
- Toast.makeText(this, "Changed succesful", Toast.LENGTH_SHORT).show();
- return;
- }
- private void saveUserInformationFullName() {
- mFullName = fullName.getText().toString();
- Map userInfo = new HashMap();
- userInfo.put("FullName", mFullName);
- // userInfo.put("UserName", mUserName);
- mTutorDatabase.updateChildren(userInfo);
- Toast.makeText(this, "Changed succesful", Toast.LENGTH_SHORT).show();
- return;
- }
- //sign out method
- public void signOut() {
- auth.signOut();
- }
- @Override
- protected void onResume() {
- super.onResume();
- progressBar.setVisibility(View.GONE);
- }
- @Override
- public void onStart() {
- super.onStart();
- auth.addAuthStateListener(authListener);
- }
- @Override
- public void onStop() {
- super.onStop();
- if (authListener != null) {
- auth.removeAuthStateListener(authListener);
- }
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if(requestCode == 1 && resultCode == Activity.RESULT_OK){
- final Uri imageUri = data.getData();
- resultUri = imageUri;
- mProfileImage.setImageURI(resultUri);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement