From cc7a36f2da4d6f0fa75d1e4ac1613a32d46b05a4 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 19 Apr 2019 13:15:43 -0500 Subject: [PATCH] Fix oauth crash --- .../gtasks/auth/GtasksLoginActivity.java | 67 ++++++++----------- .../org/tasks/drive/DriveLoginActivity.java | 51 ++++++-------- .../tasks/gtasks/GoogleAccountManager.java | 16 +++-- 3 files changed, 55 insertions(+), 79 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java b/app/src/main/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java index eef613d51..45bc5f1a8 100644 --- a/app/src/main/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java +++ b/app/src/main/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java @@ -10,7 +10,6 @@ import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import com.todoroo.andlib.utility.DialogUtilities; -import io.reactivex.disposables.CompositeDisposable; import javax.inject.Inject; import org.tasks.R; import org.tasks.data.GoogleTaskAccount; @@ -29,12 +28,11 @@ import org.tasks.play.AuthResultHandler; */ public class GtasksLoginActivity extends InjectingAppCompatActivity { - private static final int RC_CHOOSE_ACCOUNT = 10988; public static final String EXTRA_ERROR = "extra_error"; + private static final int RC_CHOOSE_ACCOUNT = 10988; @Inject DialogBuilder dialogBuilder; @Inject GoogleAccountManager googleAccountManager; @Inject GoogleTaskListDao googleTaskListDao; - private CompositeDisposable disposables; @Override protected void onCreate(Bundle savedInstanceState) { @@ -57,45 +55,34 @@ public class GtasksLoginActivity extends InjectingAppCompatActivity { getAuthToken(account, pd); } - @Override - protected void onPause() { - super.onPause(); - - if (disposables != null) { - disposables.dispose(); - } - } - private void getAuthToken(String a, final ProgressDialog pd) { - disposables = - new CompositeDisposable( - googleAccountManager.getTasksAuthToken( - this, - a, - new AuthResultHandler() { - @Override - public void authenticationSuccessful(String accountName) { - GoogleTaskAccount account = googleTaskListDao.getAccount(accountName); - if (account == null) { - account = new GoogleTaskAccount(); - account.setAccount(accountName); - googleTaskListDao.insert(account); - } else { - account.setError(""); - googleTaskListDao.update(account); - } - setResult(RESULT_OK); - DialogUtilities.dismissDialog(GtasksLoginActivity.this, pd); - finish(); - } + googleAccountManager.getTasksAuthToken( + this, + a, + new AuthResultHandler() { + @Override + public void authenticationSuccessful(String accountName) { + GoogleTaskAccount account = googleTaskListDao.getAccount(accountName); + if (account == null) { + account = new GoogleTaskAccount(); + account.setAccount(accountName); + googleTaskListDao.insert(account); + } else { + account.setError(""); + googleTaskListDao.update(account); + } + setResult(RESULT_OK); + DialogUtilities.dismissDialog(GtasksLoginActivity.this, pd); + finish(); + } - @Override - public void authenticationFailed(final String message) { - setResult(RESULT_CANCELED, new Intent().putExtra(EXTRA_ERROR, message)); - DialogUtilities.dismissDialog(GtasksLoginActivity.this, pd); - finish(); - } - })); + @Override + public void authenticationFailed(final String message) { + setResult(RESULT_CANCELED, new Intent().putExtra(EXTRA_ERROR, message)); + DialogUtilities.dismissDialog(GtasksLoginActivity.this, pd); + finish(); + } + }); } @Override diff --git a/app/src/main/java/org/tasks/drive/DriveLoginActivity.java b/app/src/main/java/org/tasks/drive/DriveLoginActivity.java index 3a3cb9c0c..3d9d13429 100644 --- a/app/src/main/java/org/tasks/drive/DriveLoginActivity.java +++ b/app/src/main/java/org/tasks/drive/DriveLoginActivity.java @@ -10,7 +10,6 @@ import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import com.todoroo.andlib.utility.DialogUtilities; -import io.reactivex.disposables.CompositeDisposable; import javax.inject.Inject; import org.tasks.R; import org.tasks.dialogs.DialogBuilder; @@ -28,12 +27,11 @@ import org.tasks.preferences.Preferences; */ public class DriveLoginActivity extends InjectingAppCompatActivity { - private static final int RC_CHOOSE_ACCOUNT = 10988; public static final String EXTRA_ERROR = "extra_error"; + private static final int RC_CHOOSE_ACCOUNT = 10988; @Inject DialogBuilder dialogBuilder; @Inject GoogleAccountManager googleAccountManager; @Inject Preferences preferences; - private CompositeDisposable disposables; @Override protected void onCreate(Bundle savedInstanceState) { @@ -56,37 +54,26 @@ public class DriveLoginActivity extends InjectingAppCompatActivity { getAuthToken(account, pd); } - @Override - protected void onPause() { - super.onPause(); - - if (disposables != null) { - disposables.dispose(); - } - } - private void getAuthToken(String a, final ProgressDialog pd) { - disposables = - new CompositeDisposable( - googleAccountManager.getDriveAuthToken( - this, - a, - new AuthResultHandler() { - @Override - public void authenticationSuccessful(String accountName) { - preferences.setString(R.string.p_google_drive_backup_account, accountName); - setResult(RESULT_OK); - DialogUtilities.dismissDialog(DriveLoginActivity.this, pd); - finish(); - } + googleAccountManager.getDriveAuthToken( + this, + a, + new AuthResultHandler() { + @Override + public void authenticationSuccessful(String accountName) { + preferences.setString(R.string.p_google_drive_backup_account, accountName); + setResult(RESULT_OK); + DialogUtilities.dismissDialog(DriveLoginActivity.this, pd); + finish(); + } - @Override - public void authenticationFailed(final String message) { - setResult(RESULT_CANCELED, new Intent().putExtra(EXTRA_ERROR, message)); - DialogUtilities.dismissDialog(DriveLoginActivity.this, pd); - finish(); - } - })); + @Override + public void authenticationFailed(final String message) { + setResult(RESULT_CANCELED, new Intent().putExtra(EXTRA_ERROR, message)); + DialogUtilities.dismissDialog(DriveLoginActivity.this, pd); + finish(); + } + }); } @Override diff --git a/app/src/main/java/org/tasks/gtasks/GoogleAccountManager.java b/app/src/main/java/org/tasks/gtasks/GoogleAccountManager.java index 541909be7..aa5bb4331 100644 --- a/app/src/main/java/org/tasks/gtasks/GoogleAccountManager.java +++ b/app/src/main/java/org/tasks/gtasks/GoogleAccountManager.java @@ -9,6 +9,7 @@ import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AuthenticatorException; import android.accounts.OperationCanceledException; +import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -18,7 +19,6 @@ import com.google.api.services.tasks.TasksScopes; import com.google.common.base.Strings; import io.reactivex.Single; import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import java.io.IOException; import java.util.Collections; @@ -83,20 +83,22 @@ public class GoogleAccountManager { } } - public Disposable getTasksAuthToken( + public void getTasksAuthToken( final Activity activity, final String accountName, final AuthResultHandler handler) { - return getToken(TasksScopes.TASKS, activity, accountName, handler); + getToken(TasksScopes.TASKS, activity, accountName, handler); } - public Disposable getDriveAuthToken( + public void getDriveAuthToken( final Activity activity, final String accountName, final AuthResultHandler handler) { - return getToken(DriveScopes.DRIVE_FILE, activity, accountName, handler); + getToken(DriveScopes.DRIVE_FILE, activity, accountName, handler); } - private Disposable getToken( + @SuppressWarnings("ResultOfMethodCallIgnored") + @SuppressLint("CheckResult") + private void getToken( String scope, Activity activity, String accountName, AuthResultHandler handler) { final Account account = getAccount(accountName); - return Single.fromCallable( + Single.fromCallable( () -> { if (account == null) { throw new RuntimeException(