public async Task SetIsFavorite(CancellationToken ct, ChuckNorrisQuote quote, bool isFavorite) { if (quote is null) { throw new ArgumentNullException(nameof(quote)); } var settings = await _applicationSettingsService.GetCurrent(ct); quote = quote.WithIsFavorite(isFavorite); var updatedFavorites = isFavorite && !settings.FavoriteQuotes.ContainsKey(quote.Id) ? settings.FavoriteQuotes.Add(quote.Id, quote) : settings.FavoriteQuotes.Remove(quote.Id); await _applicationSettingsService.SetFavoriteQuotes(ct, updatedFavorites); var source = await GetFavouriteQuotesSource(ct); if (isFavorite) { if (source.Items.None(q => q.Id == quote.Id)) { source.Add(quote); } } else { var item = source.Items.FirstOrDefault(q => q.Id == quote.Id); source.Remove(item); } }
public ChuckNorrisItemViewModel(IViewModel parent, ChuckNorrisQuote quote) { Parent = parent; Quote = quote; }