void RefreshLoop(TabPerson person) { if (!person.IsVerified) { Action callback = () => person.AssociatedUser.RefreshInBackground(new TabRefreshCallback((o, e) => RefreshLoop(person))); var timer = new SignupTimer(20000, 20000, callback); timer.Start(); } else { var toast = Toast.MakeText(this, "Successfully registered", ToastLength.Long); toast.Show(); } }
protected override void OnCreate(Bundle bundle) { base.OnCreate (bundle); Parse.Initialize (this, ParseCredentials.ApplicationID, ParseCredentials.ClientKey); DensityExtensions.Initialize (this); // Set our view from the "main" layout resource SetContentView (Resource.Layout.Main); var signInBtn = FindViewById<Button> (Resource.Id.SignInButton); var signUpBtn = FindViewById<Button> (Resource.Id.SignUpButton); var userEntry = FindViewById<EditText> (Resource.Id.EmailEntry); var passwordEntry = FindViewById<EditText> (Resource.Id.PasswordEntry); /* If the user is already logged in, we show a blank landing page * (as there is a bit of delay when acquiring the TabPerson * so this activity content is still shown). */ if (ParseUser.CurrentUser != null) { signInBtn.Visibility = signUpBtn.Visibility = userEntry.Visibility = passwordEntry.Visibility = ViewStates.Invisible; ParseUser.CurrentUser.RefreshInBackground (null); LaunchApp (this, ParseUser.CurrentUser, null); } profile = UserProfile.Instantiate (this); SignupTimer timer = null; userEntry.AfterTextChanged += (sender, e) => { var login = userEntry.Text; if (string.IsNullOrEmpty (login)) return; if (timer != null) timer.Cancel (); timer = new SignupTimer (1000, 1000, () => { var usernameChecker = CheckLoginDisponibility (login); usernameChecker.ContinueWith (t => { if (userEntry.Text == login) signUpBtn.Enabled = t.Result; }, TaskContinuationOptions.ExecuteSynchronously); }); timer.Start (); }; var initialEmail = profile.PrimayAddress ?? (profile.Emails == null ? null : profile.Emails.FirstOrDefault ()) ?? null; if (!string.IsNullOrEmpty (initialEmail)) userEntry.Text = initialEmail; if (!string.IsNullOrEmpty (userEntry.Text)) passwordEntry.RequestFocus (); ProgressDialog spinDialog = new ProgressDialog (this) { Indeterminate = true }; spinDialog.SetCancelable (false); Action<ParseUser, ParseException> callback = (user, err) => { if (user == null || err != null) { Android.Util.Log.Debug ("Login", "User not recognized: {0}", (err != null) ? err.Message : string.Empty); spinDialog.Dismiss (); var builder = new AlertDialog.Builder (this); builder.SetMessage (Resource.String.login_error); builder.SetPositiveButton ("OK", (a, b) => passwordEntry.Text = string.Empty); builder.Create ().Show (); return; } Android.Util.Log.Debug ("Login", "User {0} successfully logged. New? {1}", user.Username, user.IsNew); LaunchApp (this, user, spinDialog.Dismiss); }; signInBtn.Click += (sender, e) => { spinDialog.SetMessage ("Signing in..."); spinDialog.Show (); ParseUser.LogInInBackground (userEntry.Text, passwordEntry.Text, new TabLoginCallback (callback)); }; signUpBtn.Click += (sender, e) => { spinDialog.SetMessage ("Signing up..."); spinDialog.Show (); var user = new ParseUser () { Username = userEntry.Text, Email = userEntry.Text }; user.SetPassword (passwordEntry.Text); user.SignUpInBackground (new TabSignUpCallback (user, callback)); }; }
void RefreshLoop(TabPerson person) { if (!person.IsVerified) { Action callback = () => person.AssociatedUser.RefreshInBackground (new TabRefreshCallback ((o, e) => RefreshLoop (person))); var timer = new SignupTimer (20000, 20000, callback); timer.Start (); } else { var toast = Toast.MakeText (this, "Successfully registered", ToastLength.Long); toast.Show (); } }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); Parse.Initialize(this, ParseCredentials.ApplicationID, ParseCredentials.ClientKey); DensityExtensions.Initialize(this); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); var signInBtn = FindViewById <Button> (Resource.Id.SignInButton); var signUpBtn = FindViewById <Button> (Resource.Id.SignUpButton); var userEntry = FindViewById <EditText> (Resource.Id.EmailEntry); var passwordEntry = FindViewById <EditText> (Resource.Id.PasswordEntry); /* If the user is already logged in, we show a blank landing page * (as there is a bit of delay when acquiring the TabPerson * so this activity content is still shown). */ if (ParseUser.CurrentUser != null) { signInBtn.Visibility = signUpBtn.Visibility = userEntry.Visibility = passwordEntry.Visibility = ViewStates.Invisible; ParseUser.CurrentUser.RefreshInBackground(null); LaunchApp(this, ParseUser.CurrentUser, null); } profile = UserProfile.Instantiate(this); SignupTimer timer = null; userEntry.AfterTextChanged += (sender, e) => { var login = userEntry.Text; if (string.IsNullOrEmpty(login)) { return; } if (timer != null) { timer.Cancel(); } timer = new SignupTimer(1000, 1000, () => { var usernameChecker = CheckLoginDisponibility(login); usernameChecker.ContinueWith(t => { if (userEntry.Text == login) { signUpBtn.Enabled = t.Result; } }, TaskContinuationOptions.ExecuteSynchronously); }); timer.Start(); }; var initialEmail = profile.PrimayAddress ?? (profile.Emails == null ? null : profile.Emails.FirstOrDefault()) ?? null; if (!string.IsNullOrEmpty(initialEmail)) { userEntry.Text = initialEmail; } if (!string.IsNullOrEmpty(userEntry.Text)) { passwordEntry.RequestFocus(); } ProgressDialog spinDialog = new ProgressDialog(this) { Indeterminate = true }; spinDialog.SetCancelable(false); Action <ParseUser, ParseException> callback = (user, err) => { if (user == null || err != null) { Android.Util.Log.Debug("Login", "User not recognized: {0}", (err != null) ? err.Message : string.Empty); spinDialog.Dismiss(); var builder = new AlertDialog.Builder(this); builder.SetMessage(Resource.String.login_error); builder.SetPositiveButton("OK", (a, b) => passwordEntry.Text = string.Empty); builder.Create().Show(); return; } Android.Util.Log.Debug("Login", "User {0} successfully logged. New? {1}", user.Username, user.IsNew); LaunchApp(this, user, spinDialog.Dismiss); }; signInBtn.Click += (sender, e) => { string email; if (!TryExtractEmailFromRawInput(userEntry.Text, out email)) { var builder = new AlertDialog.Builder(this); builder.SetMessage(Resource.String.invalid_email); builder.SetPositiveButton("OK", (a, b) => userEntry.Text = string.Empty); builder.Create().Show(); return; } spinDialog.SetMessage("Signing in..."); spinDialog.Show(); ParseUser.LogInInBackground(email, passwordEntry.Text, new TabLoginCallback(callback)); }; signUpBtn.Click += (sender, e) => { string email; if (!TryExtractEmailFromRawInput(userEntry.Text, out email)) { var builder = new AlertDialog.Builder(this); builder.SetMessage(Resource.String.invalid_email); builder.SetPositiveButton("OK", (a, b) => userEntry.Text = string.Empty); builder.Create().Show(); return; } spinDialog.SetMessage("Signing up..."); spinDialog.Show(); var user = new ParseUser() { Username = email, Email = email }; user.SetPassword(passwordEntry.Text); user.SignUpInBackground(new TabSignUpCallback(user, callback)); }; }