7
7
import android .os .Bundle ;
8
8
import android .support .v4 .app .FragmentActivity ;
9
9
import android .util .Log ;
10
+ import android .util .Patterns ;
10
11
import android .view .View ;
11
12
import android .widget .CheckBox ;
12
13
import android .widget .CompoundButton ;
@@ -39,6 +40,8 @@ public class LoginActivity extends FragmentActivity implements View.OnClickListe
39
40
private ProgressDialog connectionProgressDialog ;
40
41
private GoogleApiClient mGoogleApiClient ;
41
42
private EditText mServerEditText ;
43
+ private EditText mUserName ;
44
+ private EditText mPassword ;
42
45
private View mGoogleSignInButton ;
43
46
private CheckBox mUseZulipCheckbox ;
44
47
@@ -58,6 +61,8 @@ protected void onCreate(Bundle savedInstanceState) {
58
61
findViewById (R .id .google_sign_in_button ).setOnClickListener (this );
59
62
findViewById (R .id .zulip_login ).setOnClickListener (this );
60
63
mUseZulipCheckbox .setOnCheckedChangeListener (this );
64
+ mUserName = (EditText ) findViewById (R .id .username );
65
+ mPassword = (EditText ) findViewById (R .id .password );
61
66
}
62
67
63
68
@ Override
@@ -101,6 +106,10 @@ private void saveServerURL() {
101
106
}
102
107
103
108
// add https if scheme is not included
109
+ if (!serverURL .contains ("://" )) {
110
+ serverURL = "https://" + serverURL ;
111
+ }
112
+
104
113
Uri serverUri = Uri .parse (serverURL );
105
114
if (serverUri .isRelative ()) {
106
115
serverUri = serverUri .buildUpon ().scheme ("https" ).build ();
@@ -225,11 +234,12 @@ public void onClick(View v) {
225
234
setupGoogleSignIn ();
226
235
break ;
227
236
case R .id .zulip_login :
237
+ if (!isInputValid ()) return ;
228
238
saveServerURL ();
229
239
connectionProgressDialog .show ();
230
- if (! mUseZulipCheckbox . isChecked ()) saveServerURL ();
231
- AsyncLogin alog = new AsyncLogin (LoginActivity .this , (( EditText ) findViewById ( R . id . username )). getText (). toString (),
232
- (( EditText ) findViewById ( R . id . password )) .getText ().toString ());
240
+
241
+ AsyncLogin alog = new AsyncLogin (LoginActivity .this ,
242
+ mUserName . getText (). toString (), mPassword .getText ().toString ());
233
243
// Remove the CPD when done
234
244
alog .setCallback (new AsyncTaskCompleteListener () {
235
245
@ Override
@@ -251,6 +261,37 @@ public void onTaskFailure(String result) {
251
261
}
252
262
}
253
263
264
+ private boolean isInputValid () {
265
+ boolean isValid = true ;
266
+
267
+ if (mPassword .length () == 0 ) {
268
+ isValid = false ;
269
+ mPassword .setError (getString (R .string .password_required ));
270
+ }
271
+
272
+ if (mUserName .length () == 0 ) {
273
+ isValid = false ;
274
+ mUserName .setError (getString (R .string .username_required ));
275
+ }
276
+
277
+ if (!mUseZulipCheckbox .isChecked ()) {
278
+ if (mServerEditText .length () == 0 ) {
279
+ isValid = false ;
280
+ mServerEditText .setError (getString (R .string .server_domain_required ));
281
+ } else {
282
+ String serverString = mServerEditText .getText ().toString ();
283
+ if (!serverString .contains ("://" )) serverString = "https://" + serverString ;
284
+
285
+ if (!Patterns .WEB_URL .matcher (serverString ).matches ()) {
286
+ mServerEditText .setError (getString (R .string .invalid_domain ));
287
+ isValid = false ;
288
+ }
289
+ }
290
+ }
291
+
292
+ return isValid ;
293
+ }
294
+
254
295
@ Override
255
296
public void onCheckedChanged (CompoundButton buttonView , boolean isChecked ) {
256
297
if (isChecked ) {
0 commit comments