Skip to content

Commit ec5c927

Browse files
committed
Refactor ImageBrushLoader without Reactive
1 parent 3dbf1af commit ec5c927

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

AsyncImageLoader.Avalonia/ImageBrushLoader.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
1-
using System;
2-
using System.Reactive.Linq;
3-
using AsyncImageLoader.Loaders;
1+
using AsyncImageLoader.Loaders;
42
using Avalonia;
53
using Avalonia.Media;
64

75
namespace AsyncImageLoader {
86
public static class ImageBrushLoader {
97
public static IAsyncImageLoader AsyncImageLoader { get; set; } = new RamCachedWebImageLoader();
108
static ImageBrushLoader() {
11-
SourceProperty.Changed
12-
.Where(args => args.IsEffectiveValueChange)
13-
.Subscribe(args => OnSourceChanged((ImageBrush)args.Sender, args.NewValue.Value));
9+
SourceProperty.Changed.AddClassHandler<ImageBrush>(OnSourceChanged);
1410
}
1511

16-
private static async void OnSourceChanged(ImageBrush sender, string? url) {
17-
SetIsLoading(sender, true);
12+
private static async void OnSourceChanged(ImageBrush imageBrush, AvaloniaPropertyChangedEventArgs args) {
13+
var (oldValue, newValue) = args.GetOldAndNewValue<string?>();
14+
if (oldValue == newValue)
15+
return;
16+
17+
SetIsLoading(imageBrush, true);
1818

19-
var bitmap = url == null
19+
var bitmap = newValue == null
2020
? null
21-
: await AsyncImageLoader.ProvideImageAsync(url);
22-
if (GetSource(sender) != url) return;
23-
sender.Source = bitmap;
21+
: await AsyncImageLoader.ProvideImageAsync(newValue);
22+
if (GetSource(imageBrush) != newValue) return;
23+
imageBrush.Source = bitmap;
2424

25-
SetIsLoading(sender, false);
25+
SetIsLoading(imageBrush, false);
2626
}
2727

2828
public static readonly AttachedProperty<string?> SourceProperty = AvaloniaProperty.RegisterAttached<ImageBrush, string?>("Source", typeof(ImageLoader));

0 commit comments

Comments
 (0)