Yuvipanda has uploaded a new change for review. https://gerrit.wikimedia.org/r/115872
Change subject: Login the user right after they create an account ...................................................................... Login the user right after they create an account Might need better UX - right now there's no way for us to show errors in the login process itself Change-Id: I26449e125f2398574631b63e4c3c07d012389b68 --- M wikipedia/src/main/java/org/wikipedia/createaccount/CreateAccountActivity.java M wikipedia/src/main/java/org/wikipedia/login/LoginActivity.java M wikipedia/src/main/java/org/wikipedia/login/LoginTask.java 3 files changed, 42 insertions(+), 6 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/72/115872/1 diff --git a/wikipedia/src/main/java/org/wikipedia/createaccount/CreateAccountActivity.java b/wikipedia/src/main/java/org/wikipedia/createaccount/CreateAccountActivity.java index 5a24d18..f37b84e 100644 --- a/wikipedia/src/main/java/org/wikipedia/createaccount/CreateAccountActivity.java +++ b/wikipedia/src/main/java/org/wikipedia/createaccount/CreateAccountActivity.java @@ -11,6 +11,7 @@ import org.mediawiki.api.json.*; import org.wikipedia.*; import org.wikipedia.editing.*; +import org.wikipedia.login.*; public class CreateAccountActivity extends ActionBarActivity { @Required(order=1) @@ -158,7 +159,7 @@ // Returns lowercase 'success', unlike every other API. GRR man, GRR // Replace wen https://bugzilla.wikimedia.org/show_bug.cgi?id=61663 is fixed? if (result.getResult().toLowerCase().equals("success")) { - finish(); + doLogin(); } else if (result.getResult().equals("captcha-createaccount-fail")) { // So for now we just need to do the entire set of requests again. sigh // Eventually this should be fixed to have the new captcha info come back. @@ -172,6 +173,33 @@ }.execute(); } + private void doLogin() { + final ProgressDialog dialog = new ProgressDialog(this); + dialog.setMessage(getString(R.id.create_account_logging_in)); + dialog.setIndeterminate(true); + + new LoginTask(this, app.getPrimarySite(), usernameEdit.getText().toString(), passwordEdit.getText().toString()) { + @Override + public void onBeforeExecute() { + dialog.show(); + } + + @Override + public void onFinish(String result) { + super.onFinish(result); + if (result.equals("Success")) { + dialog.dismiss(); + finish(); + } else { + // FIXME: Have better error handling here, m'kay? + // I think the only way this can fail is: too many attempts, network error. + // I wonder how we should handle either. + throw new RuntimeException("Whelp, let's fix this"); + } + } + }.execute(); + } + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { diff --git a/wikipedia/src/main/java/org/wikipedia/login/LoginActivity.java b/wikipedia/src/main/java/org/wikipedia/login/LoginActivity.java index 0c79919..a10e6da 100644 --- a/wikipedia/src/main/java/org/wikipedia/login/LoginActivity.java +++ b/wikipedia/src/main/java/org/wikipedia/login/LoginActivity.java @@ -95,14 +95,11 @@ @Override public void onFinish(String result) { + super.onFinish(result); progressDialog.dismiss(); if (result.equals("Success")) { Toast.makeText(LoginActivity.this, R.string.login_success_toast, Toast.LENGTH_LONG).show(); - app.getUserInfoStorage().setUser(new User(username, password)); setResult(LOG_IN_SUCCESSFUL); - - // Clear the edit tokens - clears out any anon tokens we might have had - app.getEditTokenStorage().clearAllTokens(); Utils.hideSoftKeyboard(LoginActivity.this); diff --git a/wikipedia/src/main/java/org/wikipedia/login/LoginTask.java b/wikipedia/src/main/java/org/wikipedia/login/LoginTask.java index a0132bc..308e183 100644 --- a/wikipedia/src/main/java/org/wikipedia/login/LoginTask.java +++ b/wikipedia/src/main/java/org/wikipedia/login/LoginTask.java @@ -10,15 +10,26 @@ private final String username; private final String password; private final Api api; + private final WikipediaApp app; public LoginTask(Context context, Site site, String username, String password) { super(ExecutorService.getSingleton().getExecutor(LoginTask.class, 1)); - api = ((WikipediaApp)context.getApplicationContext()).getAPIForSite(site); + app = (WikipediaApp)context.getApplicationContext(); + api = app.getAPIForSite(site); this.username = username; this.password = password; } @Override + public void onFinish(String result) { + // Clear the edit tokens - clears out any anon tokens we might have had + app.getEditTokenStorage().clearAllTokens(); + + // Set userinfo + app.getUserInfoStorage().setUser(new User(username, password)); + } + + @Override public String performTask() throws Throwable { ApiResult preReq = api.action("login") .param("lgname", username) -- To view, visit https://gerrit.wikimedia.org/r/115872 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I26449e125f2398574631b63e4c3c07d012389b68 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Yuvipanda <yuvipa...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits