private bool DeckMatchesSelectedTags(Deck deck) { return(SelectedTags.Any(t => t == "All") || (TagOperation == TagFilerOperation.Or ? SelectedTags.Any(t => deck.Tags.Contains(t) || t == "None" && deck.Tags.Count == 0) : SelectedTags.All(t => deck.Tags.Contains(t) || t == "None" && deck.Tags.Count == 0))); }
public async ValueTask LoadTags() { try { if (Interlocked.Increment(ref _loading) != 1) { return; } if (_loaded) { return; } var tags = await Model.ListTags(_query.QueryString, _query.TypeId, _query.Offset, _query.Limit); if (tags != null && tags.Count > 0) { _query.Offset += _query.Limit; foreach (var tag in tags.Where(it => SelectedTags.All(tag => tag.ObjectId != it.ObjectId))) { var displayTag = new DisplayTag(tag); displayTag.ClickCommand = new AsyncCommand(async() => { if (SelectedTags.All(it => it.ObjectId != displayTag.ObjectId)) { displayTag.ClickCommand = new AsyncCommand(async() => { SelectedTags.Remove(displayTag); }); SelectedTags.Add(displayTag); } }); SearchResult.Add(displayTag); } } else { _loaded = true; } } finally { Interlocked.Decrement(ref _loading); } }
bool Filter(Note x) => SelectedTags.All(t => x.Tags.Contains(t)) && (SelectedNotes.Any() ? SelectedNotes.Any(n => n == x.Name) : true);