Advertisement
kitlolz012

profilefragment updated

Nov 19th, 2023
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.56 KB | None | 0 0
  1. package com.example.gypsy;
  2.  
  3. import static android.app.Activity.RESULT_OK;
  4.  
  5. import android.app.Dialog;
  6. import android.content.Intent;
  7. import android.content.pm.PackageManager;
  8. import android.net.Uri;
  9. import android.os.Bundle;
  10.  
  11. import androidx.annotation.NonNull;
  12. import androidx.annotation.Nullable;
  13. import androidx.core.app.ActivityCompat;
  14. import androidx.core.content.ContextCompat;
  15. import androidx.fragment.app.Fragment;
  16. import androidx.fragment.app.FragmentManager;
  17. import androidx.fragment.app.FragmentTransaction;
  18.  
  19. import android.util.Log;
  20. import android.view.LayoutInflater;
  21. import android.view.View;
  22. import android.view.ViewGroup;
  23. import android.widget.Button;
  24. import android.widget.FrameLayout;
  25. import android.widget.ImageView;
  26. import android.widget.TextView;
  27. import android.widget.ZoomButton;
  28.  
  29. import com.facebook.AccessToken;
  30. import com.facebook.GraphRequest;
  31. import com.facebook.GraphResponse;
  32. import com.google.android.material.floatingactionbutton.FloatingActionButton;
  33. import com.google.firebase.auth.FirebaseAuth;
  34. import com.google.firebase.database.DataSnapshot;
  35. import com.google.firebase.database.DatabaseError;
  36. import com.google.firebase.database.DatabaseReference;
  37. import com.google.firebase.database.FirebaseDatabase;
  38. import com.google.firebase.database.ValueEventListener;
  39. import com.google.firebase.storage.FirebaseStorage;
  40. import com.google.firebase.storage.StorageReference;
  41. import com.google.firebase.storage.UploadTask;
  42. import com.squareup.picasso.Picasso;
  43.  
  44. import com.google.android.material.tabs.TabLayout;
  45. import com.google.android.material.tabs.TabLayoutMediator;
  46. import androidx.viewpager2.widget.ViewPager2;
  47. import androidx.viewpager2.adapter.FragmentStateAdapter;
  48.  
  49.  
  50. import org.json.JSONException;
  51. import org.json.JSONObject;
  52.  
  53. import java.util.HashMap;
  54.  
  55. import de.hdodenhof.circleimageview.CircleImageView;
  56.  
  57.  
  58. public class ProfileFragment extends Fragment {
  59.  
  60.  
  61.     private TextView name;
  62.     private TextView email;
  63.     private TextView pendingbtn, currentbtn, expiredbtn;
  64.     private CircleImageView profilepic;
  65.     private TextView logout;
  66.     private FloatingActionButton picButton;
  67.  
  68.  
  69.     @Override
  70.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  71.                              Bundle savedInstanceState) {
  72.         View view = inflater.inflate(R.layout.fragment_profile, container, false);
  73.  
  74.         name = view.findViewById(R.id.tv_name);
  75.         email = view.findViewById(R.id.tv_email);
  76.         profilepic = view.findViewById(R.id.iv_profilepic);
  77.         logout = view.findViewById(R.id.logout_button);
  78.  
  79.         pendingbtn = view.findViewById(R.id.pendingbtn);
  80.         currentbtn = view.findViewById(R.id.currentbtn);
  81.         expiredbtn = view.findViewById(R.id.expiredbtn);
  82.  
  83.  
  84.         AccessToken accessToken = AccessToken.getCurrentAccessToken();
  85.  
  86.         GraphRequest request = GraphRequest.newMeRequest(
  87.                 accessToken,
  88.                 new GraphRequest.GraphJSONObjectCallback() {
  89.                     @Override
  90.                     public void onCompleted(
  91.                             JSONObject object,
  92.                             GraphResponse response) {
  93.  
  94.                         if (response.getError() != null) {
  95.                             Log.e("GraphRequest Error", response.getError().getErrorMessage());
  96.                             return;
  97.                         }
  98.  
  99.                         if (object != null) {
  100.                             try {
  101.                                 String fullName = object.optString("name", "");
  102.                                 String url = object.getJSONObject("picture").getJSONObject("data").optString("url", "");
  103.  
  104.                                 name.setText(fullName);
  105.                                 Picasso.get().load(url).into(profilepic);
  106.                             } catch (JSONException e) {
  107.                                 e.printStackTrace();
  108.                             }
  109.                         } else {
  110.                             Log.e("GraphRequest Error", "JSON object is null");
  111.                         }
  112.                     }
  113.  
  114.                 });
  115.  
  116.         Bundle parameters = new Bundle();
  117.         parameters.putString("fields", "id,name,link,picture.type(medium)");
  118.         request.setParameters(parameters);
  119.         request.executeAsync();
  120.  
  121.         retrieveAndDisplayUserInfo();
  122.  
  123.         picButton = view.findViewById(R.id.pic_Button);
  124.         picButton.setOnClickListener(new View.OnClickListener() {
  125.             @Override
  126.             public void onClick(View v) {
  127.                 onSelectProfilePictureClick(v);
  128.             }
  129.         });
  130.  
  131.         logout.setOnClickListener(new View.OnClickListener() {
  132.             @Override
  133.             public void onClick(View v) {
  134.                 logoutUser();
  135.             }
  136.         });
  137.  
  138.         expiredbtn.setOnClickListener(new View.OnClickListener() {
  139.             @Override
  140.             public void onClick(View view) {
  141.                 Intent intent = new Intent(getActivity(), ExpiredBooking.class);
  142.                 startActivity(intent);
  143.             }
  144.         });
  145.  
  146.         currentbtn.setOnClickListener(new View.OnClickListener() {
  147.             @Override
  148.             public void onClick(View view) {
  149.                 Intent intent = new Intent(getActivity(), ConfirmedBooking.class);
  150.                 startActivity(intent);
  151.             }
  152.         });
  153.  
  154.         pendingbtn.setOnClickListener(new View.OnClickListener() {
  155.             @Override
  156.             public void onClick(View view) {
  157.                 Intent intent = new Intent(getActivity(), PendingBooking.class);
  158.                 startActivity(intent);
  159.             }
  160.         });
  161.  
  162.         TextView tutorialsbtnView = view.findViewById(R.id.tutorialsbtn);
  163.  
  164.         tutorialsbtnView.setOnClickListener(new View.OnClickListener() {
  165.             @Override
  166.             public void onClick(View v) {
  167.                 Intent intent = new Intent(getActivity(), Tutorials.class);
  168.                 startActivity(intent);
  169.             }
  170.         });
  171.  
  172.         TextView termsTextView = view.findViewById(R.id.termsbtn);
  173.  
  174.         termsTextView.setOnClickListener(new View.OnClickListener() {
  175.             @Override
  176.             public void onClick(View v) {
  177.                 Intent intent = new Intent(getActivity(), TermsOfUse.class);
  178.                 startActivity(intent);
  179.             }
  180.         });
  181.  
  182.         TextView privacyTextView = view.findViewById(R.id.privacybtn);
  183.  
  184.         privacyTextView.setOnClickListener(new View.OnClickListener() {
  185.             @Override
  186.             public void onClick(View v) {
  187.                 Intent intent = new Intent(getActivity(), PrivacyPolicy.class);
  188.                 startActivity(intent);
  189.             }
  190.         });
  191.  
  192.         TextView contactTextView = view.findViewById(R.id.contactbtn);
  193.  
  194.         contactTextView.setOnClickListener(new View.OnClickListener() {
  195.             @Override
  196.             public void onClick(View v) {
  197.                 Intent intent = new Intent(getActivity(), ContactUs.class);
  198.                 startActivity(intent);
  199.             }
  200.         });
  201.  
  202.  
  203.         return view;
  204.  
  205.     }
  206.  
  207.  
  208.     public void onSelectProfilePictureClick(View view) {
  209.         Intent intent = new Intent(Intent.ACTION_PICK);
  210.         intent.setType("image/*");
  211.         startActivityForResult(intent, 1);
  212.     }
  213.  
  214.     @Override
  215.     public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  216.         super.onActivityResult(requestCode, resultCode, data);
  217.  
  218.         if (requestCode == 1 && resultCode == RESULT_OK && data != null) {
  219.             Uri imageUri = data.getData();
  220.             uploadProfilePictureToStorage(imageUri);
  221.         }
  222.     }
  223.  
  224.     private void uploadProfilePictureToStorage(Uri imageUri) {
  225.         String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
  226.         StorageReference storageRef = FirebaseStorage.getInstance().getReference();
  227.         StorageReference profilePicsRef = storageRef.child("profile_pictures").child(userId);
  228.  
  229.         UploadTask uploadTask = profilePicsRef.putFile(imageUri);
  230.         uploadTask.addOnSuccessListener(taskSnapshot -> {
  231.             // Profile picture uploaded successfully, get the download URL
  232.             profilePicsRef.getDownloadUrl().addOnSuccessListener(uri -> {
  233.                 String profilePictureUrl = uri.toString();
  234.  
  235.                 // Save the profile picture URL to the Firebase Database
  236.                 saveProfilePictureUrlToFirebase(profilePictureUrl);
  237.             });
  238.         });
  239.     }
  240.  
  241.     private void saveProfilePictureUrlToFirebase(String profilePictureUrl) {
  242.         String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
  243.         DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("users").child("Tourist").child(userId);
  244.  
  245.         HashMap<String, Object> userData = new HashMap<>();
  246.         userData.put("profilePictureUrl", profilePictureUrl);
  247.  
  248.         userRef.updateChildren(userData).addOnSuccessListener(aVoid -> {
  249.             Picasso.get().load(profilePictureUrl).into(profilepic);
  250.  
  251.         }).addOnFailureListener(e -> {
  252.         });
  253.     }
  254.  
  255.  
  256.  
  257.  
  258.     private void retrieveAndDisplayUserInfo() {
  259.         String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
  260.         DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("users");
  261.  
  262.         userRef.child("Tourist").child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
  263.             @Override
  264.             public void onDataChange(@NonNull DataSnapshot snapshot) {
  265.                 if (snapshot.exists()) {
  266.                     String nameValue = snapshot.child("name").getValue(String.class);
  267.                     String emailValue = snapshot.child("email").getValue(String.class);
  268.                     String profilePictureUrl = snapshot.child("profilePictureUrl").getValue(String.class); // Assuming you store the profile picture URL in the database
  269.  
  270.                     Log.d("ProfileFragment", "Name: " + nameValue);
  271.                     Log.d("ProfileFragment", "Email: " + emailValue);
  272.  
  273.                     if (getActivity() != null) {
  274.                         getActivity().runOnUiThread(new Runnable() {
  275.                             @Override
  276.                             public void run() {
  277.                                 name.setText(nameValue);
  278.                                 email.setText(emailValue);
  279.  
  280.                                 Picasso.get().load(profilePictureUrl).into(profilepic);
  281.                             }
  282.                         });
  283.                     }
  284.                 }
  285.             }
  286.  
  287.             @Override
  288.             public void onCancelled(@NonNull DatabaseError error) {
  289.                 Log.e("ProfileError", "Database error: " + error.getMessage());
  290.             }
  291.         });
  292.     }
  293.  
  294.     private void logoutUser() {
  295.         Dialog dialog = new Dialog(getActivity());
  296.         dialog.setContentView(R.layout.logout_alert);
  297.  
  298.         TextView message = dialog.findViewById(R.id.dialog_message);
  299.         TextView yesButton = dialog.findViewById(R.id.yes_button);
  300.         TextView noButton = dialog.findViewById(R.id.no_button);
  301.  
  302.         message.setText("Are you sure you want to log out?");
  303.  
  304.         yesButton.setOnClickListener(view -> {
  305.             FirebaseAuth.getInstance().signOut();
  306.             Intent intent = new Intent(getActivity(), MainActivityRegister.class);
  307.             startActivity(intent);
  308.             getActivity().finish();
  309.             dialog.dismiss();
  310.         });
  311.  
  312.         noButton.setOnClickListener(view -> {
  313.             dialog.dismiss();
  314.         });
  315.  
  316.         dialog.show();
  317.     }
  318.  
  319.  
  320. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement