private void RemoveFavoritePlace(IFavorite deletedFave) { GroupedFavoritePlaces.Remove(deletedFave); MappableFavoritePlaces.Remove(deletedFave as IMapPoi); RaisePropertyChanged(nameof(IsFavoritesEmpty)); }
//---These methods happen in reaction to the FavoritesChanged Event. private void AddFavoritePlace(IFavorite place) { GroupedFavoritePlaces.AddSorted(place); MappableFavoritePlaces.Add(place as IMapPoi); RaisePropertyChanged(nameof(IsFavoritesEmpty)); }
public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state) { _favoritesService.FavoritesChanged += FavoritesChanged; //todo: change this from nuking/rebuilding every time to add/remove what's changed GroupedFavoritePlaces.Clear(); MappableFavoritePlaces.Clear(); GroupedFavoriteRoutes.Clear(); MappableFavoriteRoutes.Clear(); var favorites = await _favoritesService.GetFavoritesAsync(); foreach (IPlace place in favorites.OfType <IPlace>()) { AddFavoritePlace((IFavorite)place); } foreach (FavoriteRoute route in favorites.OfType <FavoriteRoute>()) { AddFavoriteRoute(route); } await Task.CompletedTask; }
private void FavoritesChanged(object sender, FavoritesChangedEventArgs args) { if (args.AddedFavorites?.Count > 0) { foreach (var favePlace in args.AddedFavorites.OfType <FavoritePlace>()) { AddFavoritePlace(favePlace); } foreach (var faveRoute in args.AddedFavorites.OfType <FavoriteRoute>()) { AddFavoriteRoute(faveRoute); } } if (args.RemovedFavorites?.Count > 0) { foreach (var deletedFave in args.RemovedFavorites.OfType <FavoritePlace>()) { RemoveFavoritePlace(deletedFave); } foreach (var deletedRoute in args.RemovedFavorites.OfType <FavoriteRoute>()) { RemoveFavoriteRoute(deletedRoute); } } if (args.EditedFavorites?.Count > 0) { foreach (var editedFave in args.EditedFavorites) { var toEdit = GroupedFavoritePlaces.FirstOrDefault(x => x.Id == editedFave.Id); if (toEdit != null) { RemoveFavoritePlace(toEdit); AddFavoritePlace(editedFave); } toEdit = GroupedFavoriteRoutes.FirstOrDefault(x => x.Id == editedFave.Id); if (toEdit != null) { RemoveFavoriteRoute(toEdit); AddFavoriteRoute(editedFave); } } } }