Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2017
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.04 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.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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement