protected override void OnExit(object sender, RoutedEventArgs e)
        {
            base.OnExit(sender, e);

            foreach (var button in lstImages.Children)
            {
                ImagePreviewButton imageButton = button as ImagePreviewButton;

                if (imageButton == null)
                {
                    continue;
                }

                ImageBehavior.SetAnimatedSource(imageButton.img, null);
            }

            lstImages.Children.Clear();

            UpdateLayout();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            if (!IsOnExitActive)
            {
                e.Handled = true;
                return;
            }
        }
        public async Task ExecuteSearch(string query)
        {
            await ShowLoadingGrid(true)
            .ConfigureAwait(true);

            IEnumerable <ImagePost> searchResults = !string.IsNullOrEmpty(query)
                ? (await TenorClient.SearchAsync(query, 40)
                   .ConfigureAwait(true)).Results
                : (await TenorClient.GetTrendingPostsAsync(40)
                   .ConfigureAwait(true)).Results;

            lstImages.Children.Clear();

            if (searchResults == null)
            {
                return;
            }

            foreach (var data in searchResults)
            {
                ImagePreviewButton previewButton = new ImagePreviewButton
                {
                    ButtonSize        = 150,
                    ButtonPressAction = ViewModel.OnPicSelect
                };

                foreach (var media in data.Media)
                {
                    if (!media.TryGetValue(MediaType.TinyGif, out MediaItem value))
                    {
                        continue;
                    }

                    previewButton.SmallImageSource = value?.Url;

                    if (!media.TryGetValue(MediaType.Gif, out value))
                    {
                        continue;
                    }

                    previewButton.ImageSource = value?.Url;
                }

                if (previewButton.SmallImageSource == null ||
                    previewButton.ImageSource == null)
                {
                    continue;
                }

                lstImages.Children.Add(previewButton);
            }

            await Task.Delay(TimeSpan.FromSeconds(2))
            .ConfigureAwait(true);

            await ShowLoadingGrid(false)
            .ConfigureAwait(true);
        }
        public async Task ExecuteSearch()
        {
            await ShowLoadingGrid()
            .ConfigureAwait(true);

            try
            {
                var result = await PhotoApi
                             .GetLibraryPhotos()
                             .ConfigureAwait(true);

                if (result.IsError ||
                    result.Data == null)
                {
                    return;
                }

                ImagesWrapPanel.Children.Clear();

                foreach (var photo in result.Data)
                {
                    if (string.IsNullOrEmpty(photo.MediumUrl))
                    {
                        continue;
                    }
                    if (string.IsNullOrEmpty(photo.SmallUrl))
                    {
                        photo.SmallUrl = photo.MediumUrl;
                    }

                    var imageButton = new ImagePreviewButton
                    {
                        ButtonSize       = 200,
                        SmallImageSource = photo.SmallUrl,
                        ImageSource      = photo.MediumUrl,
                        Margin           = new Thickness(5)
                    };
                    imageButton.Click += ImagePreviewButton_Click;

                    ImagesWrapPanel.Children.Add(
                        imageButton);
                }

                await Task.Delay(
                    TimeSpan.FromSeconds(1))
                .ConfigureAwait(true);
            }
            finally
            {
                await HideLoadingGrid()
                .ConfigureAwait(true);
            }
        }
        public async Task ExecuteSearch()
        {
            await ShowLoadingGrid(true)
            .ConfigureAwait(true);

            var result = await PhotoApi.GetLibraryPhotos()
                         .ConfigureAwait(true);

            if (result.IsError ||
                result.Data == null)
            {
                return;
            }

            lstImages.Children.Clear();

            foreach (var photo in result.Data)
            {
                if (string.IsNullOrEmpty(photo.MediumUrl))
                {
                    continue;
                }
                if (string.IsNullOrEmpty(photo.SmallUrl))
                {
                    continue;
                }

                ImagePreviewButton previewButton = new ImagePreviewButton()
                {
                    ButtonSize        = 200,
                    ButtonPressAction = arg =>
                    {
                        Dispatcher.Invoke(() =>
                        {
                            lstImages.Children.Clear();
                        });

                        return(ViewModel.OnPicSelect(arg));
                    },
                    SmallImageSource = photo.SmallUrl,
                    ImageSource      = photo.MediumUrl
                };

                lstImages.Children.Add(previewButton);
            }

            await Task.Delay(TimeSpan.FromSeconds(1))
            .ConfigureAwait(true);

            await ShowLoadingGrid(false)
            .ConfigureAwait(true);
        }
Example #5
0
        public async Task ExecuteSearch(
            string query)
        {
            SearchQueryTextBox.IsEnabled = false;

            await ShowLoadingGrid()
            .ConfigureAwait(true);

            try
            {
                var searchResults = !string.IsNullOrEmpty(query)
                    ? (await TenorClient.SearchAsync(query, 40)
                       .ConfigureAwait(true)).Results
                    : (await TenorClient.GetTrendingPostsAsync(40)
                       .ConfigureAwait(true)).Results;

                ImagesWrapPanel.Children.Clear();

                if (searchResults == null)
                {
                    return;
                }

                foreach (var data in searchResults)
                {
                    var imageButton = new ImagePreviewButton
                    {
                        ButtonSize = 150,
                        Margin     = new Thickness(5)
                    };
                    imageButton.Click += ImagePreviewButton_Click;

                    foreach (var media in data.Media)
                    {
                        if (!media.TryGetValue(MediaType.Gif, out var value))
                        {
                            continue;
                        }

                        imageButton.ImageSource = value?.Url;

                        if (!media.TryGetValue(MediaType.TinyGif, out value))
                        {
                            value = media[MediaType.Gif];
                        }

                        imageButton.SmallImageSource = value?.Url;
                    }

                    if (imageButton.ImageSource == null ||
                        imageButton.SmallImageSource == null)
                    {
                        continue;
                    }

                    ImagesWrapPanel.Children.Add(
                        imageButton);
                }

                await Task.Delay(
                    TimeSpan.FromSeconds(2))
                .ConfigureAwait(true);
            }
            finally
            {
                await HideLoadingGrid()
                .ConfigureAwait(true);

                SearchQueryTextBox.IsEnabled = true;
            }
        }