diff --git a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs index 969093891..e0d1d5034 100644 --- a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs +++ b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs @@ -117,27 +117,7 @@ namespace Flow.Launcher.Infrastructure.Image if (Uri.TryCreate(path, UriKind.RelativeOrAbsolute, out var uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps)) { - // Download image from url - await using var resp = await GetStreamAsync(uriResult); - if (resp == null) - { - return new ImageResult(ImageCache[Constant.MissingImgIcon], ImageType.Error); - } - await using var buffer = new MemoryStream(); - await resp.CopyToAsync(buffer); - buffer.Seek(0, SeekOrigin.Begin); - var image = new BitmapImage(); - image.BeginInit(); - image.CacheOption = BitmapCacheOption.OnLoad; - if (!loadFullImage) - { - image.DecodePixelHeight = SmallIconSize; - image.DecodePixelWidth = SmallIconSize; - } - image.StreamSource = buffer; - image.EndInit(); - image.StreamSource = null; - image.Freeze(); + var image = await LoadRemoteImageAsync(loadFullImage, uriResult); ImageCache[path] = image; return new ImageResult(image, ImageType.ImageFile); } @@ -175,6 +155,27 @@ namespace Flow.Launcher.Infrastructure.Image return imageResult; } + private static async Task LoadRemoteImageAsync(bool loadFullImage, Uri uriResult) + { + // Download image from url + await using var resp = await GetStreamAsync(uriResult); + await using var buffer = new MemoryStream(); + await resp.CopyToAsync(buffer); + buffer.Seek(0, SeekOrigin.Begin); + var image = new BitmapImage(); + image.BeginInit(); + image.CacheOption = BitmapCacheOption.OnLoad; + if (!loadFullImage) + { + image.DecodePixelHeight = SmallIconSize; + image.DecodePixelWidth = SmallIconSize; + } + image.StreamSource = buffer; + image.EndInit(); + image.StreamSource = null; + image.Freeze(); + return image; + } private static ImageResult GetThumbnailResult(ref string path, bool loadFullImage = false) {