UIMessage communication. Single instancing for server and re-connection mechanism on suspension.

This commit is contained in:
Burak Kaan Köse
2024-07-17 22:36:10 +02:00
parent ad1c7e1fd3
commit 329eae3a25
87 changed files with 412 additions and 321 deletions

View File

@@ -1,7 +1,7 @@
using System;
using Wino.Core.Domain.Models.MailItem;
namespace Wino.Messages.Client.Accounts
namespace Wino.Messaging.Client.Accounts
{
/// <summary>
/// When menu item for the account is requested to be extended.

View File

@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
namespace Wino.Messages.Client.Accounts
namespace Wino.Messaging.Client.Accounts
{
/// <summary>
/// Emitted when account menu items are reordered.

View File

@@ -1,4 +1,4 @@
namespace Wino.Messages.Client.Accounts
namespace Wino.Messaging.Client.Accounts
{
/// <summary>
/// When a full menu refresh for accounts menu is requested.

View File

@@ -1,6 +1,6 @@
using System;
namespace Wino.Messages.Client.Authorization
namespace Wino.Messaging.Client.Authorization
{
/// <summary>
/// When Google authentication makes a callback to the app via protocol activation to the app.

View File

@@ -1,4 +1,4 @@
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// When rendered html is requested to cancel.

View File

@@ -1,4 +1,4 @@
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// When reset all mail selections requested.

View File

@@ -1,6 +1,6 @@
using Wino.Core.Domain.Models.Reader;
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// When a new composing requested.

View File

@@ -1,4 +1,4 @@
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// When rendering frame should be disposed.

View File

@@ -1,4 +1,4 @@
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// When existing a new html is requested to be rendered due to mail selection or signature.

View File

@@ -1,6 +1,6 @@
using System;
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// When IMAP setup dialog requestes back breadcrumb navigation.

View File

@@ -1,6 +1,6 @@
using Wino.Core.Domain.Entities;
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// When user asked to dismiss IMAP setup dialog.

View File

@@ -1,6 +1,6 @@
using System;
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// When IMAP setup dialog breadcrumb navigation requested.

View File

@@ -1,6 +1,6 @@
using System;
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// When a IMailItem needs to be navigated (or selected)

View File

@@ -2,7 +2,7 @@
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Navigation;
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// Selects the given FolderMenuItem in the shell folders list.

View File

@@ -1,6 +1,6 @@
using System;
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
public record RefreshUnreadCountsMessage(Guid AccountId);
}

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// When mail save as PDF requested.

View File

@@ -1,4 +1,4 @@
namespace Wino.Messages.Client.Mails
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// When selected mail count is changed.

View File

@@ -1,4 +1,4 @@
namespace Wino.Messages.Client.Navigation
namespace Wino.Messaging.Client.Navigation
{
/// <summary>
/// When back navigation is requested for breadcrumb pages.

View File

@@ -1,6 +1,6 @@
using Wino.Core.Domain.Enums;
namespace Wino.Messages.Client.Navigation
namespace Wino.Messaging.Client.Navigation
{
/// <summary>
/// When Breadcrumb control navigation requested.

View File

@@ -1,4 +1,4 @@
namespace Wino.Messages.Client.Navigation
namespace Wino.Messaging.Client.Navigation
{
/// <summary>
/// Navigates to settings page.

View File

@@ -1,4 +1,4 @@
namespace Wino.Messages.Client.Shell
namespace Wino.Messaging.Client.Shell
{
/// <summary>
/// When the application theme changed.

View File

@@ -1,7 +1,7 @@
using System.Collections.Generic;
using Wino.Core.Domain.Entities;
namespace Wino.Messages.Client.Shell
namespace Wino.Messaging.Client.Shell
{
/// <summary>
/// When

View File

@@ -1,7 +1,7 @@
using System;
using Wino.Core.Domain.Enums;
namespace Wino.Messages.Client.Shell
namespace Wino.Messaging.Client.Shell
{
/// <summary>
/// For displaying right sliding notification message in shell.

View File

@@ -1,4 +1,4 @@
namespace Wino.Messages.Client.Shell
namespace Wino.Messaging.Client.Shell
{
/// <summary>
/// When application language is updated.

View File

@@ -1,4 +1,4 @@
namespace Wino.Messages.Client.Shell
namespace Wino.Messaging.Client.Shell
{
public class MailtoProtocolMessageRequested { }
}

View File

@@ -1,6 +1,6 @@
using Wino.Core.Domain.Enums;
namespace Wino.Messages.Client.Shell
namespace Wino.Messaging.Client.Shell
{
/// <summary>
/// When navigation pane mode is changed.

View File

@@ -1,4 +1,4 @@
namespace Wino.Messages.Client.Shell
namespace Wino.Messaging.Client.Shell
{
/// <summary>
/// When reading mail state or reader pane narrowed state is changed.

View File

@@ -1,7 +1,7 @@
using System;
using Wino.Core.Domain.Enums;
namespace Wino.Messages.Client.Synchronization
namespace Wino.Messaging.Client.Synchronization
{
public record AccountSynchronizationCompleted(Guid AccountId, SynchronizationCompletedState Result, Guid? SynchronizationTrackingId);
}

View File

@@ -1,7 +1,7 @@
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
namespace Wino.Messages.Client.Synchronization
namespace Wino.Messaging.Client.Synchronization
{
/// <summary>
/// Emitted when synchronizer state is updated.

View File

@@ -1,6 +1,6 @@
using Wino.Core.Domain.Models.Synchronization;
namespace Wino.Messages.Client.Synchronization
namespace Wino.Messaging.Client.Synchronization
{
/// <summary>
/// Triggers a new synchronization if possible.

View File

@@ -0,0 +1,8 @@
namespace Wino.Messaging.Enums
{
public enum MessageType
{
UIMessage, // For database changes that needs to be reflected in the UI.
ServerAction, //
}
}

View File

@@ -0,0 +1,9 @@
namespace Wino.Messaging
{
public static class MessageConstants
{
public const string MessageTypeKey = "MessageType";
public const string MessageDataKey = "MessageData";
public const string MessageDataTypeKey = "MessageDataType";
}
}

View File

@@ -1,7 +1,6 @@
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Interfaces;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record AccountCreatedMessage(MailAccount Account) : IServerMessage;
public record AccountCreatedMessage(MailAccount Account) : ServerMessageBase<AccountCreatedMessage>;
}

View File

@@ -1,7 +1,6 @@
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Interfaces;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record AccountRemovedMessage(MailAccount Account) : IServerMessage;
public record AccountRemovedMessage(MailAccount Account) : ServerMessageBase<AccountRemovedMessage>;
}

View File

@@ -1,7 +1,6 @@
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Interfaces;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record AccountUpdatedMessage(MailAccount Account) : IServerMessage;
public record AccountUpdatedMessage(MailAccount Account) : ServerMessageBase<AccountUpdatedMessage>;
}

View File

@@ -1,7 +1,6 @@
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Interfaces;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record DraftCreated(MailCopy DraftMail, MailAccount Account) : IServerMessage;
public record DraftCreated(MailCopy DraftMail, MailAccount Account) : ServerMessageBase<DraftCreated>;
}

View File

@@ -1,7 +1,6 @@
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Interfaces;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record DraftFailed(MailCopy DraftMail, MailAccount Account) : IServerMessage;
public record DraftFailed(MailCopy DraftMail, MailAccount Account) : ServerMessageBase<DraftFailed>;
}

View File

@@ -1,6 +1,4 @@
using Wino.Core.Domain.Interfaces;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record DraftMapped(string LocalDraftCopyId, string RemoteDraftCopyId) : IServerMessage;
public record DraftMapped(string LocalDraftCopyId, string RemoteDraftCopyId) : ServerMessageBase<DraftMapped>;
}

View File

@@ -1,7 +1,6 @@
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Folders;
using Wino.Core.Domain.Models.Folders;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record FolderRenamed(IMailItemFolder MailItemFolder) : IServerMessage;
public record FolderRenamed(IMailItemFolder MailItemFolder) : ServerMessageBase<FolderRenamed>;
}

View File

@@ -1,7 +1,6 @@
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Folders;
using Wino.Core.Domain.Models.Folders;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record FolderSynchronizationEnabled(IMailItemFolder MailItemFolder) : IServerMessage;
public record FolderSynchronizationEnabled(IMailItemFolder MailItemFolder) : ServerMessageBase<FolderSynchronizationEnabled>;
}

View File

@@ -1,7 +1,6 @@
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Interfaces;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record MailAddedMessage(MailCopy AddedMail) : IServerMessage;
public record MailAddedMessage(MailCopy AddedMail) : ServerMessageBase<MailAddedMessage>;
}

View File

@@ -1,7 +1,6 @@
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Interfaces;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record MailDownloadedMessage(MailCopy DownloadedMail) : IServerMessage;
public record MailDownloadedMessage(MailCopy DownloadedMail) : ServerMessageBase<MailDownloadedMessage>;
}

View File

@@ -1,7 +1,6 @@
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Interfaces;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record MailRemovedMessage(MailCopy RemovedMail) : IServerMessage;
public record MailRemovedMessage(MailCopy RemovedMail) : ServerMessageBase<MailRemovedMessage>;
}

View File

@@ -1,7 +1,6 @@
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Interfaces;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record MailUpdatedMessage(MailCopy UpdatedMail) : IServerMessage;
public record MailUpdatedMessage(MailCopy UpdatedMail) : ServerMessageBase<MailUpdatedMessage>;
}

View File

@@ -1,7 +1,6 @@
using System;
using Wino.Core.Domain.Interfaces;
namespace Wino.Messages.Server
namespace Wino.Messaging.Server
{
public record MergedInboxRenamed(Guid MergedInboxId, string NewName) : IServerMessage;
public record MergedInboxRenamed(Guid MergedInboxId, string NewName) : ServerMessageBase<MergedInboxRenamed>;
}

View File

@@ -0,0 +1,6 @@
using Wino.Core.Domain.Interfaces;
namespace Wino.Messaging.Server
{
public record ServerMessageBase<T> : IServerMessage { }
}

View File

@@ -14,6 +14,7 @@
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="System.Text.Json" Version="8.0.4" />
</ItemGroup>
</Project>