From 71ff9615c639acb3bc737a9a24ca9636fe807225 Mon Sep 17 00:00:00 2001 From: Andrew Shaw Date: Wed, 29 Feb 2012 18:56:56 -0800 Subject: [PATCH] Fixed task rabbit login with Tim --- astrid/AndroidManifest.xml | 2 +- .../astrid/taskrabbit/TaskRabbitActivity.java | 19 +++- .../taskrabbit/TaskRabbitControlSet.java | 3 +- .../TaskRabbitOAuthLoginActivity.java} | 91 ++++++++++--------- 4 files changed, 64 insertions(+), 51 deletions(-) rename astrid/plugin-src/com/todoroo/astrid/{actfm/OAuthLoginActivity.java => taskrabbit/TaskRabbitOAuthLoginActivity.java} (55%) diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index ec6db6189..f3a9d6f31 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -314,7 +314,7 @@ - + diff --git a/astrid/plugin-src/com/todoroo/astrid/taskrabbit/TaskRabbitActivity.java b/astrid/plugin-src/com/todoroo/astrid/taskrabbit/TaskRabbitActivity.java index 5796816ce..d9da661d8 100644 --- a/astrid/plugin-src/com/todoroo/astrid/taskrabbit/TaskRabbitActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/taskrabbit/TaskRabbitActivity.java @@ -54,7 +54,6 @@ import com.todoroo.andlib.service.RestClient; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; -import com.todoroo.astrid.actfm.OAuthLoginActivity; import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.data.Task; @@ -223,6 +222,18 @@ public class TaskRabbitActivity extends FragmentActivity { showIntroDialog(); } + @Override + public void onStop() { + super.onStop(); + StatisticsService.sessionStop(this); + } + + @Override + public void onPause() { + super.onPause(); + StatisticsService.sessionPause(); + } + @Override public void onDestroy() { super.onDestroy(); @@ -690,10 +701,10 @@ public class TaskRabbitActivity extends FragmentActivity { /* login methods */ protected void loginTaskRabbit() { Intent intent = new Intent(this, - OAuthLoginActivity.class); + TaskRabbitOAuthLoginActivity.class); try { String url = String.format(TASK_RABBIT_URL + "/api/authorize?client_id=%s&client_application=%s", TASK_RABBIT_CLIENT_ID, TASK_RABBIT_CLIENT_APPLICATION_ID); //$NON-NLS-1$ - intent.putExtra(OAuthLoginActivity.URL_TOKEN, url); + intent.putExtra(TaskRabbitOAuthLoginActivity.URL_TOKEN, url); this.startActivityForResult(intent, REQUEST_CODE_TASK_RABBIT_OAUTH); StatisticsService.reportEvent(StatisticsConstants.TASK_RABBIT_LOGIN); } catch (Exception e) { @@ -777,7 +788,7 @@ public class TaskRabbitActivity extends FragmentActivity { @Override public void onActivityResult (int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_TASK_RABBIT_OAUTH && resultCode == Activity.RESULT_OK){ - String result = data.getStringExtra(OAuthLoginActivity.DATA_RESPONSE); + String result = data.getStringExtra(TaskRabbitOAuthLoginActivity.DATA_RESPONSE); String key = "access_token="; //$NON-NLS-1$ if(result.contains(key)) { diff --git a/astrid/plugin-src/com/todoroo/astrid/taskrabbit/TaskRabbitControlSet.java b/astrid/plugin-src/com/todoroo/astrid/taskrabbit/TaskRabbitControlSet.java index 23f2115d3..95c47ce9d 100644 --- a/astrid/plugin-src/com/todoroo/astrid/taskrabbit/TaskRabbitControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/taskrabbit/TaskRabbitControlSet.java @@ -24,7 +24,6 @@ import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.RestClient; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.EditPeopleControlSet.AssignedChangedListener; -import com.todoroo.astrid.actfm.OAuthLoginActivity; import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.helper.TaskEditControlSet; @@ -180,7 +179,7 @@ public class TaskRabbitControlSet extends TaskEditControlSet implements Assigned public boolean activityResult (int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_TASK_RABBIT_ACTIVITY ){ if (resultCode == Activity.RESULT_OK) { - String result = data.getStringExtra(OAuthLoginActivity.DATA_RESPONSE); + String result = data.getStringExtra(TaskRabbitOAuthLoginActivity.DATA_RESPONSE); if (!TextUtils.isEmpty(result)) { try { Message successMessage = new Message(); diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/OAuthLoginActivity.java b/astrid/plugin-src/com/todoroo/astrid/taskrabbit/TaskRabbitOAuthLoginActivity.java similarity index 55% rename from astrid/plugin-src/com/todoroo/astrid/actfm/OAuthLoginActivity.java rename to astrid/plugin-src/com/todoroo/astrid/taskrabbit/TaskRabbitOAuthLoginActivity.java index d6dc4ec99..2fe86ca34 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/OAuthLoginActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/taskrabbit/TaskRabbitOAuthLoginActivity.java @@ -17,15 +17,14 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -package com.todoroo.astrid.actfm; - -import java.io.IOException; +package com.todoroo.astrid.taskrabbit; import android.app.ProgressDialog; import android.content.Intent; +import android.net.http.SslError; import android.os.Bundle; import android.support.v4.app.FragmentActivity; -import android.util.Log; +import android.webkit.SslErrorHandler; import android.webkit.WebView; import android.webkit.WebViewClient; @@ -36,26 +35,27 @@ import com.todoroo.andlib.service.RestClient; import com.todoroo.andlib.utility.DialogUtilities; /** - * This activity displays a WebView that allows users to log in to the - * synchronization provider requested. A callback method determines whether + * This activity displays a WebView that allows users to log in to + * the synchronization provider requested. A callback method determines whether * their login was successful and therefore whether to dismiss the dialog. * * @author timsu * */ -public class OAuthLoginActivity extends FragmentActivity { +public class TaskRabbitOAuthLoginActivity extends FragmentActivity { /** * URL to display */ - public static final String URL_TOKEN = "u"; //$NON-NLS-1$ + public static final String URL_TOKEN = "u"; //$NON-NLS-1$ /** * Resultant URL data */ public static final String DATA_RESPONSE = "response"; //$NON-NLS-1$ - @Autowired RestClient restClient; + @Autowired + RestClient restClient; ProgressDialog pd; @@ -73,7 +73,7 @@ public class OAuthLoginActivity extends FragmentActivity { final String urlParam = getIntent().getStringExtra(URL_TOKEN); - final WebView webView = (WebView)findViewById(R.id.browser); + final WebView webView = (WebView) findViewById(R.id.browser); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setSavePassword(false); @@ -81,44 +81,47 @@ public class OAuthLoginActivity extends FragmentActivity { webView.getSettings().setSupportZoom(true); webView.setWebViewClient(new WebViewClient() { + @Override + public void onReceivedError(WebView view, int errorCode, + String description, String failingUrl) { + System.err.println("hey error. " + errorCode + ": " + description); + } + + @Override + public void onReceivedSslError(WebView view, + SslErrorHandler handler, SslError error) { + handler.proceed(); + } + + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + if (url.contains("?client_id=") + && (url.lastIndexOf("?client_id=") != url.indexOf("?client_id="))) { + String redirectUrl = url.substring(0, + url.lastIndexOf("?client_id=")); + webView.loadUrl(redirectUrl); + return true; + } + return super.shouldOverrideUrlLoading(view, url); + } + + @Override + public void onLoadResource(WebView view, String url) { + super.onLoadResource(view, url); + } + @Override public void onPageFinished(WebView view, final String url) { super.onPageFinished(view, url); pd.dismiss(); - new Thread() { - @Override - public void run() { - String data; - try { - data = restClient.get(url); - - if(data.startsWith("")) { //$NON-NLS-1$ - data = data.substring(data.indexOf('{'), data.lastIndexOf('}') + 1); - Intent intent = new Intent(); - intent.putExtra(DATA_RESPONSE, data); - setResult(RESULT_OK, intent); - runOnUiThread(new Runnable() { - public void run() { - finish(); - } - }); - } - else if (url.contains("access_token=")){ - String token = url.substring(url.indexOf("access_token="), url.length()); - Intent intent = new Intent(); - intent.putExtra(DATA_RESPONSE, token); - setResult(RESULT_OK, intent); - runOnUiThread(new Runnable() { - public void run() { - finish(); - } - }); - } - } catch (IOException e) { - Log.e("astrid", "error-load-url", e); - } - } - }.start(); + if (url.contains("access_token=")) { + String token = url.substring(url.indexOf("access_token="), + url.length()); + Intent intent = new Intent(); + intent.putExtra(DATA_RESPONSE, token); + setResult(RESULT_OK, intent); + finish(); + } } });