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)); }