async void Handle_LoginClicked(object sender, System.EventArgs e) { if (string.IsNullOrEmpty(viewModel.TenancyName)) { viewModel.Message = "Please enter valid campus key"; return; } if (string.IsNullOrEmpty(viewModel.UsernameOrEmailAddress)) { viewModel.Message = "Please enter valid Username"; return; } if (string.IsNullOrEmpty(viewModel.Password)) { viewModel.Message = "Please enter valid password"; return; } viewModel.IsBusy = true; viewModel.Message = "Attempting to log in"; var creds = await Authentication.AttemptToAuthenticate(viewModel.UsernameOrEmailAddress, viewModel.Password, viewModel.TenancyName); if (creds.IsAuthenticated) { if (Settings.IsRegistered) { string longlat = await ThisDevice.GetLongLatString(); viewModel.Message = "Log in successful, registering device"; creds = await Authentication.Register(new Credentials() { Username = creds.Username, Password = creds.Password, TenancyName = creds.TenancyName, IpAddress = ThisDevice.GetLocalIPAddress(), MAC = ThisDevice.GetMAC(), Version = ThisDevice.GetOSVersion(), Device = ThisDevice.GetDescription(), GeoLocation = longlat }); viewModel.Message = "Device registered"; //save info permanently Settings.IsRegistered = true; Settings.TenancyName = creds.TenancyName; Settings.Username = creds.Username; Settings.Password = creds.Password; Settings.IsRegistered = creds.IsRegistered; viewModel.IsBusy = false; viewModel.Message = "Going to dashbaord"; } await Navigation.PushAsync(new Dashboard()); //i don't want the user to be able to go back to this page Navigation.RemovePage(this); } else { viewModel.Message = "Log in failed"; } viewModel.IsBusy = false; }