6
6
import android .net .Uri ;
7
7
import android .os .Bundle ;
8
8
import android .support .v4 .app .FragmentActivity ;
9
+ import android .text .TextUtils ;
9
10
import android .util .Log ;
10
11
import android .util .Patterns ;
11
12
import android .view .View ;
30
31
import org .json .JSONException ;
31
32
import org .json .JSONObject ;
32
33
34
+ import java .net .URI ;
35
+ import java .net .URISyntaxException ;
33
36
import java .util .List ;
34
37
35
38
public class LoginActivity extends FragmentActivity implements View .OnClickListener ,
36
39
GoogleApiClient .OnConnectionFailedListener , CompoundButton .OnCheckedChangeListener {
37
40
private static final int REQUEST_CODE_RESOLVE_ERR = 9000 ;
38
41
private static final int REQUEST_CODE_SIGN_IN = 9001 ;
39
42
43
+ private boolean startedFromAddRealm = false ;
40
44
private ProgressDialog connectionProgressDialog ;
41
45
private GoogleApiClient mGoogleApiClient ;
42
46
private EditText mServerEditText ;
@@ -45,6 +49,7 @@ public class LoginActivity extends FragmentActivity implements View.OnClickListe
45
49
private View mGoogleSignInButton ;
46
50
private CheckBox mUseZulipCheckbox ;
47
51
private EditText realmNameET ;
52
+ String serverURL ;
48
53
49
54
@ Override
50
55
protected void onCreate (Bundle savedInstanceState ) {
@@ -96,10 +101,14 @@ protected void onStop() {
96
101
super .onStop ();
97
102
}
98
103
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
+
100
110
if (mUseZulipCheckbox .isChecked ()) {
101
- ((ZulipApp ) getApplication ()).useDefaultServerURL ();
102
- return ;
111
+ return ZulipApp .DEFAULT_SERVER_URL ;
103
112
}
104
113
105
114
String serverURL = mServerEditText .getText ().toString ();
@@ -125,8 +134,8 @@ private void saveServerURL() {
125
134
serverUri = serverUri .buildUpon ().appendPath ("api" ).build ();
126
135
}
127
136
128
- ((ZulipApp ) getApplication ()).setServerURL (serverUri .toString ());
129
137
Toast .makeText (this , getString (R .string .logging_into_server , serverUri .toString ()), Toast .LENGTH_SHORT ).show ();
138
+ return serverUri .toString ();
130
139
}
131
140
132
141
@@ -142,7 +151,7 @@ private void handleSignInResult(GoogleSignInResult result) {
142
151
return ;
143
152
}
144
153
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 );
146
155
loginTask .setCallback (new AsyncTaskCompleteListener () {
147
156
@ Override
148
157
public void onTaskComplete (String result , JSONObject object ) {
@@ -170,6 +179,20 @@ public void onTaskFailure(String result) {
170
179
}
171
180
}
172
181
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
+
173
196
protected void openLegal () {
174
197
Intent i = new Intent (this , LegalActivity .class );
175
198
startActivityForResult (i , 0 );
@@ -234,16 +257,20 @@ public void onClick(View v) {
234
257
switch (v .getId ()) {
235
258
case R .id .google_sign_in_button :
236
259
connectionProgressDialog .show ();
237
- saveServerURL ();
260
+ serverURL = getServerURL ();
261
+ if (serverURL == null ) return ;
238
262
setupGoogleSignIn ();
239
263
break ;
240
264
case R .id .zulip_login :
241
265
if (!isInputValid ()) return ;
242
- saveServerURL ();
266
+ serverURL = getServerURL ();
267
+ if (serverURL == null ) return ;
243
268
connectionProgressDialog .show ();
244
269
245
270
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
+
247
274
// Remove the CPD when done
248
275
alog .setCallback (new AsyncTaskCompleteListener () {
249
276
@ Override
0 commit comments