Advertisement
Guest User

Untitled

a guest
Oct 13th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.26 KB | None | 0 0
  1. package com.example.cqaai.tutorpal.activity;
  2.  
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.graphics.Bitmap;
  6. import android.net.Uri;
  7. import android.os.Bundle;
  8. import android.provider.MediaStore;
  9. import android.support.annotation.NonNull;
  10. import android.support.v7.app.AppCompatActivity;
  11. import android.support.v7.widget.Toolbar;
  12. import android.text.TextUtils;
  13. import android.view.View;
  14. import android.widget.Button;
  15. import android.widget.EditText;
  16. import android.widget.ImageView;
  17. import android.widget.ProgressBar;
  18. import android.widget.Toast;
  19.  
  20. import com.bumptech.glide.Glide;
  21. import com.google.android.gms.common.data.BitmapTeleporter;
  22. import com.google.android.gms.tasks.OnCompleteListener;
  23. import com.google.android.gms.tasks.OnFailureListener;
  24. import com.google.android.gms.tasks.OnSuccessListener;
  25. import com.google.android.gms.tasks.Task;
  26. import com.google.firebase.auth.FirebaseAuth;
  27. import com.google.firebase.auth.FirebaseUser;
  28. import com.example.cqaai.tutorpal.Firebase.FirebaseDatabaseHelper;
  29. import com.example.cqaai.tutorpal.Firebase.FirebaseUserEntity;
  30. import com.example.cqaai.tutorpal.Helper.Helper;
  31. import com.example.cqaai.tutorpal.R;
  32. import com.google.firebase.database.DataSnapshot;
  33. import com.google.firebase.database.DatabaseError;
  34. import com.google.firebase.database.DatabaseReference;
  35. import com.google.firebase.database.FirebaseDatabase;
  36. import com.google.firebase.database.ValueEventListener;
  37. import com.google.firebase.storage.FirebaseStorage;
  38. import com.google.firebase.storage.StorageReference;
  39. import com.google.firebase.storage.UploadTask;
  40.  
  41. import java.io.ByteArrayInputStream;
  42. import java.io.ByteArrayOutputStream;
  43. import java.io.IOException;
  44. import java.util.HashMap;
  45. import java.util.Map;
  46.  
  47.  
  48. public class EditProfileActivity extends AppCompatActivity {
  49.  
  50. private Button changeFullname, changeUsername, btnChangeFullname, btnChangeUsername, btnChangeEmail, btnChangePassword, btnSendResetEmail, btnRemoveUser,
  51. changeEmail, changePassword, sendEmail, remove, signOut, mUpload;
  52.  
  53. private EditText fullName, userName, oldEmail, newEmail, password, newPassword;
  54. private ProgressBar progressBar;
  55. private FirebaseAuth.AuthStateListener authListener;
  56. private FirebaseAuth auth;
  57. private DatabaseReference mTutorDatabase;
  58.  
  59. private ImageView mProfileImage;
  60. private Uri resultUri;
  61.  
  62. private String userID;
  63. private String mFullName;
  64. private String mUserName;
  65. private String mProfileImageUrl;
  66.  
  67.  
  68. // private static final String TAG = EditProfileActivity.class.getSimpleName();
  69. //
  70. // private EditText editProfileName;
  71. //
  72. // private EditText editProfileCountry;
  73. //
  74. // private EditText editProfilePhoneNumber;
  75. //
  76. // private EditText editProfileHobby;
  77. //
  78. // private EditText editProfileBirthday;
  79. //
  80. // private FirebaseAuth.AuthStateListener authStateListener;
  81.  
  82. @Override
  83. protected void onCreate(Bundle savedInstanceState) {
  84. super.onCreate(savedInstanceState);
  85. setContentView(R.layout.activity_edit_profile);
  86.  
  87. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  88. setSupportActionBar(toolbar);
  89.  
  90. getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  91.  
  92. setTitle("Edit Profile Information");
  93. btnChangeFullname = (Button) findViewById(R.id.change_fullname_button);
  94. btnChangeUsername = (Button) findViewById(R.id.change_username_button);
  95. btnChangeEmail = (Button) findViewById(R.id.change_email_button);
  96. btnChangePassword = (Button) findViewById(R.id.change_password_button);
  97. btnSendResetEmail = (Button) findViewById(R.id.sending_pass_reset_button);
  98. btnRemoveUser = (Button) findViewById(R.id.remove_user_button);
  99. changeFullname = (Button) findViewById(R.id.changeFullName);
  100. changeUsername = (Button) findViewById(R.id.changeUsername);
  101. changeEmail = (Button) findViewById(R.id.changeEmail);
  102. changePassword = (Button) findViewById(R.id.changePass);
  103. sendEmail = (Button) findViewById(R.id.send);
  104. remove = (Button) findViewById(R.id.remove);
  105. signOut = (Button) findViewById(R.id.sign_out);
  106. mUpload = (Button) findViewById(R.id.btn_upload);
  107.  
  108. fullName = (EditText) findViewById(R.id.full_name);
  109. userName = (EditText) findViewById(R.id.user_name);
  110. oldEmail = (EditText) findViewById(R.id.old_email);
  111. newEmail = (EditText) findViewById(R.id.new_email);
  112. password = (EditText) findViewById(R.id.password);
  113. newPassword = (EditText) findViewById(R.id.newPassword);
  114.  
  115. mProfileImage = (ImageView) findViewById(R.id.profileImage);
  116.  
  117.  
  118. fullName.setVisibility(View.GONE);
  119. userName.setVisibility(View.GONE);
  120. oldEmail.setVisibility(View.GONE);
  121. newEmail.setVisibility(View.GONE);
  122. password.setVisibility(View.GONE);
  123. newPassword.setVisibility(View.GONE);
  124. changeFullname.setVisibility(View.GONE);
  125. changeUsername.setVisibility(View.GONE);
  126. changeEmail.setVisibility(View.GONE);
  127. changePassword.setVisibility(View.GONE);
  128. sendEmail.setVisibility(View.GONE);
  129. remove.setVisibility(View.GONE);
  130.  
  131. progressBar = (ProgressBar) findViewById(R.id.progressBar);
  132.  
  133. if (progressBar != null) {
  134. progressBar.setVisibility(View.GONE);
  135. }
  136.  
  137. //get firebase auth instance
  138. auth = FirebaseAuth.getInstance();
  139. //get current user
  140. userID = auth.getCurrentUser().getUid();
  141. mTutorDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child("Tutors").child(userID);
  142.  
  143. getUserInfo();
  144.  
  145. mProfileImage.setOnClickListener(new View.OnClickListener() {
  146. @Override
  147. public void onClick(View view) {
  148. Intent intent = new Intent(Intent.ACTION_PICK);
  149. intent.setType("image/*");
  150. startActivityForResult(intent, 1);
  151. }
  152. });
  153.  
  154. //get current user
  155. final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
  156.  
  157.  
  158.  
  159.  
  160. authListener = new FirebaseAuth.AuthStateListener() {
  161. @Override
  162. public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
  163. FirebaseUser user = firebaseAuth.getCurrentUser();
  164. if (user == null) {
  165. // user auth state is changed - user is null
  166. // launch login activity
  167. startActivity(new Intent(EditProfileActivity.this, LoginActivity.class));
  168. finish();
  169. }
  170. }
  171. };
  172.  
  173. //change full name
  174. btnChangeFullname.setOnClickListener(new View.OnClickListener() {
  175. @Override
  176. public void onClick(View v) {
  177. changeFullname.setVisibility(View.VISIBLE);
  178. changeUsername.setVisibility(View.GONE);
  179. fullName.setVisibility(View.VISIBLE);
  180. userName.setVisibility(View.GONE);
  181. oldEmail.setVisibility(View.GONE);
  182. newEmail.setVisibility(View.GONE);
  183. password.setVisibility(View.GONE);
  184. newPassword.setVisibility(View.GONE);
  185. changeEmail.setVisibility(View.GONE);
  186. changePassword.setVisibility(View.GONE);
  187. sendEmail.setVisibility(View.GONE);
  188. remove.setVisibility(View.GONE);
  189. }
  190. });
  191.  
  192. //change full name
  193. btnChangeUsername.setOnClickListener(new View.OnClickListener() {
  194. @Override
  195. public void onClick(View v) {
  196. changeFullname.setVisibility(View.GONE);
  197. changeUsername.setVisibility(View.VISIBLE);
  198. fullName.setVisibility(View.GONE);
  199. userName.setVisibility(View.VISIBLE);
  200. oldEmail.setVisibility(View.GONE);
  201. newEmail.setVisibility(View.GONE);
  202. password.setVisibility(View.GONE);
  203. newPassword.setVisibility(View.GONE);
  204. changeEmail.setVisibility(View.GONE);
  205. changePassword.setVisibility(View.GONE);
  206. sendEmail.setVisibility(View.GONE);
  207. remove.setVisibility(View.GONE);
  208. }
  209. });
  210.  
  211. //INITIATE change username BUTTON FUNCTION
  212.  
  213.  
  214. btnChangeEmail.setOnClickListener(new View.OnClickListener() {
  215. @Override
  216. public void onClick(View v) {
  217. changeFullname.setVisibility(View.GONE);
  218. changeUsername.setVisibility(View.GONE);
  219. fullName.setVisibility(View.GONE);
  220. userName.setVisibility(View.GONE);
  221. oldEmail.setVisibility(View.VISIBLE);
  222. newEmail.setVisibility(View.VISIBLE);
  223. password.setVisibility(View.GONE);
  224. newPassword.setVisibility(View.GONE);
  225. changeEmail.setVisibility(View.VISIBLE);
  226. changePassword.setVisibility(View.GONE);
  227. sendEmail.setVisibility(View.GONE);
  228. remove.setVisibility(View.GONE);
  229. }
  230. });
  231.  
  232. changeFullname.setOnClickListener(new View.OnClickListener() {
  233. @Override
  234. public void onClick(View view) {
  235. saveUserInformationFullName();
  236. }
  237. });
  238.  
  239. changeUsername.setOnClickListener(new View.OnClickListener() {
  240. @Override
  241. public void onClick(View view) {
  242. saveUserInformationUsername();
  243. }
  244. });
  245.  
  246. mUpload.setOnClickListener(new View.OnClickListener() {
  247. @Override
  248. public void onClick(View view) {
  249. uploadProfileImage();
  250. }
  251. });
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263. changeEmail.setOnClickListener(new View.OnClickListener() {
  264. @Override
  265. public void onClick(View v) {
  266. progressBar.setVisibility(View.VISIBLE);
  267. if (user != null && !newEmail.getText().toString().trim().equals("")) {
  268. user.updateEmail(newEmail.getText().toString().trim())
  269. .addOnCompleteListener(new OnCompleteListener<Void>() {
  270. @Override
  271. public void onComplete(@NonNull Task<Void> task) {
  272. if (task.isSuccessful()) {
  273. Toast.makeText(EditProfileActivity.this, "Email address is updated. Please sign in with new email id!", Toast.LENGTH_LONG).show();
  274. signOut();
  275. progressBar.setVisibility(View.GONE);
  276. } else {
  277. Toast.makeText(EditProfileActivity.this, "Failed to update email!", Toast.LENGTH_LONG).show();
  278. progressBar.setVisibility(View.GONE);
  279. }
  280. }
  281. });
  282. } else if (newEmail.getText().toString().trim().equals("")) {
  283. newEmail.setError("Enter email");
  284. progressBar.setVisibility(View.GONE);
  285. }
  286. }
  287. });
  288.  
  289.  
  290.  
  291.  
  292. btnChangePassword.setOnClickListener(new View.OnClickListener() {
  293. @Override
  294. public void onClick(View v) {
  295. changeFullname.setVisibility(View.GONE);
  296. changeUsername.setVisibility(View.GONE);
  297. fullName.setVisibility(View.GONE);
  298. userName.setVisibility(View.GONE);
  299. oldEmail.setVisibility(View.GONE);
  300. newEmail.setVisibility(View.GONE);
  301. password.setVisibility(View.GONE);
  302. newPassword.setVisibility(View.VISIBLE);
  303. changeEmail.setVisibility(View.GONE);
  304. changePassword.setVisibility(View.VISIBLE);
  305. sendEmail.setVisibility(View.GONE);
  306. remove.setVisibility(View.GONE);
  307. }
  308. });
  309.  
  310. changePassword.setOnClickListener(new View.OnClickListener() {
  311. @Override
  312. public void onClick(View v) {
  313. progressBar.setVisibility(View.VISIBLE);
  314. if (user != null && !newPassword.getText().toString().trim().equals("")) {
  315. if (newPassword.getText().toString().trim().length() < 6) {
  316. newPassword.setError("Password too short, enter minimum 6 characters");
  317. progressBar.setVisibility(View.GONE);
  318. } else {
  319. user.updatePassword(newPassword.getText().toString().trim())
  320. .addOnCompleteListener(new OnCompleteListener<Void>() {
  321. @Override
  322. public void onComplete(@NonNull Task<Void> task) {
  323. if (task.isSuccessful()) {
  324. Toast.makeText(EditProfileActivity.this, "Password is updated, sign in with new password!", Toast.LENGTH_SHORT).show();
  325. signOut();
  326. progressBar.setVisibility(View.GONE);
  327. } else {
  328. Toast.makeText(EditProfileActivity.this, "Failed to update password!", Toast.LENGTH_SHORT).show();
  329. progressBar.setVisibility(View.GONE);
  330. }
  331. }
  332. });
  333. }
  334. } else if (newPassword.getText().toString().trim().equals("")) {
  335. newPassword.setError("Enter password");
  336. progressBar.setVisibility(View.GONE);
  337. }
  338. }
  339. });
  340.  
  341. btnSendResetEmail.setOnClickListener(new View.OnClickListener() {
  342. @Override
  343. public void onClick(View v) {
  344. changeFullname.setVisibility(View.GONE);
  345. changeUsername.setVisibility(View.GONE);
  346. fullName.setVisibility(View.GONE);
  347. userName.setVisibility(View.GONE);
  348. oldEmail.setVisibility(View.VISIBLE);
  349. newEmail.setVisibility(View.GONE);
  350. password.setVisibility(View.GONE);
  351. newPassword.setVisibility(View.GONE);
  352. changeEmail.setVisibility(View.GONE);
  353. changePassword.setVisibility(View.GONE);
  354. sendEmail.setVisibility(View.VISIBLE);
  355. remove.setVisibility(View.GONE);
  356. }
  357. });
  358.  
  359. sendEmail.setOnClickListener(new View.OnClickListener() {
  360. @Override
  361. public void onClick(View v) {
  362. progressBar.setVisibility(View.VISIBLE);
  363. if (!oldEmail.getText().toString().trim().equals("")) {
  364. auth.sendPasswordResetEmail(oldEmail.getText().toString().trim())
  365. .addOnCompleteListener(new OnCompleteListener<Void>() {
  366. @Override
  367. public void onComplete(@NonNull Task<Void> task) {
  368. if (task.isSuccessful()) {
  369. Toast.makeText(EditProfileActivity.this, "Reset password email is sent!", Toast.LENGTH_SHORT).show();
  370. progressBar.setVisibility(View.GONE);
  371. } else {
  372. Toast.makeText(EditProfileActivity.this, "Failed to send reset email!", Toast.LENGTH_SHORT).show();
  373. progressBar.setVisibility(View.GONE);
  374. }
  375. }
  376. });
  377. } else {
  378. oldEmail.setError("Enter email");
  379. progressBar.setVisibility(View.GONE);
  380. }
  381. }
  382. });
  383.  
  384. btnRemoveUser.setOnClickListener(new View.OnClickListener() {
  385. @Override
  386. public void onClick(View v) {
  387.  
  388.  
  389.  
  390. progressBar.setVisibility(View.VISIBLE);
  391. if (user != null) {
  392. user.delete()
  393. .addOnCompleteListener(new OnCompleteListener<Void>() {
  394. @Override
  395. public void onComplete(@NonNull Task<Void> task) {
  396. if (task.isSuccessful()) {
  397. Toast.makeText(EditProfileActivity.this, "Your profile is deleted:( Create a account now!", Toast.LENGTH_SHORT).show();
  398. startActivity(new Intent(EditProfileActivity.this, RegisterActivity.class));
  399. finish();
  400. progressBar.setVisibility(View.GONE);
  401. } else {
  402. Toast.makeText(EditProfileActivity.this, "Failed to delete your account!", Toast.LENGTH_SHORT).show();
  403. progressBar.setVisibility(View.GONE);
  404. }
  405. }
  406. });
  407. }
  408. }
  409. });
  410.  
  411. signOut.setOnClickListener(new View.OnClickListener() {
  412. @Override
  413. public void onClick(View v) {
  414. signOut();
  415. }
  416. });
  417. }
  418.  
  419.  
  420.  
  421. //To display data from database
  422. private void getUserInfo() {
  423. mTutorDatabase.addValueEventListener(new ValueEventListener() {
  424. @Override
  425. public void onDataChange(DataSnapshot dataSnapshot) {
  426. if(dataSnapshot.exists() && dataSnapshot.getChildrenCount()>0){
  427. Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
  428. if(map.get("FullName")!=null){
  429. mFullName = map.get("FullName").toString();
  430. fullName.setText(mFullName);
  431.  
  432. }
  433.  
  434. if(map.get("UserName")!=null){
  435. mUserName = map.get("UserName").toString();
  436. userName.setText("@"+mUserName);
  437.  
  438. }
  439. if(map.get("profileImageUrl")!=null){
  440. mProfileImageUrl = map.get("profileImageUrl").toString();
  441. Glide.with(getApplication()).load(mProfileImageUrl).into(mProfileImage);
  442. }
  443. }
  444. }
  445.  
  446. @Override
  447. public void onCancelled(DatabaseError databaseError) {
  448.  
  449. }
  450. });
  451. }
  452.  
  453. private void uploadProfileImage() {
  454. if(resultUri != null) {
  455.  
  456. StorageReference filePath = FirebaseStorage.getInstance().getReference().child("profileImageUrl").child(userID);
  457. Bitmap bitmap = null;
  458. try {
  459. bitmap = MediaStore.Images.Media.getBitmap(getApplication().getContentResolver(), resultUri);
  460. } catch (IOException e) {
  461. e.printStackTrace();
  462. }
  463.  
  464. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  465.  
  466. ;
  467. // bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
  468. // byte[] data = baos.toByteArray();
  469. //
  470. // UploadTask uploadTask = mountainsRef.putBytes(data);
  471. // uploadTask.addOnFailureListener(new OnFailureListener() {
  472. // @Override
  473. // public void onFailure(@NonNull Exception exception) {
  474. // // Handle unsuccessful uploads
  475. // }
  476. // }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
  477. // @Override
  478. // public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  479. // // taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
  480. // Uri downloadUrl = taskSnapshot.getDownloadUrl();
  481. // }
  482. // });
  483.  
  484. // StorageReference riversRef = storageRef.child("images/"+file.getLastPathSegment());
  485. // uploadTask = riversRef.putFile(file);
  486.  
  487.  
  488.  
  489. bitmap.compress(Bitmap.CompressFormat.JPEG, 20, baos);
  490. byte[] data = baos.toByteArray();
  491. UploadTask uploadTask = filePath.putBytes(data);
  492.  
  493. Toast.makeText(EditProfileActivity.this, "Uploading..", Toast.LENGTH_SHORT).show();
  494.  
  495. uploadTask.addOnFailureListener(new OnFailureListener() {
  496. @Override
  497. public void onFailure(@NonNull Exception e) {
  498. finish();
  499. return;
  500. }
  501. });
  502. uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
  503. @Override
  504. public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  505. Uri downloadUrl = taskSnapshot.getDownloadUrl();
  506.  
  507.  
  508.  
  509. Map newImage = new HashMap();
  510. newImage.put("profileImageUrl", downloadUrl.toString());
  511. mTutorDatabase.updateChildren(newImage);
  512.  
  513. return;
  514. }
  515. });
  516. }else{
  517. finish();
  518. }
  519.  
  520. // if(resultUri != null){
  521. // StorageReference filePath = FirebaseStorage.getInstance().getReference().child("profile_images").child(userID);
  522. // Bitmap bitmap = null;
  523. //
  524. // try {
  525. // bitmap = MediaStore.Images.Media.getBitmap(getApplication().getContentResolver(), resultUri);
  526. // } catch (IOException e) {
  527. // e.printStackTrace();
  528. // }
  529. // //compress image
  530. // ByteArrayOutputStream baos = new ByteArrayOutputStream();
  531. // bitmap.compress(Bitmap.CompressFormat.JPEG, 20, baos);
  532. // byte [] data = baos.toByteArray();
  533. // UploadTask uploadTask = filePath.putBytes(data);
  534. //
  535. // uploadTask.addOnFailureListener(new OnFailureListener() {
  536. // @Override
  537. // public void onFailure(@NonNull Exception e) {
  538. // finish();
  539. // return;
  540. // }
  541. // });
  542. //
  543. // uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
  544. // @Override
  545. // public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  546. // @SuppressWarnings("VisibleForTests") Uri downloadUri = taskSnapshot.getDownloadUrl();
  547. //
  548. // Map newImage = new HashMap();
  549. // newImage.put("profileImageUrl", downloadUri.toString());
  550. // mTutorDatabase.updateChildren(newImage);
  551. //
  552. // finish();
  553. // return;
  554. // }
  555. // });
  556. // }else{
  557. // finish();
  558. //
  559. // }
  560. }
  561.  
  562. private void saveUserInformationUsername() {
  563.  
  564. mUserName = userName.getText().toString();
  565.  
  566. Map userInfo = new HashMap();
  567. userInfo.put("UserName", mUserName);
  568. mTutorDatabase.updateChildren(userInfo);
  569. Toast.makeText(this, "Changed succesful", Toast.LENGTH_SHORT).show();
  570. return;
  571. }
  572.  
  573.  
  574. private void saveUserInformationFullName() {
  575.  
  576.  
  577. mFullName = fullName.getText().toString();
  578. Map userInfo = new HashMap();
  579. userInfo.put("FullName", mFullName);
  580. // userInfo.put("UserName", mUserName);
  581. mTutorDatabase.updateChildren(userInfo);
  582. Toast.makeText(this, "Changed succesful", Toast.LENGTH_SHORT).show();
  583.  
  584.  
  585.  
  586. return;
  587.  
  588. }
  589.  
  590. //sign out method
  591. public void signOut() {
  592. auth.signOut();
  593. }
  594.  
  595. @Override
  596. protected void onResume() {
  597. super.onResume();
  598. progressBar.setVisibility(View.GONE);
  599. }
  600.  
  601. @Override
  602. public void onStart() {
  603. super.onStart();
  604. auth.addAuthStateListener(authListener);
  605. }
  606.  
  607. @Override
  608. public void onStop() {
  609. super.onStop();
  610. if (authListener != null) {
  611. auth.removeAuthStateListener(authListener);
  612. }
  613. }
  614.  
  615. @Override
  616. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  617. super.onActivityResult(requestCode, resultCode, data);
  618. if(requestCode == 1 && resultCode == Activity.RESULT_OK){
  619. final Uri imageUri = data.getData();
  620. resultUri = imageUri;
  621. mProfileImage.setImageURI(resultUri);
  622. }
  623. }
  624. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement