Fixed web rendering issues

This commit is contained in:
2025-04-23 11:55:46 +03:00
parent 2d319f3d34
commit 0493dfaeb4
7 changed files with 99 additions and 43 deletions

View File

@@ -28,18 +28,27 @@ public class PluginRepository : IPluginRepository
{ "operatingSystem", operatingSystem.ToString() },
{ "includeNotApproved", includeNotApproved.ToString() }
});
HttpResponseMessage response = await _httpClient.GetAsync(url);
if (!response.IsSuccessStatusCode)
try
{
HttpResponseMessage response = await _httpClient.GetAsync(url);
if (!response.IsSuccessStatusCode)
{
return [];
}
string content = await response.Content.ReadAsStringAsync();
List<OnlinePlugin> plugins = await JsonManager.ConvertFromJson<List<OnlinePlugin>>(content);
return plugins;
}
catch (HttpRequestException exception)
{
_logger.LogException(exception,this);
return [];
}
string content = await response.Content.ReadAsStringAsync();
List<OnlinePlugin> plugins = await JsonManager.ConvertFromJson<List<OnlinePlugin>>(content);
return plugins;
}
public async Task<OnlinePlugin?> GetPluginById(int pluginId)
@@ -50,17 +59,27 @@ public class PluginRepository : IPluginRepository
{ "pluginId", pluginId.ToString() },
{ "includeNotApproved", "false" }
});
HttpResponseMessage response = await _httpClient.GetAsync(url);
if (!response.IsSuccessStatusCode)
try
{
HttpResponseMessage response = await _httpClient.GetAsync(url);
if (!response.IsSuccessStatusCode)
{
return null;
}
string content = await response.Content.ReadAsStringAsync();
OnlinePlugin plugin = await JsonManager.ConvertFromJson<OnlinePlugin>(content);
return plugin;
}
catch (HttpRequestException exception)
{
_logger.LogException(exception, this);
return null;
}
string content = await response.Content.ReadAsStringAsync();
OnlinePlugin plugin = await JsonManager.ConvertFromJson<OnlinePlugin>(content);
return plugin;
}
public async Task<OnlinePlugin?> GetPluginByName(string pluginName, int operatingSystem, bool includeNotApproved)
@@ -72,18 +91,28 @@ public class PluginRepository : IPluginRepository
{ "operatingSystem", operatingSystem.ToString() },
{ "includeNotApproved", includeNotApproved.ToString() }
});
HttpResponseMessage response = await _httpClient.GetAsync(url);
if (!response.IsSuccessStatusCode)
try
{
_logger.Log($"Plugin {pluginName} not found");
HttpResponseMessage response = await _httpClient.GetAsync(url);
if (!response.IsSuccessStatusCode)
{
_logger.Log($"Plugin {pluginName} not found");
return null;
}
string content = await response.Content.ReadAsStringAsync();
OnlinePlugin plugin = await JsonManager.ConvertFromJson<OnlinePlugin>(content);
return plugin;
}
catch (HttpRequestException exception)
{
_logger.LogException(exception, this);
return null;
}
string content = await response.Content.ReadAsStringAsync();
OnlinePlugin plugin = await JsonManager.ConvertFromJson<OnlinePlugin>(content);
return plugin;
}
public async Task<List<OnlineDependencyInfo>> GetDependenciesForPlugin(int pluginId)
@@ -93,18 +122,26 @@ public class PluginRepository : IPluginRepository
{
{ "pluginId", pluginId.ToString() }
});
HttpResponseMessage response = await _httpClient.GetAsync(url);
if(!response.IsSuccessStatusCode)
try
{
_logger.Log($"Failed to get dependencies for plugin with ID {pluginId}");
HttpResponseMessage response = await _httpClient.GetAsync(url);
if(!response.IsSuccessStatusCode)
{
_logger.Log($"Failed to get dependencies for plugin with ID {pluginId}");
return [];
}
string content = await response.Content.ReadAsStringAsync();
List<OnlineDependencyInfo> dependencies = await JsonManager.ConvertFromJson<List<OnlineDependencyInfo>>(content);
return dependencies;
}catch(HttpRequestException exception)
{
_logger.LogException(exception, this);
return [];
}
string content = await response.Content.ReadAsStringAsync();
List<OnlineDependencyInfo> dependencies = await JsonManager.ConvertFromJson<List<OnlineDependencyInfo>>(content);
return dependencies;
}
private string CreateUrlWithQueryParams(string baseUrl, string endpoint, Dictionary<string, string> queryParams)

View File

@@ -6,6 +6,10 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.4" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DiscordBotCore\DiscordBotCore.csproj" />
</ItemGroup>

View File

@@ -1,19 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<OutputType>Library</OutputType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Discord.Net" Version="3.17.2" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.3" />
</ItemGroup>
<ItemGroup>
<UpToDateCheckInput Remove="UI\Controls\MessageBox.axaml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DiscordBotCore.Configuration\DiscordBotCore.Configuration.csproj" />
<ProjectReference Include="..\DiscordBotCore.PluginCore\DiscordBotCore.PluginCore.csproj" />

View File

@@ -4,4 +4,16 @@
<h1>Hello, world!</h1>
Welcome to your new app.
<button type="button" class="btn" @onclick="() => ClickTest(2)">Name</button>
Welcome to your new app.
@code {
private void ClickTest(int i)
{
Console.WriteLine($"Clicked {i}");
}
}

View File

@@ -1,4 +1,6 @@
@page "/plugins/local"
@rendermode InteractiveServer
@using DiscordBotCore.Logging
@using DiscordBotCore.PluginManagement
@using DiscordBotCore.PluginManagement.Models

View File

@@ -1,9 +1,11 @@
@page "/plugins/online"
@rendermode InteractiveServer
@using DiscordBotCore.Logging
@using DiscordBotCore.PluginManagement
<h3>Available Plugins</h3>
<h3>Available Plugins</h3>
@if (_onlinePlugins.Any())
{
<table class="table table-bordered">
@@ -25,7 +27,7 @@
<td>@plugin.Author</td>
<td>@plugin.Version</td>
<td>
<button type="button" class="btn btn-primary" @onmousedown="async () => await InstallPlugin(plugin.Id)">Download</button>
<button type="button" class="btn" @onclick="async () => await InstallPlugin(plugin.Id)">Download</button>
</td>
</tr>
}
@@ -104,6 +106,9 @@ else
};
_onlinePlugins.Add(onlinePlugin);
}
Logger.Log($"Found {_onlinePlugins.Count} online plugins.", this);
StateHasChanged();
}
private async Task InstallPlugin(int pluginId)
@@ -128,6 +133,7 @@ else
Logger.Log($"Plugin {pluginData.Name} installed successfully.", this);
CloseInstallPercentageModal();
StateHasChanged();
}
private void CloseInstallPercentageModal()
@@ -145,4 +151,4 @@ else
public string Author { get; set; }
public string Version { get; set; }
}
}
}

View File

@@ -7,6 +7,7 @@ var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
builder.AddDiscordBotComponents();
var app = builder.Build();
// Configure the HTTP request pipeline.