Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.fitivity.virtualtraining_trainer.UI;
- import android.content.Intent;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ProgressBar;
- import android.widget.RelativeLayout;
- import android.widget.Toast;
- import com.fitivity.virtualtraining_trainer.Domain.ClientManager;
- import com.fitivity.virtualtraining_trainer.R;
- import com.google.android.gms.auth.api.Auth;
- import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
- import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
- import com.google.android.gms.auth.api.signin.GoogleSignInResult;
- import com.google.android.gms.common.ConnectionResult;
- import com.google.android.gms.common.Scopes;
- import com.google.android.gms.common.api.GoogleApiClient;
- import com.google.android.gms.common.api.ResultCallback;
- import com.google.android.gms.common.api.Scope;
- import com.google.android.gms.common.api.Status;
- import com.jakewharton.rxbinding.view.RxView;
- import butterknife.Bind;
- import butterknife.ButterKnife;
- import rx.Observer;
- import rx.functions.Action1;
- public class SignInActivity extends BaseActivity implements GoogleApiClient.OnConnectionFailedListener {
- @Bind(R.id.facebookButton) View facebookButton;
- @Bind(R.id.googleButton) View googleButton;
- @Bind(R.id.cancelButton) View cancelButton;
- @Bind(R.id.terms) View termsButton;
- @Bind(R.id.signInLayout) RelativeLayout signInLayout;
- @Bind(R.id.okSignInButton) Button okSignInButton;
- @Bind(R.id.cancelSignInButton) Button cancelSignInButton;
- @Bind(R.id.emailBox) EditText emailBox;
- @Bind(R.id.progressBar) ProgressBar progressBar;
- private NavigationPresenter navigationPresenter;
- private static final String TAG = "SignInActivity";
- private GoogleApiClient mGoogleApiClient;
- private static final int RC_SIGN_IN = 9001;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_sign_in);
- ButterKnife.bind(this);
- progressBar.setVisibility(ProgressBar.INVISIBLE);
- // Configure sign-in to request the user's ID, email address, and basic info
- GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
- .requestEmail()
- .build();
- // Build a GoogleApiClient with access to the Google Sign-In API and the
- // options specified by gso
- mGoogleApiClient = new GoogleApiClient.Builder(this)
- .enableAutoManage(this, this)
- .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
- .build();
- addPresenter(navigationPresenter = new NavigationPresenter());
- }
- @Override
- public void onResume() {
- super.onResume();
- progressBar.setVisibility(ProgressBar.INVISIBLE);
- }
- @Override
- public void onConnectionFailed(ConnectionResult connectionResult) {
- // An unresolvable error has occurred and Google APIs (including Sign-In) will not
- // be available.
- Log.d(TAG, "onConnectionFailed:" + connectionResult);
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
- if (requestCode == RC_SIGN_IN) {
- GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
- handleSignInResult(result);
- }
- }
- private void handleSignInResult(GoogleSignInResult result) {
- Log.d(TAG, "handleSignInResult:" + result.isSuccess());
- if (result.isSuccess()) {
- // Signed in successfully, show authenticated UI.
- GoogleSignInAccount acct = result.getSignInAccount();
- // mStatusTextView.setText(getString(R.string.signed_in_fmt, acct.getDisplayName()));
- Toast.makeText(getApplicationContext(), "Success! <3", Toast.LENGTH_SHORT).show();
- updateUI(true);
- } else {
- // Signed out, show unauthenticated UI.
- Toast.makeText(getApplicationContext(), "Failed D:", Toast.LENGTH_SHORT).show();
- updateUI(false);
- }
- }
- private void updateUI(boolean signedIn) {
- if (signedIn) {
- // findViewById(R.id.sign_in_button).setVisibility(View.GONE);
- // findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
- } else {
- // mStatusTextView.setText(R.string.signed_out);
- // findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
- // findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
- }
- }
- private class NavigationPresenter extends Presenter {
- @Override
- public void start() {
- super.start();
- RxView.clicks(facebookButton).subscribe(new Action1<Object>() {
- @Override
- public void call(Object o) {
- signInLayout.setVisibility(RelativeLayout.VISIBLE);
- }
- });
- RxView.clicks(okSignInButton).subscribe(new Action1<Void>() {
- @Override
- public void call(Void aVoid) {
- progressBar.setVisibility(ProgressBar.VISIBLE);
- ClientManager.getInstance(emailBox.getText().toString())
- .subscribe(new Observer<ClientManager>() {
- @Override
- public void onCompleted() {
- startActivity(new Intent(getApplicationContext(), MainMenuActivity.class));
- }
- @Override
- public void onError(Throwable e) {
- e.printStackTrace();
- }
- @Override
- public void onNext(ClientManager clientManager) {
- progressBar.setVisibility(ProgressBar.INVISIBLE);
- }
- });
- signInLayout.setVisibility(RelativeLayout.INVISIBLE);
- }
- });
- RxView.clicks(cancelSignInButton).subscribe(new Action1<Void>() {
- @Override
- public void call(Void aVoid) {
- signInLayout.setVisibility(RelativeLayout.INVISIBLE);
- Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
- new ResultCallback<Status>() {
- @Override
- public void onResult(Status status) {
- // [START_EXCLUDE]
- updateUI(false);
- // [END_EXCLUDE]
- }
- });
- }
- });
- RxView.clicks(googleButton).subscribe(new Action1<Object>() {
- @Override
- public void call(Object o) {
- // signInLayout.setVisibility(RelativeLayout.VISIBLE);
- Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
- startActivityForResult(signInIntent, RC_SIGN_IN);
- }
- });
- RxView.clicks(cancelButton).subscribe(new Action1<Object>() {
- @Override
- public void call(Object o) {
- startActivity(new Intent(getApplicationContext(), WelcomeActivity.class));
- }
- });
- RxView.clicks(termsButton).subscribe(new Action1<Object>() {
- @Override
- public void call(Object o) {
- Toast.makeText(getApplicationContext(), "Terms button clicked", Toast.LENGTH_SHORT).show();
- }
- });
- }
- }
- class RetrieveUserDataTask extends AsyncTask<String, Void, Void> {
- @Override
- protected Void doInBackground(String... params) {
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement