Brion VIBBER has submitted this change and it was merged.

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/res/values/strings.xml
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
4 files changed, 43 insertions(+), 6 deletions(-)

Approvals:
  Brion VIBBER: Verified; Looks good to me, approved



diff --git a/wikipedia/res/values/strings.xml b/wikipedia/res/values/strings.xml
index 5071107..cdec656 100644
--- a/wikipedia/res/values/strings.xml
+++ b/wikipedia/res/values/strings.xml
@@ -114,4 +114,5 @@
     <string name="zero_settings_devmode_summary">During development this 
enables code execution of W0 things.</string>
     <string name="edit_preview_fetching_dialog_message">Fetching 
preview...</string>
     <string name="edit_preview_activity_title">Preview edit</string>
+    <string name="create_account_logging_in">Logging in...</string>
 </resources>
diff --git 
a/wikipedia/src/main/java/org/wikipedia/createaccount/CreateAccountActivity.java
 
b/wikipedia/src/main/java/org/wikipedia/createaccount/CreateAccountActivity.java
index 5a24d18..a437cb1 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.string.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: merged
Gerrit-Change-Id: I26449e125f2398574631b63e4c3c07d012389b68
Gerrit-PatchSet: 3
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <yuvipa...@gmail.com>
Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to