SHARE
TWEET

Untitled

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