private async Task SearchForId(string id) { var semestersRequest = await NPAPI.GetSemesters(id); bool saveSearchId = true; if (semestersRequest.Success) { //Update label name = semestersRequest.Name; searchResultLabelTextBlock.Text = name; //Update comoboBox semesterComboBox.ItemsSource = semestersRequest.Semesters; if (semesterComboBox.Items.Count > 0) { semesterComboBox.SelectedIndex = 0; } semesterComboBox.Visibility = semesterComboBox.Items.Count > 0 ? Visibility.Visible : Visibility.Collapsed; //Save request to roaming settings SaveToSettings(localSettings, "name", name); var semestersJson = JsonConvert.SerializeObject(semestersRequest.Semesters); SaveToSettings(localSettings, "semesters", semestersJson.ToString()); //Send GA Event bool searchSelf = roamingSettings.Values.ContainsKey("id") && roamingSettings.Values["id"] as string == id; App.Current.GATracker.SendEvent("Get Semesters", null, id, searchSelf ? 0 : 1); } else { if (semestersRequest.Error == NPAPI.RequestResult.ErrorType.Unauthorized) { //Send GA Event App.Current.GATracker.SendEvent("Session", "Session Expired", null, 0); //Try background login var result = await NPAPI.BackgroundLogin(); if (result.Success) { await SearchForId(id); } else { Frame.Navigate(typeof(LoginPage)); } } else { await new MessageDialog(semestersRequest.Message).ShowAsync(); saveSearchId = false; } } if (saveSearchId) { SaveToSettings(localSettings, "searchId", id); } }
private async Task SearchForId(string id) { //Disable user input searchForIdTextBox.IsEnabled = searchSelfButton.IsEnabled = semesterComboBox.IsEnabled = getSemestersButton.IsEnabled = false; try { var semestersRequest = await NPAPI.GetSemesters(id); //Update label name = semestersRequest.Name; searchResultLabelTextBlock.Text = name; //Update comoboBox semesterComboBox.ItemsSource = semestersRequest.Semesters; if (semesterComboBox.Items.Count > 0) { semesterComboBox.SelectedIndex = 0; } //Save request to local settings SaveToSettings(localSettings, "name", name); var semestersJson = JsonConvert.SerializeObject(semestersRequest.Semesters); SaveToSettings(localSettings, "semesters", semestersJson.ToString()); //Send GA Event bool searchSelf = roamingSettings.Values.ContainsKey("id") && roamingSettings.Values["id"] as string == id; App.Current.GATracker.SendEvent("Get Semesters", null, id, searchSelf ? 0 : 1); //Save search id SaveToSettings(localSettings, "searchId", id); } catch (NPAPI.SessionExpiredException) { //Send GA Event App.Current.GATracker.SendEvent("Session", "Session Expired", null, 0); //Try background login try { await NPAPI.BackgroundLogin(); await SearchForId(id); } catch { Frame.Navigate(typeof(LoginPage)); } } catch (Exception e) { await new MessageDialog(e.Message, "錯誤").ShowAsync(); } //Enableuser input searchForIdTextBox.IsEnabled = searchSelfButton.IsEnabled = semesterComboBox.IsEnabled = getSemestersButton.IsEnabled = true; semesterComboBox.Focus(FocusState.Programmatic); }