package io.kaif.mobile.view; import android.content.Intent; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import javax.inject.Inject; import butterknife.BindView; import butterknife.ButterKnife; import io.kaif.mobile.KaifApplication; import io.kaif.mobile.R; import io.kaif.mobile.app.BaseActivity; import io.kaif.mobile.view.daemon.AccountDaemon; import io.kaif.mobile.view.graphics.drawable.Triangle; import io.kaif.mobile.view.util.Views; public class LoginActivity extends BaseActivity { @Inject AccountDaemon accountDaemon; @BindView(R.id.sign_in) Button signInBtn; @BindView(R.id.sign_in_progress) ProgressBar signInProgress; @BindView(R.id.sign_in_title) TextView signInTitle; @BindView(R.id.title) TextView title; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); ButterKnife.bind(this); KaifApplication.getInstance().beans().inject(this); int triangleSize = (int) -title.getPaint().ascent(); Triangle triangle = new Triangle(getResources().getColor(R.color.vote_state_up), false); triangle.setBounds(new Rect(0, 0, triangleSize, triangleSize)); title.setCompoundDrawables(triangle, null, null, null); title.setCompoundDrawablePadding((int) Views.convertDpToPixel(16, this)); signInBtn.setOnClickListener(v -> startActivity(accountDaemon.createOauthPageIntent())); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); } @Override protected void onResume() { super.onResume(); final Uri data = getIntent().getData(); if (data == null) { return; } getIntent().setData(null); signInProgress.setVisibility(View.VISIBLE); signInTitle.setVisibility(View.VISIBLE); signInBtn.setVisibility(View.GONE); bind(accountDaemon.accessToken(data.getQueryParameter("code"), data.getQueryParameter("state"))) .subscribe(aVoid -> { Toast.makeText(this, R.string.sign_in_success, Toast.LENGTH_SHORT).show(); Intent intent = new Intent(this, HomeActivity.class); startActivity(intent); finish(); }, throwable -> { Toast.makeText(this, throwable.toString(), Toast.LENGTH_SHORT).show(); signInProgress.setVisibility(View.GONE); signInTitle.setVisibility(View.GONE); signInBtn.setVisibility(View.VISIBLE); }); } }