private async void GetPokemonSettings() { PkmSettings = await Session.Inventory.GetPokemonSettings().ConfigureAwait(false); GetCandy = await Session.Inventory.GetCandyCount(PokemonData.PokemonId).ConfigureAwait(false); CanUpgradePokemon = await Session.Inventory.CanUpgradePokemon(PokemonData).ConfigureAwait(false); CanEvolvePokemon = await Session.Inventory.CanEvolvePokemon(PokemonData).ConfigureAwait(false); Geolocation = await GeoLocation.FindOrUpdateInDatabase(PokemonData.CapturedCellId).ConfigureAwait(false); }
internal void Update(IEnumerable <PokemonData> pokemons) { foreach (var item in pokemons) { var existing = Pokemons.FirstOrDefault(x => x.Id == item.Id); if (existing != null) { existing.Displayed = Filter.Check(existing); existing.UpdateWith(item); } else { var pokemonDataViewModel = new PokemonDataViewModel(this.Session, item); pokemonDataViewModel.Displayed = Filter.Check(pokemonDataViewModel); Pokemons.Add(pokemonDataViewModel); Task.Run(async() => { GeoLocation geoLocation = await GeoLocation.FindOrUpdateInDatabase(pokemonDataViewModel.PokemonData.CapturedCellId); if (geoLocation != null) { pokemonDataViewModel.GeoLocation = geoLocation; } }); } } // Remove missing pokemon List <PokemonDataViewModel> modelsToRemove = new List <PokemonDataViewModel>(); foreach (var item in Pokemons) { var existing = pokemons.FirstOrDefault(x => x.Id == item.Id); if (existing == null) { modelsToRemove.Add(item); } } foreach (var model in modelsToRemove) { Pokemons.Remove(model); } }