public SearchPage() { InitializeComponent(); vm = new SearchPageViewModel(); BindingContext = vm; searchHandler = new NewsCategorySearchHandler(); searchHandler.SearchQueryEvent += (obj, input) => { if (!string.IsNullOrWhiteSpace(input)) { try { // filter down the binding context var filteredCategories = new AllNewsCategories() .Where(cat => cat.DisplayName.Contains(input.ToUpper())).ToList(); vm.NewsCategories.Clear(); vm.NewsCategories = new ObservableRangeCollection <NewsCategory>(filteredCategories); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine($"***** {ex} *****"); } } else { vm.NewsCategories = new ObservableRangeCollection <NewsCategory>(new AllNewsCategories()); } }; Shell.SetSearchHandler(this, searchHandler); }
async Task <List <NewsCategory> > GetUsersNewsCategories() { try { var loggedIn = authService.IsLoggedIn(); if (!loggedIn) { return(new List <NewsCategory>()); } var dbResult = await Data.ListAsync <UserInterests>( DefaultPartitions.UserDocuments ); var allNewsCats = new AllNewsCategories(); var userInterests = new List <UserInterests>(); userInterests.AddRange(dbResult.CurrentPage.Items.Select(i => i.DeserializedValue)); while (dbResult.HasNextPage) { await dbResult.GetNextPageAsync(); userInterests.AddRange(dbResult.CurrentPage.Items.Select(i => i.DeserializedValue)); } foreach (var interest in userInterests) { var favoriteCategory = allNewsCats.First(c => c.CategoryName == interest.NewsCategoryName); favoriteCategory.IsFavorite = true; // add the tabs var interestInfo = new InterestSubMessage { Category = favoriteCategory.CategoryName, Title = favoriteCategory.DisplayName }; var msg = new AddInterestTabMessage { InterestInfo = interestInfo }; MessagingCenter.Send(msg, AddInterestTabMessage.AddTabMessage); } return(allNewsCats); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); return(new List <NewsCategory>()); } }
async Task <List <NewsCategory> > GetUsersNewsCategories() { try { var loggedIn = authService.IsLoggedIn(); if (!loggedIn) { return(new List <NewsCategory>()); } var dbResult = await Data.ListAsync <UserInterest>( DefaultPartitions.UserDocuments); var allNewsCats = new AllNewsCategories(); var userInterests = new List <UserInterest>(); // Get first page of results userInterests.AddRange(dbResult.CurrentPage.Items.Select(i => i.DeserializedValue)); while (dbResult.HasNextPage) { await dbResult.GetNextPageAsync(); userInterests.AddRange(dbResult.CurrentPage.Items.Select(i => i.DeserializedValue)); } foreach (var interest in userInterests) { allNewsCats.First(c => c.CategoryName == interest.NewsCategoryName) .IsFavorite = true; } return(allNewsCats); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); return(new List <NewsCategory>()); } }
async Task <List <NewsCategory> > GetSavedUserInterests() { List <NewsCategory> usersFavoriteNewsCategories = new List <NewsCategory>(); var userInterests = await GetUserInterestsFromCosmos(); // Now loop through all the user interests // finding the match inside of the AllNewsCategories mark it as a fave // then add that fave to the return list var allNewsCategories = new AllNewsCategories(); foreach (var item in userInterests) { var newsCategory = allNewsCategories.FirstOrDefault(nc => nc.CategoryName == item.NewsCategoryName); newsCategory.IsFavorite = true; usersFavoriteNewsCategories.Add(newsCategory); } return(usersFavoriteNewsCategories); }
async Task <List <NewsCategory> > GetSavedUserInterests() { List <NewsCategory> usersFavoriteNewsCategories = new List <NewsCategory>(); var userInterests = await GetUserInterestsFromCosmos(); if (userInterests == null) { // try signing in again - most likey token expired await authService.Login(); isCosmosInitialized = false; userInterests = await GetUserInterestsFromCosmos(); // just keep on going - it's a demo if (userInterests == null) { userInterests = new List <UserInterest>(); } } // Now loop through all the user interests // finding the match inside of the AllNewsCategories mark it as a fave // then add that fave to the return list var allNewsCategories = new AllNewsCategories(); foreach (var item in userInterests) { var newsCategory = allNewsCategories.FirstOrDefault(nc => nc.CategoryName == item.NewsCategoryName); newsCategory.IsFavorite = true; usersFavoriteNewsCategories.Add(newsCategory); } return(usersFavoriteNewsCategories); }