mirror of
https://github.com/aliasvault/aliasvault.git
synced 2026-05-15 19:05:30 -04:00
180 lines
8.9 KiB
Plaintext
180 lines
8.9 KiB
Plaintext
@page "/settings/general"
|
|
@inherits MainBase
|
|
@inject LanguageService LanguageService
|
|
@using Microsoft.Extensions.Localization
|
|
@using AliasVault.Client.Services
|
|
|
|
<LayoutPageTitle>@Localizer["PageTitle"]</LayoutPageTitle>
|
|
|
|
<PageHeader
|
|
BreadcrumbItems="@BreadcrumbItems"
|
|
Title="@Localizer["PageTitle"]"
|
|
Description="@Localizer["PageDescription"]">
|
|
</PageHeader>
|
|
|
|
<div class="p-4 mb-4 mx-4 bg-white border border-gray-200 rounded-lg shadow-sm dark:border-gray-700 sm:p-6 dark:bg-gray-800">
|
|
<h3 class="mb-4 text-lg font-medium text-gray-900 dark:text-white">@Localizer["EmailSettingsTitle"]</h3>
|
|
|
|
<div class="mb-4">
|
|
<label for="defaultEmailDomain" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">@Localizer["DefaultEmailDomainLabel"]</label>
|
|
<select @bind="DefaultEmailDomain" @bind:after="UpdateDefaultEmailDomain" id="defaultEmailDomain" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500">
|
|
@if (ShowPrivateDomains)
|
|
{
|
|
<optgroup label="@Localizer["PrivateDomainsLabel"]">
|
|
@foreach (var domain in PrivateDomains)
|
|
{
|
|
<option value="@domain">@domain</option>
|
|
}
|
|
</optgroup>
|
|
}
|
|
<optgroup label="@Localizer["PublicDomainsLabel"]">
|
|
@foreach (var domain in PublicDomains)
|
|
{
|
|
<option value="@domain">@domain</option>
|
|
}
|
|
</optgroup>
|
|
</select>
|
|
<span class="block text-sm font-normal text-gray-500 dark:text-gray-400">
|
|
@Localizer["DefaultEmailDomainDescription"] @Localizer["DefaultEmailDomainDescriptionNote"] <a href="https://docs.aliasvault.net/misc/private-vs-public-email.html" class="text-primary-500 hover:text-primary-700 hover:underline" target="_blank" rel="noopener">@Localizer["DefaultEmailDomainLearnMore"]</a>.
|
|
</span>
|
|
</div>
|
|
|
|
<div class="flex items-center mb-4">
|
|
<input @bind="AutoEmailRefresh" @bind:after="UpdateAutoEmailRefresh" id="autoEmailRefresh" type="checkbox" class="w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600">
|
|
<label for="autoEmailRefresh" class="ml-2 text-sm font-medium text-gray-900 dark:text-gray-300">@Localizer["AutoEmailRefreshLabel"]</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="p-4 mb-4 mx-4 bg-white border border-gray-200 rounded-lg shadow-sm dark:border-gray-700 sm:p-6 dark:bg-gray-800">
|
|
<h3 class="mb-4 text-lg font-medium text-gray-900 dark:text-white">@Localizer["AppLanguageTitle"]</h3>
|
|
|
|
<div class="mb-4">
|
|
<label for="appLanguage" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">@Localizer["AppLanguageLabel"]</label>
|
|
<select @bind="AppLanguage" @bind:after="UpdateAppLanguage" id="appLanguage" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500">
|
|
@foreach (var language in LanguageService.GetSupportedLanguages())
|
|
{
|
|
<option value="@language.Key">@LanguageService.GetLanguageFlag(language.Key) @language.Value</option>
|
|
}
|
|
</select>
|
|
<span class="block text-sm font-normal text-gray-500 truncate dark:text-gray-400">
|
|
@Localizer["AppLanguageDescription"]
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="p-4 mx-4 mb-4 bg-white border border-gray-200 rounded-lg shadow-sm dark:border-gray-700 sm:p-6 dark:bg-gray-800">
|
|
<h3 class="mb-4 text-lg font-medium text-gray-900 dark:text-white">@Localizer["AliasSettingsTitle"]</h3>
|
|
|
|
<div class="mb-4">
|
|
<label for="defaultIdentityLanguage" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">@Localizer["AliasGenerationLanguageLabel"]</label>
|
|
<select @bind="DefaultIdentityLanguage" @bind:after="UpdateDefaultIdentityLanguage" id="defaultIdentityLanguage" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500">
|
|
<option value="en">@Localizer["EnglishOption"]</option>
|
|
<option value="nl">@Localizer["DutchOption"]</option>
|
|
</select>
|
|
<span class="block text-sm font-normal text-gray-500 truncate dark:text-gray-400">
|
|
@Localizer["AliasGenerationLanguageDescription"]
|
|
</span>
|
|
</div>
|
|
|
|
<div class="mb-4">
|
|
<label for="defaultIdentityGender" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">@Localizer["AliasGenerationGenderLabel"]</label>
|
|
<select @bind="DefaultIdentityGender" @bind:after="UpdateDefaultIdentityGender" id="defaultIdentityGender" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500">
|
|
<option value="random">@Localizer["RandomOption"]</option>
|
|
<option value="male">@Localizer["MaleOption"]</option>
|
|
<option value="female">@Localizer["FemaleOption"]</option>
|
|
</select>
|
|
<span class="block text-sm font-normal text-gray-500 truncate dark:text-gray-400">
|
|
@Localizer["AliasGenerationGenderDescription"]
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="p-4 mx-4 mb-4 bg-white border border-gray-200 rounded-lg shadow-sm dark:border-gray-700 sm:p-6 dark:bg-gray-800">
|
|
<h3 class="mb-4 text-lg font-medium text-gray-900 dark:text-white">@Localizer["PasswordSettingsTitle"]</h3>
|
|
|
|
<DefaultPasswordSettings />
|
|
</div>
|
|
|
|
@code {
|
|
private IStringLocalizer Localizer => LocalizerFactory.Create("Pages.Main.Settings.General", "AliasVault.Client");
|
|
|
|
private List<string> PrivateDomains => Config.PrivateEmailDomains;
|
|
private List<string> PublicDomains => Config.PublicEmailDomains;
|
|
private bool ShowPrivateDomains => PrivateDomains.Count > 0 && !(PrivateDomains.Count == 1 && PrivateDomains[0] == "DISABLED.TLD");
|
|
|
|
private string DefaultEmailDomain { get; set; } = string.Empty;
|
|
private bool AutoEmailRefresh { get; set; }
|
|
private string DefaultIdentityLanguage { get; set; } = string.Empty;
|
|
private string DefaultIdentityGender { get; set; } = string.Empty;
|
|
private string AppLanguage { get; set; } = string.Empty;
|
|
|
|
/// <inheritdoc />
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
await base.OnInitializedAsync();
|
|
BreadcrumbItems.Add(new BreadcrumbItem { DisplayName = Localizer["BreadcrumbTitle"] });
|
|
|
|
DefaultEmailDomain = DbService.Settings.DefaultEmailDomain;
|
|
if (DefaultEmailDomain == string.Empty)
|
|
{
|
|
if (PrivateDomains.Count > 0)
|
|
{
|
|
DefaultEmailDomain = PrivateDomains[0];
|
|
}
|
|
else if (PublicDomains.Count > 0)
|
|
{
|
|
DefaultEmailDomain = PublicDomains[0];
|
|
}
|
|
}
|
|
AutoEmailRefresh = DbService.Settings.AutoEmailRefresh;
|
|
DefaultIdentityLanguage = DbService.Settings.DefaultIdentityLanguage;
|
|
DefaultIdentityGender = DbService.Settings.DefaultIdentityGender;
|
|
AppLanguage = DbService.Settings.AppLanguage;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the default email domain.
|
|
/// </summary>
|
|
private async Task UpdateDefaultEmailDomain()
|
|
{
|
|
await DbService.Settings.SetDefaultEmailDomain(DefaultEmailDomain);
|
|
StateHasChanged();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the auto email refresh setting.
|
|
/// </summary>
|
|
private async Task UpdateAutoEmailRefresh()
|
|
{
|
|
await DbService.Settings.SetAutoEmailRefresh(AutoEmailRefresh);
|
|
StateHasChanged();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the default identity language setting.
|
|
/// </summary>
|
|
private async Task UpdateDefaultIdentityLanguage()
|
|
{
|
|
await DbService.Settings.SetDefaultIdentityLanguage(DefaultIdentityLanguage);
|
|
StateHasChanged();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the default identity gender setting.
|
|
/// </summary>
|
|
private async Task UpdateDefaultIdentityGender()
|
|
{
|
|
await DbService.Settings.SetDefaultIdentityGender(DefaultIdentityGender);
|
|
StateHasChanged();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the app language setting.
|
|
/// </summary>
|
|
private async Task UpdateAppLanguage()
|
|
{
|
|
await LanguageService.SetLanguageAsync(AppLanguage);
|
|
StateHasChanged();
|
|
}
|
|
}
|