Advertisement
Guest User

Untitled

a guest
Jan 13th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.35 KB | None | 0 0
  1. public class AuthActivity extends BaseActivity implements AuthContract.View {
  2.  
  3. @BindView(R.id.ivGitHubStatus) ImageView mImgStatusImage;
  4. @BindView(R.id.tvGitHubStatus) TextView mLblStatusText;
  5. @BindView(R.id.tilUsername) TextInputLayout mWrapperTxtUsername;
  6. @BindView(R.id.tilPassword) TextInputLayout mWrapperTxtPassword;
  7. @BindView(R.id.btOAuth) Button mBtnOAuth;
  8.  
  9. @Inject @Named("secret") SharedPreferences mSharedPrefs;
  10. @Inject AppHelper mAppHelper; //TODO Dagger!
  11. @Inject AuthContract.Presenter mPresenter; //TODO Dagger!
  12.  
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.activity_auth);
  17.  
  18. ButterKnife.bind(this);
  19. super.getDaggerDiComponent().inject(this);
  20.  
  21. mPresenter.setView(this);
  22.  
  23. this.bindUsingRx();
  24. }
  25.  
  26. @Override
  27. protected void onResume() {
  28. super.onResume();
  29. // Restore default GitHub fields status
  30. onLoadStatusType(Status.Type.NONE);
  31. // Get last status from GitHub Status API
  32. mPresenter.loadStatus();
  33. // Process (if necessary) OAUth redirect
  34. this.processOAuthRedirectUri();
  35. }
  36.  
  37. @Override
  38. public void onLoadStatusType(Status.Type statusType) {
  39. int color = ContextCompat.getColor(AuthActivity.this, statusType.getColorRes());
  40. DrawableCompat.setTint(mImgStatusImage.getDrawable(), color);
  41. mLblStatusText.setTextColor(color);
  42. mLblStatusText.setText(getString(statusType.getMessageRes()));
  43. }
  44.  
  45. @Override
  46. public void onAuthSuccess(String credential, User entity) {
  47. final String authCredentialKey = getString(R.string.sp_auth_credential_key);
  48. mSharedPrefs.edit().putString(authCredentialKey, credential).apply();
  49. //TODO Redirect to home activity
  50. Snackbar.make(mImgStatusImage, credential, Snackbar.LENGTH_LONG).show();
  51. }
  52.  
  53. @Override
  54. public void showError(String message) {
  55. Snackbar.make(mImgStatusImage, message, Snackbar.LENGTH_LONG).show();
  56. }
  57.  
  58. @OnClick(R.id.btBasicAuth)
  59. public void onBasicAuthClick(final View view) {
  60. if (mAppHelper.validateRequiredFields(mWrapperTxtUsername, mWrapperTxtPassword)) {
  61. final String username = mWrapperTxtUsername.getEditText().getText().toString();
  62. final String password = mWrapperTxtPassword.getEditText().getText().toString();
  63. final String authCredential = Credentials.basic(username, password);
  64. mPresenter.callGetUser(authCredential);
  65. }
  66. }
  67.  
  68. private void bindUsingRx() {
  69. RxView.clicks(mBtnOAuth).subscribe(aVoid -> {
  70. final String baseUrl = GitHubOAuthService.BASE_URL + "authorize";
  71. final String clientId = getString(R.string.oauth_client_id);
  72. final String redirectUri = getOAuthRedirectUri();
  73. final Uri uri = Uri.parse(baseUrl + "?client_id=" + clientId + "&redirect_uri=" + redirectUri);
  74. Intent intent = new Intent(Intent.ACTION_VIEW, uri);
  75. startActivity(intent);
  76. });
  77.  
  78. if (mWrapperTxtUsername.getEditText() != null && mWrapperTxtPassword.getEditText() != null) {
  79. RxTextView.textChanges(mWrapperTxtUsername.getEditText())
  80. .skip(1)
  81. .subscribe(text -> {
  82. mAppHelper.validateRequiredFields(mWrapperTxtUsername);
  83. });
  84. RxTextView.textChanges(mWrapperTxtPassword.getEditText())
  85. .skip(1)
  86. .subscribe(text -> {
  87. mAppHelper.validateRequiredFields(mWrapperTxtPassword);
  88. });
  89. }
  90. }
  91.  
  92. private void processOAuthRedirectUri() {
  93. // the intent filter defined in AndroidManifest will handle the return from ACTION_VIEW intent
  94. final Uri uri = getIntent().getData();
  95. if (uri != null && uri.toString().startsWith(this.getOAuthRedirectUri())) {
  96. // use the parameter your API exposes for the code (mostly it's "code")
  97. String code = uri.getQueryParameter("code");
  98. if (code != null) {
  99. // get access token
  100. final String clientId = getString(R.string.oauth_client_id);
  101. final String clientSecret = getString(R.string.oauth_client_secret);
  102. mPresenter.callAccessToken(clientId, clientSecret, code);
  103. } else if (uri.getQueryParameter("error") != null) {
  104. showError(uri.getQueryParameter("error"));
  105. }
  106. // Clear Intent Data preventing multiple calls
  107. getIntent().setData(null);
  108. }
  109. }
  110.  
  111. @NonNull
  112. private String getOAuthRedirectUri() {
  113. return getString(R.string.oauth_schema) + "://" + getString(R.string.oauth_host);
  114. }
  115.  
  116. @Override
  117. public boolean onCreateOptionsMenu(Menu menu) {
  118. getMenuInflater().inflate(R.menu.main_menu, menu);
  119. return true;
  120. }
  121.  
  122. @Override
  123. public boolean onOptionsItemSelected(MenuItem item) {
  124. switch (item.getItemId()) {
  125. case R.id.icCallHelpdesk:
  126. final String phone = "+55 16 99999-9999";
  127. Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", phone, null));
  128. startActivity(intent);
  129. return true;
  130. default:
  131. return super.onOptionsItemSelected(item);
  132.  
  133. }
  134. }
  135.  
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement