Start plugin fix

This commit is contained in:
ahjephson
2025-10-18 12:26:13 +01:00
parent 1cf9f97187
commit fc51505e3f
7 changed files with 123 additions and 7 deletions

View File

@@ -10,11 +10,11 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AwesomeAssertions" Version="9.0.0" /> <PackageReference Include="AwesomeAssertions" Version="9.2.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" /> <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
<PackageReference Include="xunit" Version="2.9.3" /> <PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.0"> <PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>

View File

@@ -0,0 +1,20 @@
<MudDialog>
<DialogContent>
<MudGrid>
<MudItem xs="12">
<MudList T="string">
<MudListItem Icon="@Icons.Material.Filled.Add" IconColor="Color.Info" OnClick="AddCategory">Add</MudListItem>
<MudListItem Icon="@Icons.Material.Filled.Remove" IconColor="Color.Error" OnClick="RemoveCategory">Remove</MudListItem>
<MudDivider />
@foreach (var plugin in Plugins)
{
var pluginRef = plugin;
<MudListItem Icon="@GetIcon(pluginRef.FullName)" IconColor="Color.Default" OnClick="@(e => SetPlugin(pluginRef))">@pluginRef.Name</MudListItem>
}
</MudList>
</MudItem>
</MudGrid>
</DialogContent>
<DialogActions>
</DialogActions>
</MudDialog>

View File

@@ -0,0 +1,72 @@
using Lantean.QBitTorrentClient;
using Lantean.QBitTorrentClient.Models;
using Lantean.QBTMud.Helpers;
using Microsoft.AspNetCore.Components;
using MudBlazor;
namespace Lantean.QBTMud.Components.Dialogs
{
public partial class SearchPluginsDialog
{
[Inject]
protected IApiClient ApiClient { get; set; } = default!;
[Inject]
protected IDialogService DialogService { get; set; } = default!;
[CascadingParameter]
IMudDialogInstance MudDialog { get; set; } = default!;
protected HashSet<SearchPlugin> Plugins { get; set; } = [];
protected IList<string> TorrentCategories { get; private set; } = [];
protected override async Task OnInitializedAsync()
{
Plugins = [.. (await ApiClient.GetSearchPlugins())];
}
protected string GetIcon(string tag)
{
return Icons.Material.Filled.PlusOne;
}
protected async Task SetPlugin(QBitTorrentClient.Models.SearchPlugin plugin)
{
await InvokeAsync(StateHasChanged);
}
protected async Task AddCategory()
{
var addedCategoy = await DialogService.InvokeAddCategoryDialog(ApiClient);
if (addedCategoy is null)
{
return;
}
await ApiClient.SetTorrentCategory(addedCategoy, Hashes);
Plugins.Add(addedCategoy);
await GetTorrentCategories();
}
protected async Task RemoveCategory()
{
await ApiClient.RemoveTorrentCategory(Hashes);
await GetTorrentCategories();
}
protected Task CloseDialog()
{
MudDialog.Close();
return Task.CompletedTask;
}
protected void Cancel()
{
MudDialog.Cancel();
}
}
}

View File

@@ -435,5 +435,22 @@ namespace Lantean.QBTMud.Helpers
await dialogService.ShowAsync<SubMenuDialog>(parent.Text, parameters, FormDialogOptions); await dialogService.ShowAsync<SubMenuDialog>(parent.Text, parameters, FormDialogOptions);
} }
public static async Task<QBitTorrentClient.Models.SearchPlugin?> ShowSearchPluginsDialog(this IDialogService dialogService)
{
var parameters = new DialogParameters
{
{ nameof(SearchPluginsDialog.Hashes), "" },
};
var result = await dialogService.ShowAsync<SearchPluginsDialog>("Search Plugins", parameters, FormDialogOptions);
var dialogResult = await result.Result;
if (dialogResult is null || dialogResult.Canceled || dialogResult.Data is null)
{
return null;
}
return (QBitTorrentClient.Models.SearchPlugin)dialogResult.Data;
}
} }
} }

View File

@@ -12,10 +12,10 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Blazored.LocalStorage" Version="4.5.0" /> <PackageReference Include="Blazored.LocalStorage" Version="4.5.0" />
<PackageReference Include="ByteSize" Version="2.1.2" /> <PackageReference Include="ByteSize" Version="2.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.5" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.10" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.5" PrivateAssets="all" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.10" PrivateAssets="all" />
<PackageReference Include="Microsoft.Extensions.Http" Version="9.0.5" /> <PackageReference Include="Microsoft.Extensions.Http" Version="9.0.10" />
<PackageReference Include="MudBlazor" Version="8.7.0" /> <PackageReference Include="MudBlazor" Version="8.13.0" />
<PackageReference Include="MudBlazor.ThemeManager" Version="3.0.0" /> <PackageReference Include="MudBlazor.ThemeManager" Version="3.0.0" />
</ItemGroup> </ItemGroup>

View File

@@ -9,6 +9,8 @@
} }
<MudDivider Vertical="true" /> <MudDivider Vertical="true" />
<MudText Class="pl-5 no-wrap">Search</MudText> <MudText Class="pl-5 no-wrap">Search</MudText>
<MudDivider Vertical="true" />
<MudIconButton Icon="@Icons.Material.Outlined.Settings" OnClick="ShowSearchPlugins" title="Search plugins" />
</MudToolBar> </MudToolBar>
<MudCard Elevation="1" Class="ml-4 mr-4 mb-4"> <MudCard Elevation="1" Class="ml-4 mr-4 mb-4">

View File

@@ -150,6 +150,11 @@ namespace Lantean.QBTMud.Pages
} }
} }
protected async Task ShowSearchPlugins()
{
await DialogService.ShowSearchPluginsDialog();
}
protected IEnumerable<ColumnDefinition<QBitTorrentClient.Models.SearchResult>> Columns => ColumnsDefinitions; protected IEnumerable<ColumnDefinition<QBitTorrentClient.Models.SearchResult>> Columns => ColumnsDefinitions;
public static List<ColumnDefinition<QBitTorrentClient.Models.SearchResult>> ColumnsDefinitions { get; } = public static List<ColumnDefinition<QBitTorrentClient.Models.SearchResult>> ColumnsDefinitions { get; } =