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

Commit eb244f7

Browse files
committed
Save realmName, serverUrl in asynLogin
1 parent c7e510d commit eb244f7

File tree

6 files changed

+65
-16
lines changed

6 files changed

+65
-16
lines changed

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ protected void onCreate(Bundle savedInstanceState) {
3333
super.onCreate(savedInstanceState);
3434
setContentView(R.layout.activity_dev_auth);
3535
String json = getIntent().getStringExtra(AsyncDevGetEmails.EMAIL_JSON);
36+
final String realmName = getIntent().getStringExtra(AsyncDevGetEmails.REALM_NAME_JSON);
37+
final String serverURL = getIntent().getStringExtra(AsyncDevGetEmails.SERVER_URL_JSON);
38+
final boolean startedFromAddRealm = getIntent().getBooleanExtra(AsyncDevGetEmails.ADD_REALM_BOOLEAN_JSON, false);
3639
recyclerView = (RecyclerView) findViewById(R.id.devAuthRecyclerView);
3740
List<String> emails = new ArrayList<>();
3841
int directAdminSize = 1;
@@ -58,7 +61,7 @@ protected void onCreate(Bundle savedInstanceState) {
5861
authEmailAdapter.setOnItemClickListener(new AuthClickListener() {
5962
@Override
6063
public void onItemClick(String email) {
61-
AsyncLogin asyncLogin = new AsyncLogin(DevAuthActivity.this, email, null, true);
64+
AsyncLogin asyncLogin = new AsyncLogin(DevAuthActivity.this, email, null, realmName, startedFromAddRealm, serverURL, true);
6265
asyncLogin.execute();
6366
connectionProgressDialog.show();
6467
}

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

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.support.v7.app.AlertDialog;
1010
import android.support.v7.app.AppCompatActivity;
1111
import android.support.v7.widget.Toolbar;
12+
import android.text.TextUtils;
1213
import android.util.Log;
1314
import android.util.Patterns;
1415
import android.view.View;
@@ -34,6 +35,8 @@
3435
import org.json.JSONException;
3536
import org.json.JSONObject;
3637

38+
import java.net.URI;
39+
import java.net.URISyntaxException;
3740
import java.util.List;
3841

3942
/**
@@ -46,14 +49,15 @@ public class LoginActivity extends AppCompatActivity implements View.OnClickList
4649
private static final int REQUEST_CODE_RESOLVE_ERR = 9000;
4750
private static final int REQUEST_CODE_SIGN_IN = 9001;
4851

52+
private boolean startedFromAddRealm = false;
4953
private ProgressDialog connectionProgressDialog;
5054
private GoogleApiClient mGoogleApiClient;
5155
private EditText mServerEditText;
5256
private EditText mUserName;
5357
private EditText mPassword;
5458
private EditText serverIn;
5559
private EditText realmNameET;
56-
60+
String serverURL;
5761
private View mGoogleSignInButton;
5862

5963
@Override
@@ -157,6 +161,7 @@ private void checkForError() {
157161
}
158162
}
159163
}
164+
160165

161166
private void showBackends(String httpScheme, String serverURL) {
162167
Uri serverUri = Uri.parse(serverURL);
@@ -171,8 +176,8 @@ private void showBackends(String httpScheme, String serverURL) {
171176
serverIn.setText(serverUri.toString());
172177
mServerEditText.setText(serverUri.toString());
173178
mServerEditText.setEnabled(false);
174-
((ZulipApp) getApplication()).setServerURL(serverUri.toString());
175-
AsyncGetBackends asyncGetBackends = new AsyncGetBackends(ZulipApp.get());
179+
serverURL = serverUri.toString();
180+
AsyncGetBackends asyncGetBackends = new AsyncGetBackends(ZulipApp.get(), serverURL);
176181
asyncGetBackends.setCallback(new AsyncTaskCompleteListener() {
177182
@Override
178183
public void onTaskComplete(String result, JSONObject jsonObject) {
@@ -244,7 +249,7 @@ private void handleSignInResult(GoogleSignInResult result) {
244249
return;
245250
}
246251

247-
final AsyncLogin loginTask = new AsyncLogin(LoginActivity.this, "google-oauth2-token", account.getIdToken(), false);
252+
final AsyncLogin loginTask = new AsyncLogin(LoginActivity.this, "google-oauth2-token", account.getIdToken(), getRealmName(), startedFromAddRealm, serverURL, false);
248253
loginTask.setCallback(new AsyncTaskCompleteListener() {
249254
@Override
250255
public void onTaskComplete(String result, JSONObject object) {
@@ -272,7 +277,21 @@ public void onTaskFailure(String result) {
272277
}
273278
}
274279

275-
private void openLegal() {
280+
private String getRealmName() {
281+
if (TextUtils.isEmpty(realmNameET.getText())) {
282+
String server = serverURL;
283+
URI uri = null;
284+
try {
285+
uri = new URI(server);
286+
} catch (URISyntaxException e) {
287+
return server;
288+
}
289+
return uri.getHost();
290+
}
291+
return realmNameET.getText().toString();
292+
}
293+
294+
protected void openLegal() {
276295
Intent i = new Intent(this, LegalActivity.class);
277296
startActivityForResult(i, 0);
278297
}
@@ -343,10 +362,14 @@ public void onClick(View v) {
343362
if (!isInputValid()) {
344363
return;
345364
}
365+
if (!isInputValid()) return;
366+
if (serverURL == null) return;
346367
connectionProgressDialog.show();
347368

348369
AsyncLogin alog = new AsyncLogin(LoginActivity.this,
349-
mUserName.getText().toString(), mPassword.getText().toString(), false);
370+
mUserName.getText().toString(), mPassword.getText().toString(),
371+
getRealmName(), startedFromAddRealm, serverURL, false);
372+
350373
// Remove the CPD when done
351374
alog.setCallback(new AsyncTaskCompleteListener() {
352375
@Override
@@ -368,7 +391,7 @@ public void onTaskFailure(String result) {
368391
case R.id.local_server_button:
369392
if (!isInputValidForDevAuth()) return;
370393
connectionProgressDialog.show();
371-
AsyncDevGetEmails asyncDevGetEmails = new AsyncDevGetEmails(LoginActivity.this);
394+
AsyncDevGetEmails asyncDevGetEmails = new AsyncDevGetEmails(LoginActivity.this, serverURL, getRealmName(), startedFromAddRealm);
372395
asyncDevGetEmails.setCallback(new AsyncTaskCompleteListener() {
373396
@Override
374397
public void onTaskComplete(String result, JSONObject jsonObject) {

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,20 @@
2020
public class AsyncDevGetEmails extends ZulipAsyncPushTask {
2121
private static final String DISABLED = "dev_disabled";
2222
private Context context;
23+
public static final String SERVER_URL_JSON = "server_url";
24+
public static final String REALM_NAME_JSON = "realm_json";
25+
public static final String ADD_REALM_BOOLEAN_JSON = "add_realm_bool_json";
2326
public final static String EMAIL_JSON = "emails_json";
27+
private String serverURL;
28+
private String realmName;
29+
private boolean startedFromAddRealm;
2430

25-
public AsyncDevGetEmails(LoginActivity loginActivity) {
31+
public AsyncDevGetEmails(LoginActivity loginActivity, String serverURL, String realmName, boolean startedFromAddRealm) {
2632
super((ZulipApp) loginActivity.getApplication());
2733
context = loginActivity;
34+
this.serverURL = serverURL;
35+
this.realmName = realmName;
36+
this.startedFromAddRealm = startedFromAddRealm;
2837
}
2938

3039
public final void execute() {
@@ -38,6 +47,9 @@ protected void onPostExecute(String result) {
3847
if (obj.getString("result").equals("success")) {
3948
Intent intent = new Intent(context, DevAuthActivity.class);
4049
intent.putExtra(EMAIL_JSON, result);
50+
intent.putExtra(REALM_NAME_JSON, realmName);
51+
intent.putExtra(SERVER_URL_JSON, serverURL);
52+
intent.putExtra(ADD_REALM_BOOLEAN_JSON, startedFromAddRealm);
4153
context.startActivity(intent);
4254
}
4355
} catch (JSONException e) {

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@
88
*/
99
public class AsyncGetBackends extends ZulipAsyncPushTask {
1010

11-
public AsyncGetBackends(ZulipApp app) {
11+
private String serverURL;
12+
13+
public AsyncGetBackends(ZulipApp app, String url) {
1214
super(app);
15+
this.serverURL = url;
1316
}
1417

1518
//Json Format - {"msg":"","password":false,"google":false,"result":"success","dev":true}

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,24 @@ public class AsyncLogin extends ZulipAsyncPushTask {
2222

2323
private Activity activity;
2424
private boolean devServer = true; //If this is a DevAuthBackend server!
25-
private LoginActivity context;
25+
private Activity context;
2626
private boolean userDefinitelyInvalid = false;
27+
boolean startedFromAddRealm = false;
28+
private String realmName;
29+
private String username;
30+
private String serverURL;
2731

2832
/**
2933
* @param activity Reference to the activity from this is called mainly {@link LoginActivity} and {@link DevAuthActivity}
3034
* @param username Stores the E-Mail of the user or a string "google-oauth2-token" if this is for Google Authentication
3135
* @param password Stores the password if EmailBackend, ID Token if GoogleMobileOauth2Backend, and blank if DevAuthBackend
3236
*/
33-
public AsyncLogin(Activity activity, String username, String password, boolean devServer) {
37+
public AsyncLogin(Activity loginActivity, String username, String password, String realmName, boolean startedFromAddRealm, String serverURL, boolean devServer) {
3438
super(ZulipApp.get());
35-
this.activity = activity;
36-
if (username.contains("@")) {
39+
this.startedFromAddRealm = startedFromAddRealm;
40+
context = loginActivity;
41+
this.username = username;
42+
if (username.contains("@") && !startedFromAddRealm) {
3743
// @-less usernames are used as indicating special cases, for
3844
// example in OAuth2 authentication
3945
this.app.setEmail(username);
@@ -43,6 +49,9 @@ public AsyncLogin(Activity activity, String username, String password, boolean d
4349
this.setProperty("password", password);
4450
this.devServer = false;
4551
}
52+
this.setProperty("password", password);
53+
this.realmName = realmName;
54+
this.serverURL = serverURL;
4655
}
4756

4857
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
@@ -81,7 +81,6 @@
8181
<string name="please_wait">Please wait</string>
8282
<string name="realm_add">Add Realm</string>
8383
<string name="realm_name">Name of a realm (Optional)</string>
84-
85-
84+
<string name="realm_exists">Realm Name already exists, please change.</string>
8685

8786
</resources>

0 commit comments

Comments
 (0)