Contaienr size scan WIP

This commit is contained in:
2023-08-02 08:25:19 +02:00
parent c95be170ed
commit 1713973c3a
35 changed files with 760 additions and 125 deletions

View File

@@ -9,14 +9,21 @@ namespace FileTime.App.Core.Services;
public class ItemPreviewService : IItemPreviewService
{
private readonly IServiceProvider _serviceProvider;
private readonly IEnumerable<IItemPreviewProvider> _itemPreviewProviders;
public IObservable<IItemPreviewViewModel?> ItemPreview { get; }
public ItemPreviewService(IAppState appState, IServiceProvider serviceProvider)
public ItemPreviewService(
IAppState appState,
IServiceProvider serviceProvider,
IEnumerable<IItemPreviewProvider> itemPreviewProviders)
{
_serviceProvider = serviceProvider;
_itemPreviewProviders = itemPreviewProviders;
ItemPreview = appState
.SelectedTab
.Select(t => t?.CurrentSelectedItem.Throttle(TimeSpan.FromMilliseconds(250)) ?? Observable.Return<IItemViewModel?>(null))
.Select(t =>
t?.CurrentSelectedItem.Throttle(TimeSpan.FromMilliseconds(250))
?? Observable.Return<IItemViewModel?>(null))
.Switch()
.Select(item =>
item == null
@@ -30,11 +37,12 @@ public class ItemPreviewService : IItemPreviewService
private async Task<IItemPreviewViewModel?> Map(IItemViewModel itemViewModel)
{
return itemViewModel.BaseItem switch
{
IElement element => await _serviceProvider.GetAsyncInitableResolver(element)
.GetRequiredServiceAsync<ElementPreviewViewModel>(),
_ => null
};
ArgumentNullException.ThrowIfNull(itemViewModel.BaseItem);
var itemPreviewProvider = _itemPreviewProviders.FirstOrDefault(p => p.CanHandle(itemViewModel.BaseItem));
return itemPreviewProvider is null
? null
: await itemPreviewProvider.CreatePreviewAsync(itemViewModel.BaseItem);
}
}