Merge pull request #444 from misaochan/fix-login-3

Revert login-breaking commit
This commit is contained in:
Vivek Maskara 2017-03-20 23:57:17 +05:30 committed by GitHub
commit d8fdd49344
2 changed files with 28 additions and 29 deletions

View file

@ -1,16 +1,12 @@
package fr.free.nrw.commons.auth;
import android.Manifest;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AccountManagerFuture;
import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import java.io.IOException;
@ -24,24 +20,23 @@ public abstract class AuthenticatedActivity extends BaseAppCompatActivity {
CommonsApplication app;
private String authCookie;
public AuthenticatedActivity(String accountType) {
this.accountType = accountType;
this.accountType = accountType;
}
private class GetAuthCookieTask extends AsyncTask<Void, String, String> {
private Account account;
private AccountManager accountManager;
public GetAuthCookieTask(Account account, AccountManager accountManager) {
this.account = account;
this.accountManager = accountManager;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result != null) {
if(result != null) {
authCookie = result;
onAuthCookieAcquired(result);
} else {
@ -65,19 +60,19 @@ public abstract class AuthenticatedActivity extends BaseAppCompatActivity {
}
}
}
private class AddAccountTask extends AsyncTask<Void, String, String> {
private AccountManager accountManager;
public AddAccountTask(AccountManager accountManager) {
this.accountManager = accountManager;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result != null) {
Account curAccount = getCurrentAccount();
if(result != null) {
Account[] allAccounts =accountManager.getAccountsByType(accountType);
Account curAccount = allAccounts[0];
GetAuthCookieTask getCookieTask = new GetAuthCookieTask(curAccount, accountManager);
getCookieTask.execute();
} else {
@ -85,18 +80,6 @@ public abstract class AuthenticatedActivity extends BaseAppCompatActivity {
}
}
@Nullable
private Account getCurrentAccount() {
if (ActivityCompat.checkSelfPermission(AuthenticatedActivity.this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
return null;
}
Account[] allAccounts = accountManager.getAccountsByType(accountType);
if (allAccounts == null) {
return null;
}
return allAccounts[0];
}
@Override
protected String doInBackground(Void... params) {
AccountManagerFuture<Bundle> resultFuture = accountManager.addAccount(accountType, null, null, null, AuthenticatedActivity.this, null, null);

View file

@ -50,11 +50,11 @@ public class LoginActivity extends AccountAuthenticatorActivity {
Button signupButton;
EditText usernameEdit;
EditText passwordEdit;
ProgressDialog dialog;
private class LoginTask extends AsyncTask<String, String, String> {
Activity context;
ProgressDialog dialog;
String username;
String password;
@ -69,7 +69,9 @@ public class LoginActivity extends AccountAuthenticatorActivity {
.log();
if (result.equals("Success")) {
dialog.dismiss();
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
Toast successToast = Toast.makeText(context, R.string.login_success, Toast.LENGTH_SHORT);
successToast.show();
Account account = new Account(username, WikiAccountAuthenticator.COMMONS_ACCOUNT_TYPE);
@ -219,6 +221,20 @@ public class LoginActivity extends AccountAuthenticatorActivity {
}
}
@Override
protected void onDestroy() {
try {
// To prevent leaked window when finish() is called, see http://stackoverflow.com/questions/32065854/activity-has-leaked-window-at-alertdialog-show-method
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
} catch (Exception e) {
e.printStackTrace();
}
super.onDestroy();
}
private void performLogin() {
String username = usernameEdit.getText().toString();
// Because Mediawiki is upercase-first-char-then-case-sensitive :)