private async Task GetTags(bool clear, bool isLoaderNeeded = true)
        {
            CheckQueryIsEmpty();
            if (clear)
            {
                if (_prevQuery.ContainsKey(_searchType) && string.Equals(_prevQuery[_searchType], _searchView.Text, StringComparison.OrdinalIgnoreCase))
                {
                    return;
                }

                if (_searchType == SearchType.People)
                {
                    _searchFacade.UserFriendPresenter.Clear();
                }
                else
                {
                    _searchFacade.TagsPresenter.Clear();
                }

                _scrollListner.ClearPosition();

                if (_prevQuery.ContainsKey(_searchType))
                {
                    _prevQuery[_searchType] = _searchView.Text;
                }
                else
                {
                    _prevQuery.Add(_searchType, _searchView.Text);
                }
            }

            if (isLoaderNeeded)
            {
                _emptyQueryLabel.Visibility = ViewStates.Invisible;
                if (_searchType == SearchType.People)
                {
                    _peopleSpinner.Visibility = ViewStates.Visible;
                }
                else
                {
                    _tagSpinner.Visibility = ViewStates.Visible;
                }
            }

            var error = await _searchFacade.TrySearchCategories(_searchView.Text, _searchType);

            if (!IsInitialized)
            {
                return;
            }
            CheckQueryIsEmpty();
            Context.ShowAlert(error, ToastLength.Short);
        }
Esempio n. 2
0
        private async void Search(bool clear, bool isLoaderNeeded = true)
        {
            CheckQueryIsEmpty();
            if (clear)
            {
                if (_prevQuery.ContainsKey(_searchType) && string.Equals(_prevQuery[_searchType], searchTextField.Text, StringComparison.OrdinalIgnoreCase))
                {
                    return;
                }

                if (_searchType == SearchType.People)
                {
                    _searchFacade.UserFriendPresenter.Clear();
                }
                else
                {
                    _searchFacade.TagsPresenter.Clear();
                }

                _userTableSource.ClearPosition();

                if (_prevQuery.ContainsKey(_searchType))
                {
                    _prevQuery[_searchType] = searchTextField.Text;
                }
                else
                {
                    _prevQuery.Add(_searchType, searchTextField.Text);
                }
            }

            if (isLoaderNeeded)
            {
                noTagsLabel.Hidden = true;
                activityIndicator.StartAnimating();
            }

            var error = await _searchFacade.TrySearchCategories(searchTextField.Text, _searchType);

            CheckQueryIsEmpty();

            ShowAlert(error);
            activityIndicator.StopAnimating();
        }
Esempio n. 3
0
        private async Task <bool> Search(bool clear, bool shouldAnimate = true, bool isLoaderNeeded = true)
        {
            if (clear)
            {
                if (_prevQuery.ContainsKey(_searchType) && string.Equals(_prevQuery[_searchType], searchTextField.Text, StringComparison.OrdinalIgnoreCase))
                {
                    return(false);
                }

                if (_searchType == SearchType.People)
                {
                    _searchFacade.UserFriendPresenter.Clear();
                    _userTableSource.ClearPosition();
                }
                else
                {
                    _searchFacade.TagsPresenter.Clear();
                }

                if (_prevQuery.ContainsKey(_searchType))
                {
                    _prevQuery[_searchType] = searchTextField.Text;
                }
                else
                {
                    _prevQuery.Add(_searchType, searchTextField.Text);
                }
            }

            if (isLoaderNeeded)
            {
                if (_searchType == SearchType.Tags)
                {
                    _noResultViewTags.Hidden = true;
                    _tagsLoader.StartAnimating();
                }
                else
                {
                    _noResultViewPeople.Hidden = true;
                    _peopleLoader.StartAnimating();
                }
            }

            var error = await _searchFacade.TrySearchCategories(searchTextField.Text, _searchType);

            if (error is CanceledError)
            {
                return(false);
            }

            if (shouldAnimate)
            {
                if (!_isWarningOpen && error != null)
                {
                    UIView.Animate(0.3f, 0f, UIViewAnimationOptions.CurveEaseOut, () =>
                    {
                        _isWarningOpen = true;
                        warningViewToBottomConstraint.Constant = -ScrollAmount - 20;
                        warningView.Alpha = 1;
                        View.LayoutIfNeeded();
                    }, () =>
                    {
                        UIView.Animate(0.2f, 5f, UIViewAnimationOptions.CurveEaseIn, () =>
                        {
                            warningViewToBottomConstraint.Constant = -ScrollAmount + 60;
                            warningView.Alpha = 0;
                            View.LayoutIfNeeded();
                        }, () =>
                        {
                            _isWarningOpen = false;
                        });
                    });
                }
            }

            ShowAlert(error);
            return(true);
        }