72 lines
3.1 KiB
C#
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;
|
|
}
|
|
}
|