private static void RemoveDuplicates(List <SavedSearchConfig> searches, SavedSearchConfig newConfig) { foreach (var search in searches.ToList()) { bool SameTags() => search.Tags.OrderBy(tag => tag) .SequenceEqual(newConfig.Tags); if (search.Alias == newConfig.Alias || SameTags()) { searches.Remove(search); } } }
public SavedSearchModel( [NotNull] SavedSearchConfig config, [NotNull] Action <SavedSearchModel> selectCallback, [NotNull] Action <SavedSearchModel> deleteCallback) { if (selectCallback is null) { throw new ArgumentNullException(nameof(selectCallback)); } Config = config ?? throw new ArgumentNullException(nameof(config)); SelectCommand = new DelegateCommand(() => selectCallback(this)); DeleteCommand = new DelegateCommand(() => deleteCallback(this)); }
public async void Receive(SaveSearchMessage message) { var newConfig = new SavedSearchConfig { Alias = message.Alias, Tags = message.SearchTags.OrderBy(tag => tag).ToList() }; var searches = SavedSearchConfigs; RemoveDuplicates(searches, newConfig); searches = searches.Append(newConfig).OrderBy(s => s.Alias).ToList(); await SaveAndRefreshAsync(searches); }