btcpayserver-plugin-builder/PluginBuilder/Util/Extensions/PluginSettingExtensions.cs
2026-03-31 19:36:40 +02:00

72 lines
3.1 KiB
C#

using PluginBuilder.DataModels;
using PluginBuilder.Services;
using PluginBuilder.ViewModels;
using PluginBuilder.ViewModels.Admin;
namespace PluginBuilder.Util.Extensions;
public static class PluginSettingExtensions
{
public static PluginSettings ToPluginSettings(this PluginSettingViewModel viewModel)
{
return new PluginSettings
{
PluginTitle = viewModel.PluginTitle,
Description = viewModel.Description,
Documentation = viewModel.Documentation ?? string.Empty,
GitRepository = viewModel.GitRepository,
GitRef = viewModel.GitRef ?? string.Empty,
PluginDirectory = viewModel.PluginDirectory ?? string.Empty,
BuildConfig = viewModel.BuildConfig ?? string.Empty,
Logo = viewModel.LogoUrl,
VideoUrl = viewModel.VideoUrl,
Images = viewModel.ImagesUrl,
RequireGPGSignatureForRelease = viewModel.RequireGPGSignatureForRelease
};
}
public static PluginSettingViewModel ToPluginSettingViewModel(this PluginSettings settings)
{
return new PluginSettingViewModel
{
PluginTitle = settings.PluginTitle,
Description = settings.Description,
Documentation = settings.Documentation ?? string.Empty,
GitRepository = settings.GitRepository,
GitRef = settings.GitRef ?? string.Empty,
PluginDirectory = settings.PluginDirectory ?? string.Empty,
BuildConfig = settings.BuildConfig ?? string.Empty,
LogoUrl = settings.Logo,
VideoUrl = settings.VideoUrl,
ImagesUrl = settings.Images ?? [],
RequireGPGSignatureForRelease = settings.RequireGPGSignatureForRelease
};
}
public static ImportReviewViewModel UpdatePluginReviewerData(this ImportReviewViewModel model, AccountSettings settings)
{
if (!string.IsNullOrEmpty(settings.Github))
{
var githubUserName = settings.Github.Trim().TrimStart('@').Trim('/');
var safe = Uri.EscapeDataString(githubUserName);
model.ReviewerName = githubUserName;
model.ReviewerProfileUrl = $"{ExternalProfileUrls.GithubBaseUrl}{safe}";
model.ReviewerAvatarUrl = string.Format(ExternalProfileUrls.GithubAvatarFormat, safe, 48);
}
else if (settings.Nostr != null && !string.IsNullOrEmpty(settings.Nostr.Npub))
{
var nostr = settings.Nostr;
model.ReviewerName = string.IsNullOrWhiteSpace(nostr.Profile?.Name) ? $"{nostr.Npub[..8]}…" : nostr.Profile.Name;
model.ReviewerProfileUrl = string.Format(ExternalProfileUrls.PrimalProfileFormat, Uri.EscapeDataString(nostr.Npub));
model.ReviewerAvatarUrl = !string.IsNullOrWhiteSpace(nostr.Profile?.PictureUrl) &&
Uri.TryCreate(nostr.Profile.PictureUrl, UriKind.Absolute, out var avatarUri) &&
(avatarUri.Scheme == Uri.UriSchemeHttp || avatarUri.Scheme == Uri.UriSchemeHttps)
? nostr.Profile.PictureUrl
: null;
}
return model;
}
}