Skip to content
This repository was archived by the owner on Jul 25, 2024. It is now read-only.

Commit d3aa8a8

Browse files
committed
Save realmName, serverUrl in asynLogin
1 parent 6dfdd22 commit d3aa8a8

File tree

4 files changed

+47
-13
lines changed

4 files changed

+47
-13
lines changed

app/src/main/java/com/zulip/android/ZulipApp.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public class ZulipApp extends Application {
3939
public static final String EMAIL = "email";
4040
private static ZulipApp instance;
4141
private static final String USER_AGENT = "ZulipMobile";
42-
private static final String DEFAULT_SERVER_URL = "https://api.zulip.com/";
42+
public static final String DEFAULT_SERVER_URL = "https://api.zulip.com/";
4343
private Person you;
4444
private SharedPreferences settings;
4545
private String api_key;

app/src/main/java/com/zulip/android/activities/LoginActivity.java

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.net.Uri;
77
import android.os.Bundle;
88
import android.support.v4.app.FragmentActivity;
9+
import android.text.TextUtils;
910
import android.util.Log;
1011
import android.util.Patterns;
1112
import android.view.View;
@@ -30,13 +31,16 @@
3031
import org.json.JSONException;
3132
import org.json.JSONObject;
3233

34+
import java.net.URI;
35+
import java.net.URISyntaxException;
3336
import java.util.List;
3437

3538
public class LoginActivity extends FragmentActivity implements View.OnClickListener,
3639
GoogleApiClient.OnConnectionFailedListener, CompoundButton.OnCheckedChangeListener {
3740
private static final int REQUEST_CODE_RESOLVE_ERR = 9000;
3841
private static final int REQUEST_CODE_SIGN_IN = 9001;
3942

43+
private boolean startedFromAddRealm = false;
4044
private ProgressDialog connectionProgressDialog;
4145
private GoogleApiClient mGoogleApiClient;
4246
private EditText mServerEditText;
@@ -45,6 +49,7 @@ public class LoginActivity extends FragmentActivity implements View.OnClickListe
4549
private View mGoogleSignInButton;
4650
private CheckBox mUseZulipCheckbox;
4751
private EditText realmNameET;
52+
String serverURL;
4853

4954
@Override
5055
protected void onCreate(Bundle savedInstanceState) {
@@ -96,10 +101,14 @@ protected void onStop() {
96101
super.onStop();
97102
}
98103

99-
private void saveServerURL() {
104+
private String getServerURL() {
105+
if (ZulipApp.get().serverStringSet.contains(realmNameET.getText().toString())) {
106+
Toast.makeText(LoginActivity.this, R.string.realm_exists, Toast.LENGTH_SHORT).show();
107+
return null;
108+
}
109+
100110
if (mUseZulipCheckbox.isChecked()) {
101-
((ZulipApp) getApplication()).useDefaultServerURL();
102-
return;
111+
return ZulipApp.DEFAULT_SERVER_URL;
103112
}
104113

105114
String serverURL = mServerEditText.getText().toString();
@@ -125,8 +134,8 @@ private void saveServerURL() {
125134
serverUri = serverUri.buildUpon().appendPath("api").build();
126135
}
127136

128-
((ZulipApp) getApplication()).setServerURL(serverUri.toString());
129137
Toast.makeText(this, getString(R.string.logging_into_server, serverUri.toString()), Toast.LENGTH_SHORT).show();
138+
return serverUri.toString();
130139
}
131140

132141

@@ -142,7 +151,7 @@ private void handleSignInResult(GoogleSignInResult result) {
142151
return;
143152
}
144153

145-
final AsyncLogin loginTask = new AsyncLogin(LoginActivity.this, "google-oauth2-token", account.getIdToken());
154+
final AsyncLogin loginTask = new AsyncLogin(LoginActivity.this, "google-oauth2-token", account.getIdToken(), getRealmName(), startedFromAddRealm, serverURL);
146155
loginTask.setCallback(new AsyncTaskCompleteListener() {
147156
@Override
148157
public void onTaskComplete(String result, JSONObject object) {
@@ -170,6 +179,20 @@ public void onTaskFailure(String result) {
170179
}
171180
}
172181

182+
private String getRealmName() {
183+
if (TextUtils.isEmpty(realmNameET.getText())) {
184+
String server = ZulipApp.get().getServerURI();
185+
URI uri = null;
186+
try {
187+
uri = new URI(server);
188+
} catch (URISyntaxException e) {
189+
return server;
190+
}
191+
return uri.getHost();
192+
}
193+
return realmNameET.getText().toString();
194+
}
195+
173196
protected void openLegal() {
174197
Intent i = new Intent(this, LegalActivity.class);
175198
startActivityForResult(i, 0);
@@ -234,16 +257,20 @@ public void onClick(View v) {
234257
switch (v.getId()) {
235258
case R.id.google_sign_in_button:
236259
connectionProgressDialog.show();
237-
saveServerURL();
260+
serverURL = getServerURL();
261+
if (serverURL == null) return;
238262
setupGoogleSignIn();
239263
break;
240264
case R.id.zulip_login:
241265
if (!isInputValid()) return;
242-
saveServerURL();
266+
serverURL = getServerURL();
267+
if (serverURL == null) return;
243268
connectionProgressDialog.show();
244269

245270
AsyncLogin alog = new AsyncLogin(LoginActivity.this,
246-
mUserName.getText().toString(), mPassword.getText().toString());
271+
mUserName.getText().toString(), mPassword.getText().toString(),
272+
getRealmName(), startedFromAddRealm, serverURL);
273+
247274
// Remove the CPD when done
248275
alog.setCallback(new AsyncTaskCompleteListener() {
249276
@Override

app/src/main/java/com/zulip/android/networking/AsyncLogin.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,27 @@ public class AsyncLogin extends ZulipAsyncPushTask {
1616
public static final String UNREGISTERED = "unregistered";
1717
public static final String DISABLED = "disabled";
1818

19+
boolean startedFromAddRealm = false;
1920
LoginActivity context;
2021
boolean userDefinitelyInvalid = false;
22+
private String realmName;
23+
private String username;
24+
private String serverURL;
2125

22-
public AsyncLogin(LoginActivity loginActivity, String username, String password) {
26+
public AsyncLogin(LoginActivity loginActivity, String username, String password, String realmName, boolean startedFromAddRealm, String serverURL) {
2327
super((ZulipApp) loginActivity.getApplication());
28+
this.startedFromAddRealm = startedFromAddRealm;
2429
context = loginActivity;
25-
if (username.contains("@")) {
30+
this.username = username;
31+
if (username.contains("@") && !startedFromAddRealm) {
2632
// @-less usernames are used as indicating special cases, for
2733
// example in OAuth2 authentication
2834
this.app.setEmail(username);
2935
}
3036
this.setProperty("username", username);
3137
this.setProperty("password", password);
38+
this.realmName = realmName;
39+
this.serverURL = serverURL;
3240
}
3341

3442
public final void execute() {

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@
7171
<string name="please_wait">Please wait</string>
7272
<string name="realm_add">Add Realm</string>
7373
<string name="realm_name">Name of a realm (Optional)</string>
74-
75-
74+
<string name="realm_exists">Realm Name already exists, please change.</string>
7675

7776
</resources>

0 commit comments

Comments
 (0)