Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.gypsy;
- import static android.app.Activity.RESULT_OK;
- import android.app.Dialog;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.net.Uri;
- import android.os.Bundle;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.core.app.ActivityCompat;
- import androidx.core.content.ContextCompat;
- import androidx.fragment.app.Fragment;
- import androidx.fragment.app.FragmentManager;
- import androidx.fragment.app.FragmentTransaction;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.Button;
- import android.widget.FrameLayout;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.ZoomButton;
- import com.facebook.AccessToken;
- import com.facebook.GraphRequest;
- import com.facebook.GraphResponse;
- import com.google.android.material.floatingactionbutton.FloatingActionButton;
- import com.google.firebase.auth.FirebaseAuth;
- 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 com.squareup.picasso.Picasso;
- import com.google.android.material.tabs.TabLayout;
- import com.google.android.material.tabs.TabLayoutMediator;
- import androidx.viewpager2.widget.ViewPager2;
- import androidx.viewpager2.adapter.FragmentStateAdapter;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.util.HashMap;
- import de.hdodenhof.circleimageview.CircleImageView;
- public class ProfileFragment extends Fragment {
- private TextView name;
- private TextView email;
- private TextView pendingbtn, currentbtn, expiredbtn;
- private CircleImageView profilepic;
- private TextView logout;
- private FloatingActionButton picButton;
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_profile, container, false);
- name = view.findViewById(R.id.tv_name);
- email = view.findViewById(R.id.tv_email);
- profilepic = view.findViewById(R.id.iv_profilepic);
- logout = view.findViewById(R.id.logout_button);
- pendingbtn = view.findViewById(R.id.pendingbtn);
- currentbtn = view.findViewById(R.id.currentbtn);
- expiredbtn = view.findViewById(R.id.expiredbtn);
- AccessToken accessToken = AccessToken.getCurrentAccessToken();
- GraphRequest request = GraphRequest.newMeRequest(
- accessToken,
- new GraphRequest.GraphJSONObjectCallback() {
- @Override
- public void onCompleted(
- JSONObject object,
- GraphResponse response) {
- if (response.getError() != null) {
- Log.e("GraphRequest Error", response.getError().getErrorMessage());
- return;
- }
- if (object != null) {
- try {
- String fullName = object.optString("name", "");
- String url = object.getJSONObject("picture").getJSONObject("data").optString("url", "");
- name.setText(fullName);
- Picasso.get().load(url).into(profilepic);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- } else {
- Log.e("GraphRequest Error", "JSON object is null");
- }
- }
- });
- Bundle parameters = new Bundle();
- parameters.putString("fields", "id,name,link,picture.type(medium)");
- request.setParameters(parameters);
- request.executeAsync();
- retrieveAndDisplayUserInfo();
- picButton = view.findViewById(R.id.pic_Button);
- picButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- onSelectProfilePictureClick(v);
- }
- });
- logout.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- logoutUser();
- }
- });
- expiredbtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent intent = new Intent(getActivity(), ExpiredBooking.class);
- startActivity(intent);
- }
- });
- currentbtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent intent = new Intent(getActivity(), ConfirmedBooking.class);
- startActivity(intent);
- }
- });
- pendingbtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent intent = new Intent(getActivity(), PendingBooking.class);
- startActivity(intent);
- }
- });
- TextView tutorialsbtnView = view.findViewById(R.id.tutorialsbtn);
- tutorialsbtnView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(getActivity(), Tutorials.class);
- startActivity(intent);
- }
- });
- TextView termsTextView = view.findViewById(R.id.termsbtn);
- termsTextView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(getActivity(), TermsOfUse.class);
- startActivity(intent);
- }
- });
- TextView privacyTextView = view.findViewById(R.id.privacybtn);
- privacyTextView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(getActivity(), PrivacyPolicy.class);
- startActivity(intent);
- }
- });
- TextView contactTextView = view.findViewById(R.id.contactbtn);
- contactTextView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(getActivity(), ContactUs.class);
- startActivity(intent);
- }
- });
- return view;
- }
- public void onSelectProfilePictureClick(View view) {
- Intent intent = new Intent(Intent.ACTION_PICK);
- intent.setType("image/*");
- startActivityForResult(intent, 1);
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == 1 && resultCode == RESULT_OK && data != null) {
- Uri imageUri = data.getData();
- uploadProfilePictureToStorage(imageUri);
- }
- }
- private void uploadProfilePictureToStorage(Uri imageUri) {
- String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
- StorageReference storageRef = FirebaseStorage.getInstance().getReference();
- StorageReference profilePicsRef = storageRef.child("profile_pictures").child(userId);
- UploadTask uploadTask = profilePicsRef.putFile(imageUri);
- uploadTask.addOnSuccessListener(taskSnapshot -> {
- // Profile picture uploaded successfully, get the download URL
- profilePicsRef.getDownloadUrl().addOnSuccessListener(uri -> {
- String profilePictureUrl = uri.toString();
- // Save the profile picture URL to the Firebase Database
- saveProfilePictureUrlToFirebase(profilePictureUrl);
- });
- });
- }
- private void saveProfilePictureUrlToFirebase(String profilePictureUrl) {
- String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
- DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("users").child("Tourist").child(userId);
- HashMap<String, Object> userData = new HashMap<>();
- userData.put("profilePictureUrl", profilePictureUrl);
- userRef.updateChildren(userData).addOnSuccessListener(aVoid -> {
- Picasso.get().load(profilePictureUrl).into(profilepic);
- }).addOnFailureListener(e -> {
- });
- }
- private void retrieveAndDisplayUserInfo() {
- String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
- DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("users");
- userRef.child("Tourist").child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(@NonNull DataSnapshot snapshot) {
- if (snapshot.exists()) {
- String nameValue = snapshot.child("name").getValue(String.class);
- String emailValue = snapshot.child("email").getValue(String.class);
- String profilePictureUrl = snapshot.child("profilePictureUrl").getValue(String.class); // Assuming you store the profile picture URL in the database
- Log.d("ProfileFragment", "Name: " + nameValue);
- Log.d("ProfileFragment", "Email: " + emailValue);
- if (getActivity() != null) {
- getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- name.setText(nameValue);
- email.setText(emailValue);
- Picasso.get().load(profilePictureUrl).into(profilepic);
- }
- });
- }
- }
- }
- @Override
- public void onCancelled(@NonNull DatabaseError error) {
- Log.e("ProfileError", "Database error: " + error.getMessage());
- }
- });
- }
- private void logoutUser() {
- Dialog dialog = new Dialog(getActivity());
- dialog.setContentView(R.layout.logout_alert);
- TextView message = dialog.findViewById(R.id.dialog_message);
- TextView yesButton = dialog.findViewById(R.id.yes_button);
- TextView noButton = dialog.findViewById(R.id.no_button);
- message.setText("Are you sure you want to log out?");
- yesButton.setOnClickListener(view -> {
- FirebaseAuth.getInstance().signOut();
- Intent intent = new Intent(getActivity(), MainActivityRegister.class);
- startActivity(intent);
- getActivity().finish();
- dialog.dismiss();
- });
- noButton.setOnClickListener(view -> {
- dialog.dismiss();
- });
- dialog.show();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement