public void Search() { if (_lastUsersRequest != null) { _lastUsersRequest.Cancel(); } var text = Text.Trim(); if (string.IsNullOrEmpty(text)) { LazyItems.Clear(); Items.Clear(); foreach (var item in _source) { Items.Add(item); } //Status = string.IsNullOrEmpty(Text) ? AppResources.SearchAmongYourContacts : AppResources.NoResults; return; } SearchUsersRequest nextUsersRequest; if (!_searchResultsCache.TryGetValue(text, out nextUsersRequest)) { IList <TLUserBase> source; if (_lastUsersRequest != null && text.IndexOf(_lastUsersRequest.Text, StringComparison.OrdinalIgnoreCase) != -1) { source = _lastUsersRequest.Source; } else { _source = _source ?? Items .OrderBy(x => x.FullName) .ToList(); source = _source; } nextUsersRequest = new SearchUsersRequest(text, source); } IsWorking = true; nextUsersRequest.ProcessAsync(results => Telegram.Api.Helpers.Execute.BeginOnUIThread(() => { if (nextUsersRequest.IsCanceled) { return; } //Status = string.Empty; Items.Clear(); LazyItems.Clear(); if (results.Count > 0) { //Items.Add(new TLServiceText { Text = AppResources.Contacts }); } for (var i = 0; i < results.Count; i++) { if (i < 6) { Items.Add(results[i]); } else { LazyItems.Add(results[i]); } } IsWorking = false; //Status = Items.Count == 0 ? AppResources.NoResults : string.Empty; //return; if (LazyItems.Count > 0) { PopulateItems(); } })); _searchResultsCache[nextUsersRequest.Text] = nextUsersRequest; _lastUsersRequest = nextUsersRequest; }
public void Search(string text) { if (_lastSearchRequest != null) { _lastSearchRequest.Cancel(); } var trimmedText = text.Trim(); if (string.IsNullOrEmpty(trimmedText)) { if (_isFullResults) { return; } LazyItems.Clear(); Items.Clear(); //foreach (var contact in _source) //{ // Items.Add(contact); //} _isFullResults = true; return; } var nextSearchRequest = CreateSearchRequest(text); _isFullResults = false; IsWorking = true; nextSearchRequest.ProcessAsync(results => Execute.BeginOnUIThread(() => { if (nextSearchRequest.IsCanceled) { return; } Items.Clear(); LazyItems.Clear(); for (var i = 0; i < results.Count; i++) { if (i < 6) { Items.Add(results[i]); } else { LazyItems.Add(results[i]); } } IsWorking = false; Status = Items.Count == 0 ? AppResources.NoResults : string.Empty; PopulateItems(); })); _searchResultsCache[nextSearchRequest.Text] = nextSearchRequest; _lastSearchRequest = nextSearchRequest; }