private async void OnOnSearchQuerySubmitted(string query)
        {
            if (Loading || (query?.Equals(_prevQuery, StringComparison.CurrentCultureIgnoreCase) ?? true) || string.IsNullOrEmpty(query))
            {
                return;
            }
            IsFirstVisitGridVisible = false;
            if (query.Length <= 2)
            {
                FoundCharacters.Clear();
                IsEmptyNoticeVisible    = false;
                IsFirstVisitGridVisible = true;
                return;
            }

            _prevQuery = query;

            FoundCharacters.Clear();
            Loading = true;

            try
            {
                FoundCharacters.AddRange((await new CharactersSearchQuery(query).GetSearchResults()).Select(
                                             character => new FavouriteViewModel(character)));
                IsEmptyNoticeVisible = !FoundCharacters.Any();
            }
            catch (Exception)
            {
                IsEmptyNoticeVisible = true;
            }
            Loading = false;
        }
 public void OnNavigatedFrom()
 {
     if (!ViewModelLocator.Mobile)
     {
         FoundCharacters?.Clear();
         _prevQuery = "";
     }
     ViewModelLocator.GeneralMain.OnSearchQuerySubmitted -= OnOnSearchQuerySubmitted;
     _queryHandler = false;
 }
        public void Init(SearchPageNavArgsBase args)
        {
            if (!Loading && !FoundCharacters.Any())
            {
                IsFirstVisitGridVisible = true;
                IsEmptyNoticeVisible    = false;
            }
            else
            {
                IsEmptyNoticeVisible    = false;
                IsFirstVisitGridVisible = false;
            }

            if (!_queryHandler)
            {
                ViewModelLocator.GeneralMain.OnSearchQuerySubmitted += OnOnSearchQuerySubmitted;
            }
            _queryHandler = true;

            OnOnSearchQuerySubmitted(ViewModelLocator.GeneralMain.CurrentSearchQuery);
        }