settings_re9

This commit is contained in:
lincube
2026-03-14 23:52:26 +08:00
parent 689be7b585
commit 85b70c4a8a
20 changed files with 1190 additions and 146 deletions

View File

@@ -39,6 +39,10 @@ public sealed record WeatherSettingsState(
public sealed record RegionSettingsState(string LanguageCode, string? TimeZoneId);
public sealed record UpdateSettingsState(bool AutoCheckUpdates, bool IncludePrereleaseUpdates, string UpdateChannel);
public sealed record PluginManagementSettingsState(IReadOnlyList<string> DisabledPluginIds);
public sealed record PluginMarketDependencyInfo(
string Id,
string Version,
string AssemblyName);
public sealed record PluginMarketPluginInfo(
string Id,
string Name,
@@ -55,6 +59,7 @@ public sealed record PluginMarketPluginInfo(
string HomepageUrl,
string RepositoryUrl,
IReadOnlyList<string> Tags,
IReadOnlyList<PluginMarketDependencyInfo> Dependencies,
DateTimeOffset PublishedAt,
DateTimeOffset UpdatedAt);
public sealed record PluginMarketIndexResult(

View File

@@ -725,6 +725,12 @@ internal sealed class PluginMarketSettingsService : IPluginMarketSettingsService
entry.HomepageUrl,
entry.RepositoryUrl,
entry.Tags,
entry.SharedContracts
.Select(contract => new PluginMarketDependencyInfo(
contract.Id,
contract.Version,
contract.AssemblyName))
.ToArray(),
entry.PublishedAt,
entry.UpdatedAt);
})

View File

@@ -5,6 +5,7 @@ using System.Reflection;
using Avalonia.Controls;
using LanMountainDesktop.PluginSdk;
using LanMountainDesktop.Plugins;
using LanMountainDesktop.Services.PluginMarket;
using LanMountainDesktop.Services;
using LanMountainDesktop.ViewModels;
using LanMountainDesktop.Views.SettingsPages;
@@ -180,6 +181,8 @@ internal sealed class SettingsPageRegistry : ISettingsPageRegistry, IDisposable
services.AddSingleton(_localizationService);
services.AddSingleton<ILocationService>(_ => HostLocationServiceProvider.GetOrCreate());
services.AddSingleton<WeatherLocationRefreshService>();
services.AddSingleton<AirAppMarketIconService>();
services.AddSingleton<AirAppMarketReadmeService>();
var pluginRuntime = _pluginRuntimeAccessor();
if (pluginRuntime is not null)