diff --git a/ChangeLog b/ChangeLog index 0263d398e..5fd8a65c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ ===== 1.0.10 (??? ??, 2011) ===== * Fixed book downloading service (book-by-link-downloading works again) +* Old authentication dialog has gone ===== 1.0.9 (Apr 23, 2011) ===== * HttpConnection => HttpClient (that fixes a bug in SSL connection) diff --git a/default.properties b/default.properties index 401f269ca..513f21f10 100644 --- a/default.properties +++ b/default.properties @@ -10,4 +10,4 @@ # Project target. target=android-8 java.encoding=utf-8 -#proguard.config=proguard.cfg +proguard.config=proguard.cfg diff --git a/res/layout/network_authentication_dialog.xml b/res/layout/network_authentication_dialog.xml deleted file mode 100644 index fc0c69fd1..000000000 --- a/res/layout/network_authentication_dialog.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/org/geometerplus/android/fbreader/network/AuthenticationActivity.java b/src/org/geometerplus/android/fbreader/network/AuthenticationActivity.java index 8aaf036ca..5bf3a9971 100644 --- a/src/org/geometerplus/android/fbreader/network/AuthenticationActivity.java +++ b/src/org/geometerplus/android/fbreader/network/AuthenticationActivity.java @@ -39,9 +39,7 @@ public class AuthenticationActivity extends Activity { final static String ERROR_KEY = "error"; final static String SHOW_SIGNUP_LINK_KEY = "showSignupLink"; - final static int CANCEL_RESULT_CODE = 0; - final static int OK_RESULT_CODE = 1; - final static int SIGNUP_RESULT_CODE = 2; + final static int RESULT_SIGNUP = RESULT_FIRST_USER; private ZLResource myResource; @@ -49,7 +47,7 @@ public class AuthenticationActivity extends Activity { public void onCreate(Bundle icicle) { super.onCreate(icicle); Thread.setDefaultUncaughtExceptionHandler(new org.geometerplus.zlibrary.ui.android.library.UncaughtExceptionHandler(this)); - setResult(CANCEL_RESULT_CODE); + setResult(RESULT_CANCELED); setContentView(R.layout.authentication); final Intent intent = getIntent(); @@ -98,7 +96,7 @@ public class AuthenticationActivity extends Activity { signupView.setText(myResource.getResource("register").getValue()); signupView.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { - setResult(SIGNUP_RESULT_CODE); + setResult(RESULT_SIGNUP); finish(); } }); @@ -121,7 +119,7 @@ public class AuthenticationActivity extends Activity { PASSWORD_KEY, findTextView(R.id.authentication_password).getText().toString() ); - setResult(OK_RESULT_CODE, data); + setResult(RESULT_OK, data); finish(); } }); diff --git a/src/org/geometerplus/android/fbreader/network/AuthenticationDialog.java b/src/org/geometerplus/android/fbreader/network/AuthenticationDialog.java deleted file mode 100644 index c1ffc68e3..000000000 --- a/src/org/geometerplus/android/fbreader/network/AuthenticationDialog.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright (C) 2010-2011 Geometer Plus - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - */ - -package org.geometerplus.android.fbreader.network; - -import android.app.Activity; -import android.app.AlertDialog; -import android.app.Dialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; -import android.widget.TextView; - -import org.geometerplus.zlibrary.core.resources.ZLResource; -import org.geometerplus.zlibrary.core.network.ZLNetworkException; - -import org.geometerplus.zlibrary.ui.android.R; - -import org.geometerplus.fbreader.network.INetworkLink; -import org.geometerplus.fbreader.network.NetworkLibrary; -import org.geometerplus.fbreader.network.authentication.NetworkAuthenticationManager; - -import org.geometerplus.android.util.UIUtil; - -class AuthenticationDialog { - private static AuthenticationDialog ourDialog; - - public static AuthenticationDialog getDialog() { - if (ourDialog == null) { - ourDialog = new AuthenticationDialog(); - } - return ourDialog; - } - - private class DialogHandler extends Handler { - @Override - public void handleMessage(Message message) { - if (!NetworkView.Instance().isInitialized()) { - return; - } - final NetworkLibrary library = NetworkLibrary.Instance(); - library.invalidateVisibility(); - library.synchronize(); - NetworkView.Instance().fireModelChanged(); - if (message.what == -1) { - myErrorMessage = (String)message.obj; - myActivity.showDialog(0); - } else if (message.what == 1) { - if (myOnSuccessRunnable != null) { - myOnSuccessRunnable.run(); - } - } - } - }; - - - private final ZLResource myResource = - ZLResource.resource("dialog").getResource("AuthenticationDialog"); - - private INetworkLink myLink; - private String myErrorMessage; - private Runnable myOnSuccessRunnable; - private Activity myActivity; - - private final DialogHandler myHandler = new DialogHandler(); - - public static void show(Activity activity, INetworkLink link, Runnable onSuccessRunnable) { - final NetworkAuthenticationManager mgr = link.authenticationManager(); - - final Intent intent = new Intent(activity, AuthenticationActivity.class); - intent.putExtra(AuthenticationActivity.USERNAME_KEY, mgr.UserNameOption.getValue()); - if (Util.isRegistrationSupported(activity, link)) { - intent.putExtra(AuthenticationActivity.SHOW_SIGNUP_LINK_KEY, true); - } - //getDialog().showInternal(activity, link, onSuccessRunnable); - activity.startActivityForResult(intent, NetworkBaseActivity.CUSTOM_AUTHENTICATION_CODE); - } - - private void showInternal(Activity activity, INetworkLink link, Runnable onSuccessRunnable) { - myLink = link; - myErrorMessage = null; - myOnSuccessRunnable = onSuccessRunnable; - activity.showDialog(0); - } - - private void sendSuccess() { - myHandler.sendMessage(myHandler.obtainMessage(1, null)); - } - - private void sendCancel() { - myHandler.sendMessage(myHandler.obtainMessage(0, null)); - } - - private void sendError(String message) { - myHandler.sendMessage(myHandler.obtainMessage(-1, message)); - } - - private View createLayout() { - final View layout = myActivity.getLayoutInflater().inflate(R.layout.network_authentication_dialog, null); - - ((TextView)layout.findViewById(R.id.network_authentication_login_text)).setText(myResource.getResource("login").getValue()); - ((TextView)layout.findViewById(R.id.network_authentication_password_text)).setText(myResource.getResource("password").getValue()); - - final TextView registerText = (TextView)layout.findViewById(R.id.network_authentication_register); - registerText.setText(myResource.getResource("register").getValue()); - registerText.setOnClickListener(new View.OnClickListener() { - public void onClick(View view) { - if (Util.isRegistrationSupported(myActivity, myLink)) { - myActivity.dismissDialog(0); - Util.runRegistrationDialog(myActivity, myLink); - } - } - }); - return layout; - } - - private void onPositive(DialogInterface dialog) { - AlertDialog alert = (AlertDialog)dialog; - final String login = ((TextView)alert.findViewById(R.id.network_authentication_login)).getText().toString().trim(); - final String password = ((TextView)alert.findViewById(R.id.network_authentication_password)).getText().toString(); - - if (login.length() == 0) { - final String err = myResource.getResource("loginIsEmpty").getValue(); - sendError(err); - return; - } - - final NetworkAuthenticationManager mgr = myLink.authenticationManager(); - mgr.UserNameOption.setValue(login); - final Runnable runnable = new Runnable() { - public void run() { - try { - mgr.authorise(password); - if (mgr.needsInitialization()) { - mgr.initialize(); - } - } catch (ZLNetworkException e) { - mgr.logOut(); - sendError(e.getMessage()); - return; - } - sendSuccess(); - } - }; - UIUtil.wait("authentication", runnable, myActivity); - } - - private void onNegative(DialogInterface dialog) { - final NetworkAuthenticationManager mgr = myLink.authenticationManager(); - final Runnable runnable = new Runnable() { - public void run() { - if (mgr.mayBeAuthorised(false)) { - mgr.logOut(); - sendCancel(); - } - } - }; - UIUtil.wait("signOut", runnable, myActivity); - } - - public final Dialog createDialog(final Activity activity) { - myActivity = activity; - final DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - if (which == DialogInterface.BUTTON_POSITIVE) { - onPositive(dialog); - } else { - onNegative(dialog); - } - } - }; - - final View layout = createLayout(); - final ZLResource buttonResource = ZLResource.resource("dialog").getResource("button"); - return new AlertDialog.Builder(activity) - .setView(layout) - .setTitle(myResource.getResource("title").getValue()) - .setPositiveButton(buttonResource.getResource("ok").getValue(), listener) - .setNegativeButton(buttonResource.getResource("cancel").getValue(), listener) - .setOnCancelListener(new DialogInterface.OnCancelListener() { - public void onCancel(DialogInterface dialog) { - onNegative(dialog); - } - }) - .create(); - } - - public final void prepareDialog(final Activity activity, Dialog dialog) { - myActivity = activity; - - final NetworkAuthenticationManager mgr = myLink.authenticationManager(); - - ((TextView)dialog.findViewById(R.id.network_authentication_login)).setText(mgr.UserNameOption.getValue()); - ((TextView)dialog.findViewById(R.id.network_authentication_password)).setText(""); - - final TextView error = (TextView)dialog.findViewById(R.id.network_authentication_error); - if (myErrorMessage == null) { - error.setVisibility(View.GONE); - error.setText(""); - } else { - error.setVisibility(View.VISIBLE); - error.setText(myErrorMessage); - } - - dialog.findViewById(R.id.network_authentication_register).setVisibility(Util.isRegistrationSupported(myActivity, myLink) ? View.VISIBLE : View.GONE); - - View dlgView = dialog.findViewById(R.id.network_authentication_dialog); - dlgView.invalidate(); - dlgView.requestLayout(); - } -} diff --git a/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java b/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java index 4e847e66e..4a53eccce 100644 --- a/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java +++ b/src/org/geometerplus/android/fbreader/network/NetworkBookActions.java @@ -456,6 +456,11 @@ class NetworkBookActions extends NetworkTreeActions { .create().show(); } }; + final Runnable buyOnUiRunnable = new Runnable() { + public void run() { + activity.runOnUiThread(buyRunnable); + } + }; try { if (mgr.isAuthorised(true)) { @@ -464,7 +469,7 @@ class NetworkBookActions extends NetworkTreeActions { } } catch (ZLNetworkException e) { } - AuthenticationDialog.show(activity, book.Link, buyRunnable); + Util.runAuthenticationDialog(activity, book.Link, null, buyOnUiRunnable); } private static void doBuyInBrowser(Activity activity, final NetworkBookItem book) { diff --git a/src/org/geometerplus/android/fbreader/network/NetworkBookInfoActivity.java b/src/org/geometerplus/android/fbreader/network/NetworkBookInfoActivity.java index 272921036..13addfd63 100644 --- a/src/org/geometerplus/android/fbreader/network/NetworkBookInfoActivity.java +++ b/src/org/geometerplus/android/fbreader/network/NetworkBookInfoActivity.java @@ -347,28 +347,22 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve } public void onModelChanged() { - updateView(); + runOnUiThread(new Runnable() { + public void run() { + updateView(); + } + }); } @Override - protected Dialog onCreateDialog(int id) { - if (!NetworkView.Instance().isInitialized()) { - return null; - } - final AuthenticationDialog dlg = AuthenticationDialog.getDialog(); - if (dlg != null) { - return dlg.createDialog(this); - } - return null; - } - - @Override - protected void onPrepareDialog(int id, Dialog dialog) { - super.onPrepareDialog(id, dialog); - - final AuthenticationDialog dlg = AuthenticationDialog.getDialog(); - if (dlg != null) { - dlg.prepareDialog(this, dialog); + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + switch (requestCode) { + case NetworkBaseActivity.CUSTOM_AUTHENTICATION_CODE: + Util.processCustomAuthentication(this, myBook.Link, resultCode, data); + break; + case NetworkBaseActivity.SIGNUP_CODE: + Util.processSignup(myBook.Link, resultCode, data); + break; } } } diff --git a/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java b/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java index e37d0feff..dcfb31726 100644 --- a/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java +++ b/src/org/geometerplus/android/fbreader/network/NetworkCatalogActions.java @@ -213,7 +213,7 @@ class NetworkCatalogActions extends NetworkTreeActions { case B3_TRUE: return false; case B3_UNDEFINED: - AuthenticationDialog.show(activity, item.Link, new Runnable() { + Util.runAuthenticationDialog(activity, item.Link, null, new Runnable() { public void run() { if (item.getVisibility() != ZLBoolean3.B3_TRUE) { return; @@ -258,7 +258,7 @@ class NetworkCatalogActions extends NetworkTreeActions { doReloadCatalog(activity, catalogTree); return true; case SIGNIN_ITEM_ID: - AuthenticationDialog.show(activity, item.Link, null); + Util.runAuthenticationDialog(activity, item.Link, null, null); return true; case SIGNUP_ITEM_ID: Util.runRegistrationDialog(activity, item.Link); diff --git a/src/org/geometerplus/android/fbreader/network/NetworkCatalogActivity.java b/src/org/geometerplus/android/fbreader/network/NetworkCatalogActivity.java index 128bcdcc0..f9ef3186d 100644 --- a/src/org/geometerplus/android/fbreader/network/NetworkCatalogActivity.java +++ b/src/org/geometerplus/android/fbreader/network/NetworkCatalogActivity.java @@ -32,15 +32,12 @@ import org.apache.http.auth.UsernamePasswordCredentials; import org.geometerplus.zlibrary.core.network.ZLNetworkException; import org.geometerplus.zlibrary.core.network.ZLNetworkManager; import org.geometerplus.zlibrary.core.options.ZLStringOption; -import org.geometerplus.zlibrary.core.resources.ZLResource; import org.geometerplus.fbreader.network.*; import org.geometerplus.fbreader.network.authentication.NetworkAuthenticationManager; import org.geometerplus.fbreader.network.tree.*; import org.geometerplus.fbreader.tree.FBTree; -import org.geometerplus.android.util.UIUtil; - public class NetworkCatalogActivity extends NetworkBaseActivity implements UserRegistrationConstants { private NetworkTree myTree; private volatile boolean myInProgress; @@ -144,7 +141,7 @@ public class NetworkCatalogActivity extends NetworkBaseActivity implements UserR switch (requestCode) { case BASIC_AUTHENTICATION_CODE: synchronized (myCredentialsCreator) { - if (resultCode == AuthenticationActivity.OK_RESULT_CODE && data != null) { + if (resultCode == AuthenticationActivity.RESULT_OK && data != null) { myCredentialsCreator.myUsername = data.getStringExtra(AuthenticationActivity.USERNAME_KEY); myCredentialsCreator.myPassword = @@ -154,103 +151,16 @@ public class NetworkCatalogActivity extends NetworkBaseActivity implements UserR } break; case CUSTOM_AUTHENTICATION_CODE: - processCustomAuthentication( + Util.processCustomAuthentication( this, ((NetworkCatalogTree)myTree).Item.Link, resultCode, data ); break; case SIGNUP_CODE: - processSignup(((NetworkCatalogTree)myTree).Item.Link, resultCode, data); + Util.processSignup(((NetworkCatalogTree)myTree).Item.Link, resultCode, data); break; } } - static void runAuthenticationDialog(Activity activity, INetworkLink link, String error) { - final NetworkAuthenticationManager mgr = link.authenticationManager(); - - final Intent intent = new Intent(activity, AuthenticationActivity.class); - intent.putExtra(AuthenticationActivity.USERNAME_KEY, mgr.UserNameOption.getValue()); - if (Util.isRegistrationSupported(activity, link)) { - intent.putExtra(AuthenticationActivity.SHOW_SIGNUP_LINK_KEY, true); - } - intent.putExtra(AuthenticationActivity.ERROR_KEY, error); - activity.startActivityForResult(intent, NetworkBaseActivity.CUSTOM_AUTHENTICATION_CODE); - } - - static void processCustomAuthentication(final Activity activity, final INetworkLink link, int resultCode, Intent data) { - switch (resultCode) { - case AuthenticationActivity.CANCEL_RESULT_CODE: - UIUtil.wait( - "signOut", - new Runnable() { - public void run() { - final NetworkAuthenticationManager mgr = - link.authenticationManager(); - if (mgr.mayBeAuthorised(false)) { - mgr.logOut(); - } - final NetworkLibrary library = NetworkLibrary.Instance(); - library.invalidateVisibility(); - library.synchronize(); - NetworkView.Instance().fireModelChanged(); - } - }, - activity - ); - break; - case AuthenticationActivity.OK_RESULT_CODE: - { - final ZLResource resource = - ZLResource.resource("dialog").getResource("AuthenticationDialog"); - final String username = - data.getStringExtra(AuthenticationActivity.USERNAME_KEY); - final String password = - data.getStringExtra(AuthenticationActivity.PASSWORD_KEY); - if (username.length() == 0) { - runAuthenticationDialog( - activity, link, - resource.getResource("loginIsEmpty").getValue() - ); - } - final NetworkAuthenticationManager mgr = link.authenticationManager(); - mgr.UserNameOption.setValue(username); - final Runnable runnable = new Runnable() { - public void run() { - try { - mgr.authorise(password); - if (mgr.needsInitialization()) { - mgr.initialize(); - } - } catch (ZLNetworkException e) { - mgr.logOut(); - runAuthenticationDialog(activity, link, e.getMessage()); - return; - } - final NetworkLibrary library = NetworkLibrary.Instance(); - library.invalidateVisibility(); - library.synchronize(); - NetworkView.Instance().fireModelChanged(); - } - }; - UIUtil.wait("authentication", runnable, activity); - break; - } - case AuthenticationActivity.SIGNUP_RESULT_CODE: - Util.runRegistrationDialog(activity, link); - break; - } - } - - - static void processSignup(INetworkLink link, int resultCode, Intent data) { - if (resultCode == RESULT_OK && data != null) { - try { - Util.runAfterRegistration(link.authenticationManager(), data); - } catch (ZLNetworkException e) { - // TODO: show an error message - } - } - } - private final void setupTitle() { String title = null; final NetworkView networkView = NetworkView.Instance(); diff --git a/src/org/geometerplus/android/fbreader/network/TopupActions.java b/src/org/geometerplus/android/fbreader/network/TopupActions.java index b6cb41e5c..f38ef3c05 100644 --- a/src/org/geometerplus/android/fbreader/network/TopupActions.java +++ b/src/org/geometerplus/android/fbreader/network/TopupActions.java @@ -159,10 +159,10 @@ class TopupActions extends NetworkTreeActions { if (mgr.mayBeAuthorised(false)) { action.run(); } else { - AuthenticationDialog.show(activity, link, new Runnable() { + Util.runAuthenticationDialog(activity, link, null, new Runnable() { public void run() { if (mgr.mayBeAuthorised(false)) { - action.run(); + activity.runOnUiThread(action); } } }); diff --git a/src/org/geometerplus/android/fbreader/network/Util.java b/src/org/geometerplus/android/fbreader/network/Util.java index 327867e9e..901ddcf67 100644 --- a/src/org/geometerplus/android/fbreader/network/Util.java +++ b/src/org/geometerplus/android/fbreader/network/Util.java @@ -19,7 +19,7 @@ package org.geometerplus.android.fbreader.network; -import java.util.Map; +import java.util.*; import android.app.Activity; import android.content.ActivityNotFoundException; @@ -28,12 +28,14 @@ import android.content.Context; import android.net.Uri; import org.geometerplus.zlibrary.core.network.ZLNetworkException; +import org.geometerplus.zlibrary.core.resources.ZLResource; import org.geometerplus.fbreader.network.*; import org.geometerplus.fbreader.network.authentication.NetworkAuthenticationManager; import org.geometerplus.fbreader.network.tree.NetworkBookTree; import org.geometerplus.fbreader.network.urlInfo.UrlInfo; +import org.geometerplus.android.util.UIUtil; import org.geometerplus.android.util.PackageUtil; abstract class Util implements UserRegistrationConstants { @@ -74,16 +76,109 @@ abstract class Util implements UserRegistrationConstants { } } - static void runAfterRegistration(NetworkAuthenticationManager mgr, Intent data) throws ZLNetworkException { - final String userName = data.getStringExtra(USER_REGISTRATION_USERNAME); - final String litresSid = data.getStringExtra(USER_REGISTRATION_LITRES_SID); - mgr.initUser(userName, litresSid); - if (userName.length() > 0 && litresSid.length() > 0) { + private static final Map myAfterRegisrationMap = + new HashMap(); + + static void runAuthenticationDialog(Activity activity, INetworkLink link, String error, Runnable onSuccess) { + final NetworkAuthenticationManager mgr = link.authenticationManager(); + + final Intent intent = new Intent(activity, AuthenticationActivity.class); + intent.putExtra(AuthenticationActivity.USERNAME_KEY, mgr.UserNameOption.getValue()); + if (isRegistrationSupported(activity, link)) { + intent.putExtra(AuthenticationActivity.SHOW_SIGNUP_LINK_KEY, true); + } + intent.putExtra(AuthenticationActivity.ERROR_KEY, error); + if (onSuccess != null) { + myAfterRegisrationMap.put(activity, onSuccess); + } + activity.startActivityForResult(intent, NetworkBaseActivity.CUSTOM_AUTHENTICATION_CODE); + } + + static void processCustomAuthentication(final Activity activity, final INetworkLink link, int resultCode, Intent data) { + final Runnable onSuccess = myAfterRegisrationMap.get(activity); + myAfterRegisrationMap.remove(activity); + switch (resultCode) { + case AuthenticationActivity.RESULT_CANCELED: + UIUtil.wait( + "signOut", + new Runnable() { + public void run() { + final NetworkAuthenticationManager mgr = + link.authenticationManager(); + if (mgr.mayBeAuthorised(false)) { + mgr.logOut(); + } + final NetworkLibrary library = NetworkLibrary.Instance(); + library.invalidateVisibility(); + library.synchronize(); + NetworkView.Instance().fireModelChanged(); + } + }, + activity + ); + break; + case AuthenticationActivity.RESULT_OK: + { + final ZLResource resource = + ZLResource.resource("dialog").getResource("AuthenticationDialog"); + final String username = + data.getStringExtra(AuthenticationActivity.USERNAME_KEY); + final String password = + data.getStringExtra(AuthenticationActivity.PASSWORD_KEY); + if (username.length() == 0) { + runAuthenticationDialog( + activity, link, + resource.getResource("loginIsEmpty").getValue(), + onSuccess + ); + } + final NetworkAuthenticationManager mgr = link.authenticationManager(); + mgr.UserNameOption.setValue(username); + final Runnable runnable = new Runnable() { + public void run() { + try { + mgr.authorise(password); + if (mgr.needsInitialization()) { + mgr.initialize(); + } + onSuccess.run(); + } catch (ZLNetworkException e) { + mgr.logOut(); + runAuthenticationDialog(activity, link, e.getMessage(), onSuccess); + return; + } + final NetworkLibrary library = NetworkLibrary.Instance(); + library.invalidateVisibility(); + library.synchronize(); + NetworkView.Instance().fireModelChanged(); + } + }; + UIUtil.wait("authentication", runnable, activity); + break; + } + case AuthenticationActivity.RESULT_SIGNUP: + Util.runRegistrationDialog(activity, link); + break; + } + } + + static void processSignup(INetworkLink link, int resultCode, Intent data) { + if (resultCode == Activity.RESULT_OK && data != null) { try { - mgr.initialize(); + final NetworkAuthenticationManager mgr = link.authenticationManager(); + final String userName = data.getStringExtra(USER_REGISTRATION_USERNAME); + final String litresSid = data.getStringExtra(USER_REGISTRATION_LITRES_SID); + mgr.initUser(userName, litresSid); + if (userName.length() > 0 && litresSid.length() > 0) { + try { + mgr.initialize(); + } catch (ZLNetworkException e) { + mgr.logOut(); + throw e; + } + } } catch (ZLNetworkException e) { - mgr.logOut(); - throw e; + // TODO: show an error message } } }