More updates.
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using MangaReader.Core.Metadata;
|
||||
using MangaReader.Core.Pipeline;
|
||||
using MangaReader.Core.Search;
|
||||
using Microsoft.UI.Dispatching;
|
||||
using Microsoft.UI.Xaml.Media.Imaging;
|
||||
@@ -16,7 +18,10 @@ using System.Windows.Input;
|
||||
|
||||
namespace MangaReader.WinUI.ViewModels;
|
||||
|
||||
public partial class SearchViewModel(IMangaSearchCoordinator searchCoordinator) : ViewModelBase
|
||||
public partial class SearchViewModel(
|
||||
IMangaSearchCoordinator searchCoordinator,
|
||||
IMangaMetadataCoordinator metadataCoordinator,
|
||||
IMangaPipeline pipeline) : ViewModelBase
|
||||
{
|
||||
private readonly DispatcherQueue _dispatcherQueue = DispatcherQueue.GetForCurrentThread();
|
||||
|
||||
@@ -65,6 +70,7 @@ public partial class SearchViewModel(IMangaSearchCoordinator searchCoordinator)
|
||||
}
|
||||
|
||||
public ICommand SearchCommand => new AsyncRelayCommand(SearchAsync);
|
||||
//public ICommand ImportCommand => new AsyncRelayCommand(ImportAsync);
|
||||
|
||||
public async Task SearchAsync()
|
||||
{
|
||||
@@ -87,6 +93,8 @@ public partial class SearchViewModel(IMangaSearchCoordinator searchCoordinator)
|
||||
|
||||
ObservableMangaSearchResult mangaSearchResult = new()
|
||||
{
|
||||
Source = searchResult.Source,
|
||||
Url = searchResult.Url,
|
||||
Title = searchResult.Title,
|
||||
Thumbnail = searchResult.Thumbnail,
|
||||
Description = searchResult.Description,
|
||||
@@ -124,10 +132,30 @@ public partial class SearchViewModel(IMangaSearchCoordinator searchCoordinator)
|
||||
|
||||
return bitmap;
|
||||
}
|
||||
|
||||
public async Task ImportAsync(ObservableMangaSearchResult searchResult, CancellationToken cancellationToken)
|
||||
{
|
||||
IMangaMetadataProvider metadataProvider = metadataCoordinator.GetProvider(searchResult.Source);
|
||||
SourceManga? sourceManga = await metadataProvider.GetMangaAsync(searchResult.Url, cancellationToken);
|
||||
|
||||
if (sourceManga == null)
|
||||
return;
|
||||
|
||||
MangaMetadataPipelineRequest request = new()
|
||||
{
|
||||
SourceName = searchResult.Source,
|
||||
SourceUrl = searchResult.Url,
|
||||
SourceManga = sourceManga,
|
||||
};
|
||||
|
||||
await pipeline.RunMetadataAsync(request, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
public partial class ObservableMangaSearchResult : ObservableObject
|
||||
{
|
||||
public required string Source { get; init; }
|
||||
public required string Url { get; init; }
|
||||
public string? Title { get; init; }
|
||||
public string? Description { get; init; }
|
||||
public string? Thumbnail { get; init; }
|
||||
|
||||
Reference in New Issue
Block a user