Пример #1
0
        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;
 }