Contaienr size scan WIP
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user