Fixed task rabbit login with Tim

pull/14/head
Andrew Shaw 13 years ago
parent 3d06bed032
commit 71ff9615c6

@ -314,7 +314,7 @@
<!-- actfm --> <!-- actfm -->
<activity android:name="com.todoroo.astrid.actfm.ActFmLoginActivity" <activity android:name="com.todoroo.astrid.actfm.ActFmLoginActivity"
android:configChanges="keyboardHidden"/> android:configChanges="keyboardHidden"/>
<activity android:name="com.todoroo.astrid.actfm.OAuthLoginActivity" /> <activity android:name="com.todoroo.astrid.taskrabbit.TaskRabbitOAuthLoginActivity" />
<activity android:name="com.todoroo.astrid.actfm.ActFmPreferences" <activity android:name="com.todoroo.astrid.actfm.ActFmPreferences"
android:theme="@android:style/Theme" android:theme="@android:style/Theme"
android:label="@string/actfm_APr_header"> android:label="@string/actfm_APr_header">

@ -54,7 +54,6 @@ import com.todoroo.andlib.service.RestClient;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.OAuthLoginActivity;
import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskEditFragment;
import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
@ -223,6 +222,18 @@ public class TaskRabbitActivity extends FragmentActivity {
showIntroDialog(); showIntroDialog();
} }
@Override
public void onStop() {
super.onStop();
StatisticsService.sessionStop(this);
}
@Override
public void onPause() {
super.onPause();
StatisticsService.sessionPause();
}
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
@ -690,10 +701,10 @@ public class TaskRabbitActivity extends FragmentActivity {
/* login methods */ /* login methods */
protected void loginTaskRabbit() { protected void loginTaskRabbit() {
Intent intent = new Intent(this, Intent intent = new Intent(this,
OAuthLoginActivity.class); TaskRabbitOAuthLoginActivity.class);
try { 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$ 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); this.startActivityForResult(intent, REQUEST_CODE_TASK_RABBIT_OAUTH);
StatisticsService.reportEvent(StatisticsConstants.TASK_RABBIT_LOGIN); StatisticsService.reportEvent(StatisticsConstants.TASK_RABBIT_LOGIN);
} catch (Exception e) { } catch (Exception e) {
@ -777,7 +788,7 @@ public class TaskRabbitActivity extends FragmentActivity {
@Override @Override
public void onActivityResult (int requestCode, int resultCode, Intent data) { public void onActivityResult (int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_TASK_RABBIT_OAUTH && resultCode == Activity.RESULT_OK){ 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$ String key = "access_token="; //$NON-NLS-1$
if(result.contains(key)) { if(result.contains(key)) {

@ -24,7 +24,6 @@ import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.service.RestClient; import com.todoroo.andlib.service.RestClient;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.EditPeopleControlSet.AssignedChangedListener; import com.todoroo.astrid.actfm.EditPeopleControlSet.AssignedChangedListener;
import com.todoroo.astrid.actfm.OAuthLoginActivity;
import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskEditFragment;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSet; 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) { public boolean activityResult (int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_TASK_RABBIT_ACTIVITY ){ if (requestCode == REQUEST_CODE_TASK_RABBIT_ACTIVITY ){
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
String result = data.getStringExtra(OAuthLoginActivity.DATA_RESPONSE); String result = data.getStringExtra(TaskRabbitOAuthLoginActivity.DATA_RESPONSE);
if (!TextUtils.isEmpty(result)) { if (!TextUtils.isEmpty(result)) {
try { try {
Message successMessage = new Message(); Message successMessage = new Message();

@ -17,15 +17,14 @@
* with this program; if not, write to the Free Software Foundation, Inc., * with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.todoroo.astrid.actfm; package com.todoroo.astrid.taskrabbit;
import java.io.IOException;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.Intent; import android.content.Intent;
import android.net.http.SslError;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentActivity;
import android.util.Log; import android.webkit.SslErrorHandler;
import android.webkit.WebView; import android.webkit.WebView;
import android.webkit.WebViewClient; import android.webkit.WebViewClient;
@ -36,26 +35,27 @@ import com.todoroo.andlib.service.RestClient;
import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.DialogUtilities;
/** /**
* This activity displays a <code>WebView</code> that allows users to log in to the * This activity displays a <code>WebView</code> that allows users to log in to
* synchronization provider requested. A callback method determines whether * the synchronization provider requested. A callback method determines whether
* their login was successful and therefore whether to dismiss the dialog. * their login was successful and therefore whether to dismiss the dialog.
* *
* @author timsu * @author timsu
* *
*/ */
public class OAuthLoginActivity extends FragmentActivity { public class TaskRabbitOAuthLoginActivity extends FragmentActivity {
/** /**
* URL to display * 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 * Resultant URL data
*/ */
public static final String DATA_RESPONSE = "response"; //$NON-NLS-1$ public static final String DATA_RESPONSE = "response"; //$NON-NLS-1$
@Autowired RestClient restClient; @Autowired
RestClient restClient;
ProgressDialog pd; ProgressDialog pd;
@ -73,7 +73,7 @@ public class OAuthLoginActivity extends FragmentActivity {
final String urlParam = getIntent().getStringExtra(URL_TOKEN); 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().setJavaScriptEnabled(true);
webView.getSettings().setSavePassword(false); webView.getSettings().setSavePassword(false);
@ -81,44 +81,47 @@ public class OAuthLoginActivity extends FragmentActivity {
webView.getSettings().setSupportZoom(true); webView.getSettings().setSupportZoom(true);
webView.setWebViewClient(new WebViewClient() { 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 @Override
public void onPageFinished(WebView view, final String url) { public void onPageFinished(WebView view, final String url) {
super.onPageFinished(view, url); super.onPageFinished(view, url);
pd.dismiss(); pd.dismiss();
new Thread() { if (url.contains("access_token=")) {
@Override String token = url.substring(url.indexOf("access_token="),
public void run() { url.length());
String data; Intent intent = new Intent();
try { intent.putExtra(DATA_RESPONSE, token);
data = restClient.get(url); setResult(RESULT_OK, intent);
finish();
if(data.startsWith("<!-- success -->")) { //$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();
} }
}); });
Loading…
Cancel
Save