Files
Wino-Mail/Wino.Core/Requests/Bundles/TaskRequestBundle.cs
T

34 lines
1.2 KiB
C#
Raw Normal View History

2024-04-18 01:44:37 +02:00
using System;
using System.Threading.Tasks;
using MailKit.Net.Imap;
using Wino.Core.Domain.Interfaces;
2025-02-16 11:54:23 +01:00
namespace Wino.Core.Requests.Bundles;
2025-02-16 11:43:30 +01:00
2025-02-16 11:54:23 +01:00
public class ImapRequest
{
public Func<IImapClient, IRequestBase, Task> IntegratorTask { get; }
public IRequestBase Request { get; }
2026-02-15 11:27:30 +01:00
public bool RequiresConnectedClient { get; }
2024-04-18 01:44:37 +02:00
2026-02-15 11:27:30 +01:00
public ImapRequest(Func<IImapClient, IRequestBase, Task> integratorTask, IRequestBase request, bool requiresConnectedClient = true)
2024-04-18 01:44:37 +02:00
{
2025-02-16 11:54:23 +01:00
IntegratorTask = integratorTask;
Request = request;
2026-02-15 11:27:30 +01:00
RequiresConnectedClient = requiresConnectedClient;
2024-04-18 01:44:37 +02:00
}
2025-02-16 11:54:23 +01:00
}
2025-02-16 11:35:43 +01:00
2025-02-16 11:54:23 +01:00
public class ImapRequest<TRequestBaseType> : ImapRequest where TRequestBaseType : IRequestBase
{
2026-02-15 11:27:30 +01:00
public ImapRequest(Func<IImapClient, TRequestBaseType, Task> integratorTask, TRequestBaseType request, bool requiresConnectedClient = true)
: base((client, request) => integratorTask(client, (TRequestBaseType)request), request, requiresConnectedClient)
2025-02-16 11:43:30 +01:00
{
}
2025-02-16 11:35:43 +01:00
}
2025-02-16 11:54:23 +01:00
public record ImapRequestBundle(ImapRequest NativeRequest, IRequestBase Request, IUIChangeRequest UIChangeRequest) : IRequestBundle<ImapRequest>
{
public string BundleId { get; set; } = Guid.NewGuid().ToString();
}