Initial commit.

This commit is contained in:
Burak Kaan Köse
2024-04-18 01:44:37 +02:00
parent 524ea4c0e1
commit 12d3814626
671 changed files with 77295 additions and 0 deletions

View File

@@ -0,0 +1,93 @@
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
using Wino.Core.Domain;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Navigation;
using Wino.Core.Domain.Models.Reader;
using Wino.Core.Messages.Mails;
namespace Wino.Mail.ViewModels
{
public partial class SignatureManagementPageViewModel : BaseViewModel
{
public Func<Task<string>> GetHTMLBodyFunction;
public Func<Task<string>> GetTextBodyFunction;
public List<EditorToolbarSection> ToolbarSections { get; set; } = new List<EditorToolbarSection>()
{
new EditorToolbarSection(){ SectionType = EditorToolbarSectionType.Format },
new EditorToolbarSection(){ SectionType = EditorToolbarSectionType.Insert },
};
[ObservableProperty]
private EditorToolbarSection selectedToolbarSection;
[ObservableProperty]
private bool isSignatureEnabled;
public MailAccount Account { get; set; }
public AsyncRelayCommand SaveSignatureCommand { get; set; }
public INativeAppService NativeAppService { get; }
private readonly ISignatureService _signatureService;
private readonly IAccountService _accountService;
public SignatureManagementPageViewModel(IDialogService dialogService,
INativeAppService nativeAppService,
ISignatureService signatureService,
IAccountService accountService) : base(dialogService)
{
SelectedToolbarSection = ToolbarSections[0];
NativeAppService = nativeAppService;
_signatureService = signatureService;
_accountService = accountService;
SaveSignatureCommand = new AsyncRelayCommand(SaveSignatureAsync);
}
public override async void OnNavigatedTo(NavigationMode mode, object parameters)
{
base.OnNavigatedTo(mode, parameters);
if (parameters is Guid accountId)
Account = await _accountService.GetAccountAsync(accountId);
if (Account != null)
{
var accountSignature = await _signatureService.GetAccountSignatureAsync(Account.Id);
IsSignatureEnabled = accountSignature != null;
if (IsSignatureEnabled)
Messenger.Send(new HtmlRenderingRequested(accountSignature.HtmlBody));
else
Messenger.Send(new HtmlRenderingRequested(string.Empty)); // To get the theme changes. Render empty html.
}
}
private async Task SaveSignatureAsync()
{
if (IsSignatureEnabled)
{
var newSignature = Regex.Unescape(await GetHTMLBodyFunction());
await _signatureService.UpdateAccountSignatureAsync(Account.Id, newSignature);
DialogService.InfoBarMessage(Translator.Info_SignatureSavedTitle, Translator.Info_SignatureSavedMessage, Core.Domain.Enums.InfoBarMessageType.Success);
}
else
{
await _signatureService.DeleteAccountSignatureAssignment(Account.Id);
DialogService.InfoBarMessage(Translator.Info_SignatureDisabledTitle, Translator.Info_SignatureDisabledMessage, Core.Domain.Enums.InfoBarMessageType.Success);
}
}
}
}