Guest User

FragmentThree.java

a guest
Sep 22nd, 2017
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 21.28 KB | None | 0 0
  1. package com.example.hp.heartful;
  2.  
  3. import android.app.ProgressDialog;
  4. import android.content.Intent;
  5. import android.net.Uri;
  6. import android.os.Build;
  7. import android.os.Bundle;
  8. import android.support.annotation.NonNull;
  9. import android.support.annotation.RequiresApi;
  10. import android.support.v4.app.Fragment;
  11. import android.support.v4.app.FragmentManager;
  12. import android.text.TextUtils;
  13. import android.util.Log;
  14. import android.view.LayoutInflater;
  15. import android.view.View;
  16. import android.view.ViewGroup;
  17. import android.widget.Button;
  18. import android.widget.EditText;
  19. import android.widget.ImageView;
  20. import android.widget.TextView;
  21. import android.widget.Toast;
  22.  
  23. import com.bumptech.glide.Glide;
  24. import com.bumptech.glide.load.engine.DiskCacheStrategy;
  25. import com.facebook.AccessToken;
  26. import com.facebook.CallbackManager;
  27. import com.facebook.FacebookCallback;
  28. import com.facebook.FacebookException;
  29. import com.facebook.FacebookSdk;
  30. import com.facebook.appevents.AppEventsLogger;
  31. import com.facebook.login.LoginManager;
  32. import com.facebook.login.LoginResult;
  33. import com.facebook.login.widget.LoginButton;
  34. import com.google.android.gms.auth.api.Auth;
  35. import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
  36. import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
  37. import com.google.android.gms.auth.api.signin.GoogleSignInResult;
  38. import com.google.android.gms.common.ConnectionResult;
  39. import com.google.android.gms.common.SignInButton;
  40. import com.google.android.gms.common.api.GoogleApiClient;
  41. import com.google.android.gms.tasks.OnCompleteListener;
  42. import com.google.android.gms.tasks.Task;
  43. import com.google.firebase.auth.AuthCredential;
  44. import com.google.firebase.auth.AuthResult;
  45. import com.google.firebase.auth.FacebookAuthProvider;
  46. import com.google.firebase.auth.FirebaseAuth;
  47. import com.google.firebase.auth.FirebaseUser;
  48. import com.google.firebase.auth.GoogleAuthProvider;
  49. import com.google.firebase.database.DataSnapshot;
  50. import com.google.firebase.database.DatabaseError;
  51. import com.google.firebase.database.DatabaseReference;
  52. import com.google.firebase.database.FirebaseDatabase;
  53. import com.google.firebase.database.ValueEventListener;
  54.  
  55. import de.hdodenhof.circleimageview.CircleImageView;
  56.  
  57. import static com.facebook.FacebookSdk.getApplicationContext;
  58.  
  59. /**
  60.  * Created by HP INDIA on 08-Apr-17.
  61.  */
  62. public class FragmentThree extends Fragment implements View.OnClickListener{
  63.  
  64.     private boolean shouldRefreshOnResume = false;
  65.     private boolean justRefreshed = false;
  66.     private EditText email_Id;
  67.     private EditText password;
  68.     private SignInButton mgoogleSign;
  69.     private FirebaseAuth mAuth;
  70.     private static final int RC_SIGN_IN=1;
  71.     private GoogleApiClient mGoogleApiClient;
  72.     private EditText User_Name;
  73.     private Button Sign_Up;
  74.     private FirebaseUser firebaseUser;
  75.     private DatabaseReference forUsers;
  76.     private TextView login_Text;
  77.     private FirebaseAuth.AuthStateListener mAuthStateListener;
  78.     private ProgressDialog progress;
  79.     private ProgressDialog fbProgress;
  80.     private static String TAG="FragmentThree";
  81.     private LoginButton mFbLogin;
  82.     private ImageView edit;
  83.     private String profilePicLink;
  84.     private String profileName;
  85.     private TextView userName;
  86.     private CircleImageView profilePic;
  87.     private DatabaseReference userInfo;
  88.     private CallbackManager callbackManager;
  89.     View view;
  90.     View view_pro;
  91.     private ProgressDialog progressDialog;
  92.  
  93.  
  94.     @RequiresApi(api = Build.VERSION_CODES.CUPCAKE)
  95.  
  96.     @Override
  97.     public View onCreateView(final LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
  98.         view = inflater.inflate(R.layout.sign_up_page,container, false);
  99.         view_pro = inflater.inflate(R.layout.profile_layout,container, false);
  100.         fbProgress= new ProgressDialog(getActivity());
  101.         userInfo=FirebaseDatabase.getInstance().getReference().child("Users");
  102.         profilePic=(CircleImageView) view_pro.findViewById(R.id.profile_pic);
  103.         userName=(TextView)view_pro.findViewById(R.id.user_name);
  104.         edit=(ImageView)view_pro.findViewById(R.id.edit);
  105.         fbProgress.setMessage("Connecting to Facebook Account, Please wait...");
  106.         mAuth=FirebaseAuth.getInstance();
  107.         forUsers= FirebaseDatabase.getInstance().getReference().child("Users");
  108.         FacebookSdk.sdkInitialize(getApplicationContext());
  109.         AppEventsLogger.activateApp(getActivity());
  110.         callbackManager= CallbackManager.Factory.create();
  111.         progressDialog=new ProgressDialog(getActivity());
  112.         progress=new ProgressDialog(getActivity());
  113.         email_Id=(EditText)view.findViewById(R.id.email_id);
  114.         progress.setMessage("Connecting to google account,please wait...");
  115.         password=(EditText)view.findViewById(R.id.password);
  116.         User_Name=(EditText)view.findViewById(R.id.User_name);
  117.         Sign_Up=(Button)view.findViewById(R.id.sign_up);
  118.         login_Text=(TextView)view.findViewById(R.id.login_text);
  119.         Sign_Up.setOnClickListener(this);
  120.         edit.setOnClickListener(this);
  121.         mgoogleSign=(SignInButton)view.findViewById(R.id.google_login);
  122.         login_Text.setOnClickListener(this);
  123.         mFbLogin=(LoginButton)view.findViewById(R.id.fb_login);
  124.  
  125.         Glide
  126.                 .with(getActivity())
  127.                 .load(profilePicLink)
  128.                 .dontAnimate()
  129.                 .diskCacheStrategy(DiskCacheStrategy.ALL)
  130.                 .into(profilePic);
  131.         userName.setText(profileName);
  132.  
  133.         mAuthStateListener= new FirebaseAuth.AuthStateListener() {
  134.             @Override
  135.             public void onAuthStateChanged(@NonNull final FirebaseAuth firebaseAuth) {
  136.  
  137.                 justRefreshed = false;
  138.             }
  139.  
  140.         };
  141.  
  142.         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  143.                 .requestIdToken(getString(R.string.default_web_client_id))
  144.                 .requestEmail()
  145.                 .build();
  146.         if(mGoogleApiClient == null || !mGoogleApiClient.isConnected()){
  147.             try {
  148.                 mGoogleApiClient=new GoogleApiClient.Builder(getApplicationContext())
  149.                         .enableAutoManage(getActivity(),new GoogleApiClient.OnConnectionFailedListener() {
  150.                             @Override
  151.                             public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
  152.                                 Toast.makeText(getActivity(),"You get an error", Toast.LENGTH_SHORT).show();
  153.                             }
  154.                         })
  155.                         .addApi(Auth.GOOGLE_SIGN_IN_API,gso)
  156.                         .build();
  157.             } catch (Exception e) {
  158.                 e.printStackTrace();
  159.             }
  160.         }
  161.         mgoogleSign.setOnClickListener(new View.OnClickListener() {
  162.             @Override
  163.             public void onClick(View v) {
  164.                 progress.show();
  165.                 signIn();
  166.             }
  167.         });
  168.  
  169.  
  170.         mFbLogin.setFragment(FragmentThree.this);
  171.         mFbLogin.setReadPermissions("public_profile", "email", "user_friends");
  172.         try {
  173.             mFbLogin.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
  174.                 @Override
  175.                 public void onSuccess(LoginResult loginResult) {
  176.                     Log.v(" FragmentFacebook", "Dekhte hai chal rha hai ki nhi");
  177.                     fbProgress.show();
  178.                     handleFacebookAccessToken(loginResult.getAccessToken());
  179.  
  180.                     // App code
  181.                     //userProfile();
  182.  
  183.                 }
  184.  
  185.                 @Override
  186.                 public void onCancel() {
  187.                     Log.v("FragmentThree 2", "Dekhte hai chal rha hai ki nhi");
  188.                     // App code
  189.                     Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT).show();
  190.                 }
  191.  
  192.                 @Override
  193.                 public void onError(FacebookException exception) {
  194.                     Log.v("FragmentThree 3", "Dekhte hai chal rha hai ki nhi");
  195.                     Log.v("Exception", String.valueOf(exception));
  196.                     // App code
  197.                 }
  198.             });
  199.         }
  200.         catch (Exception e){
  201.             Log.v("FACEBOOK", "Error in the loginButton facebook");
  202.             e.printStackTrace();
  203.         }
  204.         //                }
  205.  
  206.         if(mAuth.getCurrentUser()==null) {
  207.             Log.v("Sign up run hoga", String.valueOf(mAuth.getCurrentUser()));
  208.             Log.v("main hu"," sign up view");
  209.             return view;
  210.         }
  211.         else {
  212.             Log.v("profile run hoga",String.valueOf(mAuth.getCurrentUser()));
  213.             Log.v("main hu"," profile view");
  214.             return view_pro;
  215.         }
  216.     }
  217.  
  218.  
  219.  
  220.     @Override
  221.     public void onStart() {
  222.         super.onStart();
  223.  
  224.         mAuth.addAuthStateListener(mAuthStateListener);
  225.     }
  226. //    @Override
  227. //    public void onDestroy() {
  228. //        super.onDestroy();
  229. //        mGoogleApiClient.stopAutoManage(getActivity());
  230. //        mGoogleApiClient.disconnect();
  231. //    }
  232.  
  233.     private void signIn() {
  234.         Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
  235.         startActivityForResult(signInIntent, RC_SIGN_IN);
  236.     }
  237.  
  238.     @Override
  239.     public void onActivityResult(int requestCode, int resultCode, Intent data) {
  240.         super.onActivityResult(requestCode, resultCode, data);
  241.         callbackManager.onActivityResult(requestCode, resultCode, data);
  242.         if (requestCode == RC_SIGN_IN) {
  243.             GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
  244.             if (result.isSuccess()) {
  245.                 // Google Sign In was successful, authenticate with Firebase
  246.                 GoogleSignInAccount account = result.getSignInAccount();
  247.                 firebaseAuthWithGoogle(account);
  248.                 //progress.dismiss();
  249.             }
  250.  
  251.         }
  252.  
  253.     }
  254.  
  255.     @Override
  256.     public void setMenuVisibility(final boolean visible) {
  257.         mAuth = FirebaseAuth.getInstance();
  258.         if (mAuth.getCurrentUser()==null) {
  259.             if (visible) {
  260.  
  261.                 FragmentManager fm = getFragmentManager();
  262.                 login_dialogbox dialogFragment = new login_dialogbox();
  263.                 dialogFragment.show(fm, "LoginPopup");
  264.  
  265.             }
  266.  
  267.             super.setMenuVisibility(visible);
  268.         }
  269.     }
  270.  
  271.  
  272.     @Override
  273.     public void onClick(View view) {
  274.         if(view==Sign_Up){
  275.             // user will register here
  276.  
  277.             registerUser();
  278.         }
  279.         if(view==login_Text){
  280.             //    login user
  281.             login();
  282.  
  283.         }
  284.         if (view==edit){
  285.             startActivity(new Intent(getActivity(),Preferences.class) );
  286.         }
  287.     }
  288.     //
  289.     private void login(){
  290.  
  291.         try{
  292.             startActivity(new Intent(getActivity(), loginActivity.class));
  293.         }catch (Exception e) {
  294.             Log.e(TAG,Log.getStackTraceString(e));
  295.         }
  296.  
  297.     }
  298.  
  299.     private  void registerUser(){
  300.         String email=email_Id.getText().toString().trim();
  301.         String pass_word=password.getText().toString().trim();
  302.         String user_name=User_Name.getText().toString();
  303.         if(TextUtils.isEmpty(user_name)){
  304.             // email is empty
  305.             Toast.makeText(getActivity(),"please select a name",Toast.LENGTH_SHORT).show();
  306.             return;// to stop the function from executation.
  307.         }
  308.  
  309.  
  310.         if(TextUtils.isEmpty(email)){
  311.             // email is empty
  312.             Toast.makeText(getActivity(),"please enter email",Toast.LENGTH_SHORT).show();
  313.             return;
  314.             // to stop the function from executation.
  315.         }
  316.         if(TextUtils.isEmpty(pass_word)){
  317.             // email is empty
  318.             Toast.makeText(getActivity(),"please enter password",Toast.LENGTH_SHORT).show();
  319.             return;
  320.         }
  321.         // here if everything ok the user will be register
  322.         progressDialog.setMessage("Registering User,please wait...");
  323.         progressDialog.show();
  324.         mAuth.createUserWithEmailAndPassword(email,pass_word)
  325.                 .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>(){
  326.                     @Override
  327.                     public void onComplete(@NonNull Task<AuthResult> task) {
  328.                         if (task.isSuccessful()){
  329.                             //show user profile
  330.                             Toast.makeText(getActivity(),"Registerd successfully",Toast.LENGTH_SHORT).show();
  331.                             justRefreshed = false;
  332.                             reLoad();
  333.                             progressDialog.dismiss();
  334.                             //  startActivity(new Intent(getActivity(),userProfileActivity.class));
  335. //                            intent = new Intent(getApplicationContext(),userProfileActivity.class);
  336. //                            intent.putExtra("EdiTtEXTvALUE", User_Name.getText().toString());
  337. //                            startActivity(intent);
  338.                         }else {
  339.                             Toast.makeText(getActivity(),"could not register, pls try again Error is"+ task.getException(),Toast.LENGTH_LONG).show();
  340.                             progressDialog.dismiss();
  341.                         }
  342.                     }
  343.                 });
  344.  
  345.  
  346.     }
  347.  
  348.     private void handleFacebookAccessToken(AccessToken token) {
  349.         AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
  350.         Log.v("Facebook","Calling");
  351.         mAuth.signInWithCredential(credential)
  352.                 .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
  353.                     @Override
  354.                     public void onComplete(@NonNull Task<AuthResult> task) {
  355.                         if (task.isSuccessful()) {
  356.                             // Sign in success, update UI with the signed-in user's information
  357.                             //   userProfile();
  358.                             firebaseUser=mAuth.getCurrentUser();
  359.                             String personName = firebaseUser.getDisplayName();
  360.                             Uri personPhoto = firebaseUser.getPhotoUrl();
  361.                             DatabaseReference userData = forUsers.child(firebaseUser.getUid());
  362. //                            userData.child("userName").setValue(personName);
  363. //                            userData.child("profilePicLink").setValue(personPhoto.toString());
  364.                             Users user =new Users(personName,personPhoto.toString());
  365.                             userData.setValue(user);
  366.                             Log.i(TAG, "Display Name: " + personName);
  367.                             Log.i(TAG, "given  Name: " + personName);
  368.                             Log.i(TAG, "uri: " + personPhoto);
  369.                             Log.v(TAG, "signInWithCredential:success");
  370.                             forUsers.child(firebaseUser.getUid()).addValueEventListener(new ValueEventListener() {
  371.                                 @Override
  372.                                 public void onDataChange(DataSnapshot dataSnapshot) {
  373.                                     Users user = dataSnapshot.getValue(Users.class);
  374.                                     profilePicLink=user.getProfilePicLink();
  375.                                     profileName=user.getUserName();
  376.                                     Glide
  377.                                             .with(getActivity())
  378.                                             .load(profilePicLink)
  379.                                             .dontAnimate()
  380.                                             .diskCacheStrategy(DiskCacheStrategy.ALL)
  381.                                             .into(profilePic);
  382.                                     userName.setText(profileName);
  383.                                 }
  384.  
  385.                                 @Override
  386.                                 public void onCancelled(DatabaseError databaseError) {
  387.  
  388.                                 }
  389.                             });
  390.  
  391.  
  392.                             Log.v(TAG, "signInWithCredential:success");
  393.                             justRefreshed = false;
  394.                             reLoad();
  395.                             fbProgress.dismiss();
  396.  
  397.                         } else {
  398.                             // If sign in fails, display a message to the user.
  399.                             Log.v("Facebookcheking","Dekhte hai ");
  400.                             Log.w(TAG, "signInWithCredential:failure", task.getException());
  401.                             Toast.makeText(getActivity(), "Authentication failed.",Toast.LENGTH_SHORT).show();
  402.                             LoginManager.getInstance().logOut();
  403.                             fbProgress.dismiss();
  404.  
  405.                         }
  406.  
  407.                         // ...
  408.                     }
  409.                 });
  410.  
  411.     }
  412.  
  413.     private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
  414.         AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
  415.  
  416.         mAuth.signInWithCredential(credential)
  417.                 .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
  418.                     @Override
  419.                     public void onComplete(@NonNull Task<AuthResult> task) {
  420.                         if (task.isSuccessful()) {
  421.                             // Sign in success, update UI with the signed-in user's information
  422.                             //      userProfile();
  423.                             firebaseUser=mAuth.getCurrentUser();
  424.                             String personName = firebaseUser.getDisplayName();
  425.                             Uri personPhoto = firebaseUser.getPhotoUrl();
  426.                             DatabaseReference userData = forUsers.child(firebaseUser.getUid());
  427. //                            userData.child("userName").setValue(personName);
  428. //                            userData.child("profilePicLink").setValue(personPhoto.toString());
  429.                             Users user =new Users(personName,personPhoto.toString());
  430.                             userData.setValue(user);
  431.                             Log.i(TAG, "Display Name: " + personName);
  432.                             Log.i(TAG, "given  Name: " + personName);
  433.                             Log.i(TAG, "uri: " + personPhoto);
  434.                             Log.v(TAG, "signInWithCredential:success");
  435.                             forUsers.child(firebaseUser.getUid()).addValueEventListener(new ValueEventListener() {
  436.                                 @Override
  437.                                 public void onDataChange(DataSnapshot dataSnapshot) {
  438.                                     Users user = dataSnapshot.getValue(Users.class);
  439.                                     profilePicLink=user.getProfilePicLink();
  440.                                     profileName=user.getUserName();
  441.                                     Glide
  442.                                             .with(getActivity())
  443.                                             .load(profilePicLink)
  444.                                             .dontAnimate()
  445.                                             .diskCacheStrategy(DiskCacheStrategy.ALL)
  446.                                             .into(profilePic);
  447.                                     userName.setText(profileName);
  448.                                 }
  449.  
  450.                                 @Override
  451.                                 public void onCancelled(DatabaseError databaseError) {
  452.  
  453.                                 }
  454.                             });
  455.  
  456.                             justRefreshed = false;
  457.                             reLoad();
  458.                             progress.dismiss();
  459.  
  460.  
  461.                         } else {
  462.                             // If sign in fails, display a message to the user.
  463.                             Log.w(TAG, "signInWithCredential:failure", task.getException());
  464.                             Log.v("googlecheking","Dekhte hai ");
  465.                             Toast.makeText(getActivity(), "Authentication failed.",Toast.LENGTH_SHORT).show();
  466.                             progress.dismiss();
  467.  
  468.                         }
  469.  
  470.                         // ...
  471.                     }
  472.                 });
  473.     }
  474.     public void reLoad(){
  475.  
  476.         if(!justRefreshed) {
  477.             FragmentThree fragment = (FragmentThree)
  478.                     getFragmentManager().getFragments().get(2);
  479.             getFragmentManager().beginTransaction()
  480.                     .detach(fragment)
  481.                     .attach(fragment)
  482.                     .commit();
  483.             shouldRefreshOnResume = false;
  484.         }
  485.  
  486.         justRefreshed = true;
  487.         Log.v("reload done", "value of should refresh"+String.valueOf(shouldRefreshOnResume));
  488.  
  489.     }
  490.  
  491.     @Override
  492.     public void onStop() {
  493.         super.onStop();
  494.         shouldRefreshOnResume = true;
  495.         Log.v("value of should refresh", String.valueOf(shouldRefreshOnResume));
  496.         Log.v("reload", "onStop");
  497.  
  498.  
  499.     }
  500.  
  501.     @Override
  502.     public void onResume() {
  503.         super.onResume();
  504.         // Check should we need to refresh the fragment
  505.         if(shouldRefreshOnResume){
  506.             // refresh fragment
  507.             Log.v("value of should refresh", String.valueOf(shouldRefreshOnResume));
  508.             Log.v("reload ing through", "onresume");
  509.             reLoad();
  510.         }
  511.     }
  512.  
  513.  
  514. }
Add Comment
Please, Sign In to add comment