Fixed task rabbit login with Tim

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

@ -314,7 +314,7 @@
<!-- actfm -->
<activity android:name="com.todoroo.astrid.actfm.ActFmLoginActivity"
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"
android:theme="@android:style/Theme"
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.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)) {

@ -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();

@ -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 <code>WebView</code> that allows users to log in to the
* synchronization provider requested. A callback method determines whether
* This activity displays a <code>WebView</code> 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("<!-- 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();
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();
}
}
});
Loading…
Cancel
Save