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 RemoveFavoriteRoute(IFavorite route) { GroupedFavoriteRoutes.Remove(route); var faveRoute = (FavoriteRoute)route; ColoredMapLine toRemove = MappableFavoriteRoutes .FirstOrDefault(x => x.OptionalId == faveRoute.Id); MappableFavoriteRoutes.Remove(toRemove); RaisePropertyChanged(nameof(IsFavoritesEmpty)); }
private void AddFavoriteRoute(IFavorite route) { GroupedFavoriteRoutes.AddSorted(route); var faveRoute = (FavoriteRoute)route; IEnumerable <ColoredMapLinePoint> mapPoints = faveRoute.RouteGeometryStrings .SelectMany(str => GooglePolineDecoder.Decode(str)) .Select(coords => new ColoredMapLinePoint(coords, HslColors.GetModeColor(ApiMode.Bus))); var mapLine = new ColoredMapLine(mapPoints, faveRoute.Id); mapLine.OptionalId = faveRoute.Id; MappableFavoriteRoutes.Add(mapLine); RaisePropertyChanged(nameof(IsFavoritesEmpty)); }
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); } } } }