private async void StartLoginProcess() { var success = false; try { var response = await _connectionHandler.Login(Username, Password); var responseBody = await response.Content.ReadAsStringAsync(); if (response.StatusCode != HttpStatusCode.OK) { throw new Exception("Response was not OK. Aborting. Reason: " + responseBody); } var token = JsonConvert.DeserializeObject <Response>(await response.Content.ReadAsStringAsync()); var isActive = _connectionHandler.CheckTokenValidity(token.token); if (isActive) { _connectionHandler.SaveUsagePrivileges(token.token); dialogService.ShowLoginToast(); success = true; } } catch (Exception e) { Log.Error("Error while logging in!", e); } finally { Password = string.Empty; OnPropertyChanged(nameof(Password)); } if (success) { Log.Debug("Logged in successfully!"); Username = string.Empty; OnPropertyChanged(nameof(Username)); LoginSuccessful?.Invoke(this, EventArgs.Empty); } }