wabbajack/Wabbajack/View Models/ModVM.cs

32 lines
1019 B
C#
Raw Normal View History

2019-11-03 06:01:19 +00:00
using ReactiveUI;
using System;
using System.Reactive.Linq;
using System.Windows.Media.Imaging;
using Wabbajack.Common;
using Wabbajack.Lib;
using Wabbajack.Lib.Downloaders;
namespace Wabbajack
{
public class ModVM : ViewModel
{
public IMetaState State { get; }
2019-11-03 06:01:19 +00:00
// Image isn't exposed as a direct property, but as an observable.
// This acts as a caching mechanism, as interested parties will trigger it to be created,
// and the cached image will automatically be released when the last interested party is gone.
public IObservable<BitmapImage> ImageObservable { get; }
public ModVM(IMetaState state)
2019-11-03 06:01:19 +00:00
{
State = state;
ImageObservable = Observable.Return(State.ImageURL)
2019-11-03 06:01:19 +00:00
.ObserveOn(RxApp.TaskpoolScheduler)
.DownloadBitmapImage((ex) => Utils.Log($"Skipping slide for mod {State.Name}"))
2019-11-03 06:01:19 +00:00
.Replay(1)
2019-12-21 20:22:41 +00:00
.RefCount(TimeSpan.FromMilliseconds(5000));
2019-11-03 06:01:19 +00:00
}
}
}