mirror of
https://github.com/RedWizardsLab/EchoHub.git
synced 2026-09-04 08:36:11 +02:00
deploy: 1f4af9a543
This commit is contained in:
@@ -225,6 +225,39 @@ Wires UI events to service calls and connection events to UI updates.</p>
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_AppOrchestrator_PendingUpdate_" data-uid="EchoHub.Client.AppOrchestrator.PendingUpdate*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_AppOrchestrator_PendingUpdate" data-uid="EchoHub.Client.AppOrchestrator.PendingUpdate">
|
||||
PendingUpdate
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/AppOrchestrator.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Set when the user confirms an update. The host must run this after the Terminal.Gui main
|
||||
loop exits (console restored), so the updater's in-place restart doesn't fight the TUI.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public Func<Task>? PendingUpdate { get; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a><<span class="xref">Task</span>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="methods">Methods
|
||||
</h2>
|
||||
|
||||
|
||||
@@ -679,6 +679,36 @@ Class CommandHandler <a class="header-action link-secondary" title="View source
|
||||
|
||||
|
||||
|
||||
<h3 id="EchoHub_Client_Commands_CommandHandler_OnRoomInfo" data-uid="EchoHub.Client.Commands.CommandHandler.OnRoomInfo">
|
||||
OnRoomInfo
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Commands/CommandHandler.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public event Func<Task>? OnRoomInfo</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Event Type</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a><<span class="xref">Task</span>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="EchoHub_Client_Commands_CommandHandler_OnSendFile" data-uid="EchoHub.Client.Commands.CommandHandler.OnSendFile">
|
||||
OnSendFile
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Commands/CommandHandler.cs"><i class="bi bi-code-slash"></i></a>
|
||||
|
||||
@@ -247,6 +247,72 @@ user's machine — the server never sees them.</p>
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_Config_SavedServer_LastReadMessages_" data-uid="EchoHub.Client.Config.SavedServer.LastReadMessages*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_Config_SavedServer_LastReadMessages" data-uid="EchoHub.Client.Config.SavedServer.LastReadMessages">
|
||||
LastReadMessages
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Config/ClientConfig.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Last message the user has read per channel (message id as string), persisted so
|
||||
unread counts, @mention highlights, and the "new messages" marker survive restarts.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public Dictionary<string, string> LastReadMessages { get; set; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">Dictionary</span><<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_Config_SavedServer_LeftChannels_" data-uid="EchoHub.Client.Config.SavedServer.LeftChannels*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_Config_SavedServer_LeftChannels" data-uid="EchoHub.Client.Config.SavedServer.LeftChannels">
|
||||
LeftChannels
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Config/ClientConfig.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Channels the user explicitly left with /leave. Excluded from the automatic
|
||||
join-all-channels pass at connect until the user joins them again.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public List<string> LeftChannels { get; set; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">List</span><<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_Config_SavedServer_Name_" data-uid="EchoHub.Client.Config.SavedServer.Name*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_Config_SavedServer_Name" data-uid="EchoHub.Client.Config.SavedServer.Name">
|
||||
|
||||
@@ -583,6 +583,44 @@ key-derivation salt). Returns null when the channel doesn't exist.</p>
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_Services_ApiClient_GetChannelMetaAsync_" data-uid="EchoHub.Client.Services.ApiClient.GetChannelMetaAsync*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_Services_ApiClient_GetChannelMetaAsync_System_String_" data-uid="EchoHub.Client.Services.ApiClient.GetChannelMetaAsync(System.String)">
|
||||
GetChannelMetaAsync(string)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/ApiClient.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Fetches a channel's human-facing metadata (message count, unique posters, estimated
|
||||
size, created date, room id) for the <code>/meta</code> command. Returns null if it doesn't exist.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public Task<ChannelMetaDto?> GetChannelMetaAsync(string channelName)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>channelName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">Task</span><<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs">ChannelMetaDto</a>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_Services_ApiClient_GetChannelsAsync_" data-uid="EchoHub.Client.Services.ApiClient.GetChannelsAsync*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_Services_ApiClient_GetChannelsAsync" data-uid="EchoHub.Client.Services.ApiClient.GetChannelsAsync">
|
||||
|
||||
@@ -221,6 +221,40 @@ Class UpdateChecker <a class="header-action link-secondary" title="View source"
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_Services_UpdateChecker_PendingUpdate_" data-uid="EchoHub.Client.Services.UpdateChecker.PendingUpdate*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_Services_UpdateChecker_PendingUpdate" data-uid="EchoHub.Client.Services.UpdateChecker.PendingUpdate">
|
||||
PendingUpdate
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/UpdateChecker.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Set when the user confirms an update. The host runs this <b>after</b> the Terminal.Gui
|
||||
main loop has exited and the console is restored, so the library's in-place restart doesn't
|
||||
deadlock against a TUI that still owns the console.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public Func<Task>? PendingUpdate { get; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a><<span class="xref">Task</span>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="methods">Methods
|
||||
</h2>
|
||||
|
||||
|
||||
@@ -213,6 +213,41 @@ Class Theme <a class="header-action link-secondary" title="View source" href="h
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_Themes_Theme_Border_" data-uid="EchoHub.Client.Themes.Theme.Border*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_Themes_Theme_Border" data-uid="EchoHub.Client.Themes.Theme.Border">
|
||||
Border
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Themes/Theme.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Colors for the main-window frame borders (and their titles). Null falls back
|
||||
to <a class="xref" href="EchoHub.Client.Themes.Theme.html#EchoHub_Client_Themes_Theme_Base">Base</a>. Lets themes tone borders down independently of text —
|
||||
e.g. the transparent themes use a dim gray for a subtler, glassy look.
|
||||
Supports hex values ("#6E6E6E") as well as named colors.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public ThemeColors? Border { get; set; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="EchoHub.Client.Themes.ThemeColors.html">ThemeColors</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_Themes_Theme_Dialog_" data-uid="EchoHub.Client.Themes.Theme.Dialog*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_Themes_Theme_Dialog" data-uid="EchoHub.Client.Themes.Theme.Dialog">
|
||||
|
||||
@@ -214,6 +214,37 @@ Class ChatColors <a class="header-action link-secondary" title="View source" hr
|
||||
|
||||
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatColors_DateRuleAttr" data-uid="EchoHub.Client.UI.Chat.ChatColors.DateRuleAttr">
|
||||
DateRuleAttr
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatColors.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Horizontal date-separator rules (── Wed, Jul 16 ──…).</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public static readonly Attribute DateRuleAttr</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Field Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">Attribute</span></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatColors_EmbedBorderAttr" data-uid="EchoHub.Client.UI.Chat.ChatColors.EmbedBorderAttr">
|
||||
EmbedBorderAttr
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatColors.cs"><i class="bi bi-code-slash"></i></a>
|
||||
@@ -424,6 +455,37 @@ Class ChatColors <a class="header-action link-secondary" title="View source" hr
|
||||
|
||||
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatColors_RailAttr" data-uid="EchoHub.Client.UI.Chat.ChatColors.RailAttr">
|
||||
RailAttr
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatColors.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>The dim vertical rail (│) separating the nick column from message text.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public static readonly Attribute RailAttr</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Field Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">Attribute</span></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatColors_SystemAttr" data-uid="EchoHub.Client.UI.Chat.ChatColors.SystemAttr">
|
||||
SystemAttr
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatColors.cs"><i class="bi bi-code-slash"></i></a>
|
||||
@@ -483,6 +545,37 @@ Class ChatColors <a class="header-action link-secondary" title="View source" hr
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatColors_UnreadMarkerAttr" data-uid="EchoHub.Client.UI.Chat.ChatColors.UnreadMarkerAttr">
|
||||
UnreadMarkerAttr
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatColors.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>The irssi-style "new messages" unread marker rule.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public static readonly Attribute UnreadMarkerAttr</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Field Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">Attribute</span></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="methods">Methods
|
||||
</h2>
|
||||
|
||||
|
||||
@@ -341,6 +341,40 @@ Class ChatLine <a class="header-action link-secondary" title="View source" href
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Chat_ChatLine_ContinuationPrefixSegments_" data-uid="EchoHub.Client.UI.Chat.ChatLine.ContinuationPrefixSegments*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatLine_ContinuationPrefixSegments" data-uid="EchoHub.Client.UI.Chat.ChatLine.ContinuationPrefixSegments">
|
||||
ContinuationPrefixSegments
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatLine.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Colored segments to prepend on continuation lines instead of plain spaces
|
||||
(e.g. the nick-column rail " │ "). When set, takes
|
||||
precedence over <a class="xref" href="EchoHub.Client.UI.Chat.ChatLine.html#EchoHub_Client_UI_Chat_ChatLine_ContinuationIndent">ContinuationIndent</a>.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public List<ChatSegment>? ContinuationPrefixSegments { get; set; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">List</span><<a class="xref" href="EchoHub.Client.UI.Chat.ChatSegment.html">ChatSegment</a>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Chat_ChatLine_IsMention_" data-uid="EchoHub.Client.UI.Chat.ChatLine.IsMention*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatLine_IsMention" data-uid="EchoHub.Client.UI.Chat.ChatLine.IsMention">
|
||||
@@ -372,6 +406,38 @@ Class ChatLine <a class="header-action link-secondary" title="View source" href
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Chat_ChatLine_IsUnreadMarker_" data-uid="EchoHub.Client.UI.Chat.ChatLine.IsUnreadMarker*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatLine_IsUnreadMarker" data-uid="EchoHub.Client.UI.Chat.ChatLine.IsUnreadMarker">
|
||||
IsUnreadMarker
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatLine.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>True for the "new messages" unread-marker rule so it can be removed on channel switch.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public bool IsUnreadMarker { get; set; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Chat_ChatLine_MessageId_" data-uid="EchoHub.Client.UI.Chat.ChatLine.MessageId*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatLine_MessageId" data-uid="EchoHub.Client.UI.Chat.ChatLine.MessageId">
|
||||
@@ -403,6 +469,71 @@ Class ChatLine <a class="header-action link-secondary" title="View source" href
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Chat_ChatLine_RuleAttr_" data-uid="EchoHub.Client.UI.Chat.ChatLine.RuleAttr*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatLine_RuleAttr" data-uid="EchoHub.Client.UI.Chat.ChatLine.RuleAttr">
|
||||
RuleAttr
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatLine.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Color for a rule line; null falls back to <a class="xref" href="EchoHub.Client.UI.Chat.ChatColors.html#EchoHub_Client_UI_Chat_ChatColors_DateRuleAttr">DateRuleAttr</a>.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public Attribute? RuleAttr { get; set; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">Attribute</span>?</dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Chat_ChatLine_RuleLabel_" data-uid="EchoHub.Client.UI.Chat.ChatLine.RuleLabel*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatLine_RuleLabel" data-uid="EchoHub.Client.UI.Chat.ChatLine.RuleLabel">
|
||||
RuleLabel
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatLine.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>When set, this line is a horizontal separator rule (date change, unread marker).
|
||||
The view regenerates it to the current viewport width instead of word-wrapping.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public string? RuleLabel { get; set; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Chat_ChatLine_Segments_" data-uid="EchoHub.Client.UI.Chat.ChatLine.Segments*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatLine_Segments" data-uid="EchoHub.Client.UI.Chat.ChatLine.Segments">
|
||||
|
||||
@@ -178,6 +178,72 @@ so the UI layer can refresh.</p>
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="fields">Fields
|
||||
</h2>
|
||||
|
||||
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatMessageManager_ContentIndentCols" data-uid="EchoHub.Client.UI.Chat.ChatMessageManager.ContentIndentCols">
|
||||
ContentIndentCols
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatMessageManager.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Columns before message text starts: "HH:mm " + nick column + " │ ".</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public const int ContentIndentCols = 21</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Field Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatMessageManager_NickColWidth" data-uid="EchoHub.Client.UI.Chat.ChatMessageManager.NickColWidth">
|
||||
NickColWidth
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatMessageManager.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Columns reserved for the right-aligned nick column (WeeChat-style).</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public const int NickColWidth = 12</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Field Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="properties">Properties
|
||||
</h2>
|
||||
|
||||
@@ -245,6 +311,71 @@ so the UI layer can refresh.</p>
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Chat_ChatMessageManager_LastReadIds_" data-uid="EchoHub.Client.UI.Chat.ChatMessageManager.LastReadIds*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatMessageManager_LastReadIds" data-uid="EchoHub.Client.UI.Chat.ChatMessageManager.LastReadIds">
|
||||
LastReadIds
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatMessageManager.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Last message the user has read per channel — persisted by the orchestrator so
|
||||
unread/mention state can be seeded from history on the next connect.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public IReadOnlyDictionary<string, Guid> LastReadIds { get; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">IReadOnlyDictionary</span><<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Chat_ChatMessageManager_MentionChannels_" data-uid="EchoHub.Client.UI.Chat.ChatMessageManager.MentionChannels*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatMessageManager_MentionChannels" data-uid="EchoHub.Client.UI.Chat.ChatMessageManager.MentionChannels">
|
||||
MentionChannels
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatMessageManager.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Channels with an unread @mention of the current user (cleared by <a class="xref" href="EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_ClearUnread_System_String_">ClearUnread(string)</a>).</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public IReadOnlySet<string> MentionChannels { get; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">IReadOnlySet</span><<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="methods">Methods
|
||||
</h2>
|
||||
|
||||
@@ -515,17 +646,20 @@ so the UI layer can refresh.</p>
|
||||
|
||||
<a id="EchoHub_Client_UI_Chat_ChatMessageManager_LoadHistory_" data-uid="EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatMessageManager_LoadHistory_System_String_System_Collections_Generic_List_EchoHub_Core_DTOs_MessageDto__" data-uid="EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory(System.String,System.Collections.Generic.List{EchoHub.Core.DTOs.MessageDto})">
|
||||
LoadHistory(string, List<MessageDto>)
|
||||
<h3 id="EchoHub_Client_UI_Chat_ChatMessageManager_LoadHistory_System_String_System_Collections_Generic_List_EchoHub_Core_DTOs_MessageDto__System_Nullable_System_Guid__" data-uid="EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory(System.String,System.Collections.Generic.List{EchoHub.Core.DTOs.MessageDto},System.Nullable{System.Guid})">
|
||||
LoadHistory(string, List<MessageDto>, Guid?)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Chat/ChatMessageManager.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Load historical messages into a channel, replacing any existing messages.</p>
|
||||
<div class="markdown level1 summary"><p>Load historical messages into a channel, replacing any existing messages.
|
||||
When <code class="paramref">lastReadId</code> is given (persisted from a previous session),
|
||||
messages after it seed the unread count, @mention highlight, and the
|
||||
"new messages" marker — so activity that happened while offline still lights up.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public void LoadHistory(string channelName, List<MessageDto> messages)</code></pre>
|
||||
<pre><code class="lang-csharp hljs">public void LoadHistory(string channelName, List<MessageDto> messages, Guid? lastReadId = null)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
@@ -534,6 +668,8 @@ so the UI layer can refresh.</p>
|
||||
<dd></dd>
|
||||
<dt><code>messages</code> <span class="xref">List</span><<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs">MessageDto</a>></dt>
|
||||
<dd></dd>
|
||||
<dt><code>lastReadId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a>?</dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
@@ -162,10 +162,6 @@ Shows Edit Profile / Set Status buttons when viewing own profile.</p>
|
||||
<dt><a class="xref" href="EchoHub.Client.UI.Dialogs.UpdateConfirmDialog.html">UpdateConfirmDialog</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="EchoHub.Client.UI.Dialogs.UpdateProgressDialog.html">UpdateProgressDialog</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
<h3 id="enums">
|
||||
Enums
|
||||
</h3>
|
||||
|
||||
+73
-110
@@ -2,11 +2,11 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Class UpdateProgressDialog | EchoHub Documentation </title>
|
||||
<title>Class NickColorHelper | EchoHub Documentation </title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="title" content="Class UpdateProgressDialog | EchoHub Documentation ">
|
||||
|
||||
<meta name="title" content="Class NickColorHelper | EchoHub Documentation ">
|
||||
|
||||
<meta name="description" content="Deterministic per-nick colors for users who haven't picked a nickname color. The same nick always maps to the same palette entry (classic IRC client behavior), so a busy channel stays scannable without any configuration.">
|
||||
<link rel="icon" href="../../images/hue_icon.svg">
|
||||
<link rel="stylesheet" href="../../public/docfx.min.css">
|
||||
<link rel="stylesheet" href="../../public/main.css">
|
||||
@@ -16,7 +16,7 @@
|
||||
<meta name="docfx:rel" content="../../">
|
||||
|
||||
|
||||
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Client_UI_Dialogs_UpdateProgressDialog.md&value=---%0Auid%3A%20EchoHub.Client.UI.Dialogs.UpdateProgressDialog%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
|
||||
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Client_UI_Helpers_NickColorHelper.md&value=---%0Auid%3A%20EchoHub.Client.UI.Helpers.NickColorHelper%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
|
||||
<meta name="loc:inThisArticle" content="In this article">
|
||||
<meta name="loc:searchResultsCount" content="{count} results for "{query}"">
|
||||
<meta name="loc:searchNoResults" content="No results for "{query}"">
|
||||
@@ -84,24 +84,27 @@
|
||||
<nav id="breadcrumb"></nav>
|
||||
</div>
|
||||
|
||||
<article data-uid="EchoHub.Client.UI.Dialogs.UpdateProgressDialog">
|
||||
<article data-uid="EchoHub.Client.UI.Helpers.NickColorHelper">
|
||||
|
||||
|
||||
|
||||
<h1 id="EchoHub_Client_UI_Dialogs_UpdateProgressDialog" data-uid="EchoHub.Client.UI.Dialogs.UpdateProgressDialog" class="text-break">
|
||||
Class UpdateProgressDialog <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Dialogs/UpdateProgressDialog.cs"><i class="bi bi-code-slash"></i></a>
|
||||
<h1 id="EchoHub_Client_UI_Helpers_NickColorHelper" data-uid="EchoHub.Client.UI.Helpers.NickColorHelper" class="text-break">
|
||||
Class NickColorHelper <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Helpers/NickColorHelper.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h1>
|
||||
|
||||
<div class="facts text-secondary">
|
||||
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Client.html">Client</a>.<a class="xref" href="EchoHub.Client.UI.html">UI</a>.<a class="xref" href="EchoHub.Client.UI.Dialogs.html">Dialogs</a></dd></dl>
|
||||
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Client.html">Client</a>.<a class="xref" href="EchoHub.Client.UI.html">UI</a>.<a class="xref" href="EchoHub.Client.UI.Helpers.html">Helpers</a></dd></dl>
|
||||
<dl><dt>Assembly</dt><dd>EchoHub.Client.dll</dd></dl>
|
||||
</div>
|
||||
|
||||
<div class="markdown summary"></div>
|
||||
<div class="markdown summary"><p>Deterministic per-nick colors for users who haven't picked a nickname color.
|
||||
The same nick always maps to the same palette entry (classic IRC client behavior),
|
||||
so a busy channel stays scannable without any configuration.</p>
|
||||
</div>
|
||||
<div class="markdown conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public sealed class UpdateProgressDialog</code></pre>
|
||||
<pre><code class="lang-csharp hljs">public static class NickColorHelper</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -111,7 +114,7 @@ Class UpdateProgressDialog <a class="header-action link-secondary" title="View
|
||||
<dt>Inheritance</dt>
|
||||
<dd>
|
||||
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
|
||||
<div><span class="xref">UpdateProgressDialog</span></div>
|
||||
<div><span class="xref">NickColorHelper</span></div>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
@@ -123,6 +126,9 @@ Class UpdateProgressDialog <a class="header-action link-secondary" title="View
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
|
||||
</div>
|
||||
@@ -145,121 +151,78 @@ Class UpdateProgressDialog <a class="header-action link-secondary" title="View
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="constructors">Constructors
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Dialogs_UpdateProgressDialog__ctor_" data-uid="EchoHub.Client.UI.Dialogs.UpdateProgressDialog.#ctor*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Dialogs_UpdateProgressDialog__ctor_Terminal_Gui_App_IApplication_System_String_" data-uid="EchoHub.Client.UI.Dialogs.UpdateProgressDialog.#ctor(Terminal.Gui.App.IApplication,System.String)">
|
||||
UpdateProgressDialog(IApplication, string)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Dialogs/UpdateProgressDialog.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public UpdateProgressDialog(IApplication app, string newVersion)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>app</code> <span class="xref">IApplication</span></dt>
|
||||
<dd></dd>
|
||||
<dt><code>newVersion</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="methods">Methods
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Dialogs_UpdateProgressDialog_Close_" data-uid="EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Close*"></a>
|
||||
<a id="EchoHub_Client_UI_Helpers_NickColorHelper_GetAttribute_" data-uid="EchoHub.Client.UI.Helpers.NickColorHelper.GetAttribute*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Dialogs_UpdateProgressDialog_Close" data-uid="EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Close">
|
||||
Close()
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Dialogs/UpdateProgressDialog.cs"><i class="bi bi-code-slash"></i></a>
|
||||
<h3 id="EchoHub_Client_UI_Helpers_NickColorHelper_GetAttribute_System_String_" data-uid="EchoHub.Client.UI.Helpers.NickColorHelper.GetAttribute(System.String)">
|
||||
GetAttribute(string)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Helpers/NickColorHelper.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 summary"><p>The color attribute for a nick. Used as a fallback when the user has no
|
||||
explicit nickname color set.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public void Close()</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Dialogs_UpdateProgressDialog_Show_" data-uid="EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Show*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Dialogs_UpdateProgressDialog_Show" data-uid="EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Show">
|
||||
Show()
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Dialogs/UpdateProgressDialog.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public void Show()</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Dialogs_UpdateProgressDialog_UpdateProgress_" data-uid="EchoHub.Client.UI.Dialogs.UpdateProgressDialog.UpdateProgress*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Dialogs_UpdateProgressDialog_UpdateProgress_System_Single_System_String_" data-uid="EchoHub.Client.UI.Dialogs.UpdateProgressDialog.UpdateProgress(System.Single,System.String)">
|
||||
UpdateProgress(float, string)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Dialogs/UpdateProgressDialog.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public void UpdateProgress(float fraction, string statusText)</code></pre>
|
||||
<pre><code class="lang-csharp hljs">public static Attribute GetAttribute(string nick)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>fraction</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.single">float</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>statusText</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dt><code>nick</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">Attribute</span></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Client_UI_Helpers_NickColorHelper_GetPaletteIndex_" data-uid="EchoHub.Client.UI.Helpers.NickColorHelper.GetPaletteIndex*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_Helpers_NickColorHelper_GetPaletteIndex_System_String_System_Int32_" data-uid="EchoHub.Client.UI.Helpers.NickColorHelper.GetPaletteIndex(System.String,System.Int32)">
|
||||
GetPaletteIndex(string, int)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Helpers/NickColorHelper.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Stable palette index for a nick: case-insensitive FNV-1a over the nick,
|
||||
reduced modulo <code class="paramref">paletteSize</code>. Pure function (no Terminal.Gui
|
||||
types) so it is unit-testable without a display driver.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public static int GetPaletteIndex(string nick, int paletteSize)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>nick</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>paletteSize</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
@@ -275,7 +238,7 @@ Class UpdateProgressDialog <a class="header-action link-secondary" title="View
|
||||
</article>
|
||||
|
||||
<div class="contribution d-print-none">
|
||||
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Dialogs/UpdateProgressDialog.cs" class="edit-link">Edit this page</a>
|
||||
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/Helpers/NickColorHelper.cs" class="edit-link">Edit this page</a>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -111,6 +111,13 @@ so we replace them with fixed-width ASCII shortcodes for display only.</p>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="EchoHub.Client.UI.Helpers.HexColorHelper.html">HexColorHelper</a></dt>
|
||||
<dd><p>Helper to parse hex colors to Terminal.Gui Attributes.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="EchoHub.Client.UI.Helpers.NickColorHelper.html">NickColorHelper</a></dt>
|
||||
<dd><p>Deterministic per-nick colors for users who haven't picked a nickname color.
|
||||
The same nick always maps to the same palette entry (classic IRC client behavior),
|
||||
so a busy channel stays scannable without any configuration.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
@@ -459,8 +459,8 @@ Active channel gets a > indicator, unread channels are bright with a count ba
|
||||
|
||||
<a id="EchoHub_Client_UI_ListSources_ChannelListSource_Update_" data-uid="EchoHub.Client.UI.ListSources.ChannelListSource.Update*"></a>
|
||||
|
||||
<h3 id="EchoHub_Client_UI_ListSources_ChannelListSource_Update_System_Collections_Generic_List_System_String__System_Collections_Generic_Dictionary_System_String_System_Int32__System_String_System_Collections_Generic_IReadOnlySet_System_String__" data-uid="EchoHub.Client.UI.ListSources.ChannelListSource.Update(System.Collections.Generic.List{System.String},System.Collections.Generic.Dictionary{System.String,System.Int32},System.String,System.Collections.Generic.IReadOnlySet{System.String})">
|
||||
Update(List<string>, Dictionary<string, int>, string, IReadOnlySet<string>?)
|
||||
<h3 id="EchoHub_Client_UI_ListSources_ChannelListSource_Update_System_Collections_Generic_List_System_String__System_Collections_Generic_Dictionary_System_String_System_Int32__System_String_System_Collections_Generic_IReadOnlySet_System_String__System_Collections_Generic_IReadOnlySet_System_String__" data-uid="EchoHub.Client.UI.ListSources.ChannelListSource.Update(System.Collections.Generic.List{System.String},System.Collections.Generic.Dictionary{System.String,System.Int32},System.String,System.Collections.Generic.IReadOnlySet{System.String},System.Collections.Generic.IReadOnlySet{System.String})">
|
||||
Update(List<string>, Dictionary<string, int>, string, IReadOnlySet<string>?, IReadOnlySet<string>?)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ListSources/ChannelListSource.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
@@ -468,7 +468,7 @@ Active channel gets a > indicator, unread channels are bright with a count ba
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public void Update(List<string> channels, Dictionary<string, int> unread, string activeChannel, IReadOnlySet<string>? protectedChannels = null)</code></pre>
|
||||
<pre><code class="lang-csharp hljs">public void Update(List<string> channels, Dictionary<string, int> unread, string activeChannel, IReadOnlySet<string>? protectedChannels = null, IReadOnlySet<string>? mentionChannels = null)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
@@ -481,6 +481,8 @@ Active channel gets a > indicator, unread channels are bright with a count ba
|
||||
<dd></dd>
|
||||
<dt><code>protectedChannels</code> <span class="xref">IReadOnlySet</span><<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>></dt>
|
||||
<dd></dd>
|
||||
<dt><code>mentionChannels</code> <span class="xref">IReadOnlySet</span><<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
@@ -385,6 +385,42 @@ Interface IChannelService <a class="header-action link-secondary" title="View s
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_Contracts_IChannelService_GetChannelMetaAsync_" data-uid="EchoHub.Core.Contracts.IChannelService.GetChannelMetaAsync*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_Contracts_IChannelService_GetChannelMetaAsync_System_String_" data-uid="EchoHub.Core.Contracts.IChannelService.GetChannelMetaAsync(System.String)">
|
||||
GetChannelMetaAsync(string)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChannelService.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">Task<ChannelMetaDto?> GetChannelMetaAsync(string channelName)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>channelName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">Task</span><<a class="xref" href="EchoHub.Core.DTOs.ChannelMetaDto.html">ChannelMetaDto</a>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_Contracts_IChannelService_GetChannelTopicAsync_" data-uid="EchoHub.Core.Contracts.IChannelService.GetChannelTopicAsync*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_Contracts_IChannelService_GetChannelTopicAsync_System_String_" data-uid="EchoHub.Core.Contracts.IChannelService.GetChannelTopicAsync(System.String)">
|
||||
|
||||
@@ -116,6 +116,42 @@ Interface IMessageEncryptionService <a class="header-action link-secondary" tit
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="fields">Fields
|
||||
</h2>
|
||||
|
||||
|
||||
|
||||
<h3 id="EchoHub_Core_Contracts_IMessageEncryptionService_CiphertextPrefix" data-uid="EchoHub.Core.Contracts.IMessageEncryptionService.CiphertextPrefix">
|
||||
CiphertextPrefix
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IMessageEncryptionService.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Prefix marking transport/at-rest encrypted content. <a class="xref" href="EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_Decrypt_System_String_">Decrypt(string)</a> is a
|
||||
pass-through for values without it.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public const string CiphertextPrefix = "$ENC$v1$"</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Field Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="properties">Properties
|
||||
</h2>
|
||||
|
||||
|
||||
@@ -0,0 +1,878 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Class ChannelMetaDto | EchoHub Documentation </title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="title" content="Class ChannelMetaDto | EchoHub Documentation ">
|
||||
|
||||
<meta name="description" content="Human-facing summary of a channel (the /meta command). For encrypted channels the server still knows these figures — count, timestamps, and stored blob sizes — even though it cannot read the content itself. is the sum of stored attachment blob sizes plus message text length, so it is an estimate, not an exact on-disk total.">
|
||||
<link rel="icon" href="../../images/hue_icon.svg">
|
||||
<link rel="stylesheet" href="../../public/docfx.min.css">
|
||||
<link rel="stylesheet" href="../../public/main.css">
|
||||
<meta name="docfx:navrel" content="../../toc.html">
|
||||
<meta name="docfx:tocrel" content="../toc.html">
|
||||
|
||||
<meta name="docfx:rel" content="../../">
|
||||
|
||||
|
||||
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Core_DTOs_ChannelMetaDto.md&value=---%0Auid%3A%20EchoHub.Core.DTOs.ChannelMetaDto%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
|
||||
<meta name="loc:inThisArticle" content="In this article">
|
||||
<meta name="loc:searchResultsCount" content="{count} results for "{query}"">
|
||||
<meta name="loc:searchNoResults" content="No results for "{query}"">
|
||||
<meta name="loc:tocFilter" content="Filter by title">
|
||||
<meta name="loc:nextArticle" content="Next">
|
||||
<meta name="loc:prevArticle" content="Previous">
|
||||
<meta name="loc:themeLight" content="Light">
|
||||
<meta name="loc:themeDark" content="Dark">
|
||||
<meta name="loc:themeAuto" content="Auto">
|
||||
<meta name="loc:changeTheme" content="Change theme">
|
||||
<meta name="loc:copy" content="Copy">
|
||||
<meta name="loc:downloadPdf" content="Download PDF">
|
||||
|
||||
<script type="module" src="./../../public/docfx.min.js"></script>
|
||||
|
||||
<script>
|
||||
const theme = localStorage.getItem('theme') || 'auto'
|
||||
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
|
||||
<header class="bg-body border-bottom">
|
||||
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
|
||||
<div class="container-xxl flex-nowrap">
|
||||
<a class="navbar-brand" href="../../index.html">
|
||||
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
|
||||
EchoHub
|
||||
</a>
|
||||
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<i class="bi bi-three-dots"></i>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navpanel">
|
||||
<div id="navbar">
|
||||
<form class="search" role="search" id="search">
|
||||
<i class="bi bi-search"></i>
|
||||
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="container-xxl">
|
||||
<div class="toc-offcanvas">
|
||||
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
|
||||
<div class="offcanvas-header">
|
||||
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="offcanvas-body">
|
||||
<nav class="toc" id="toc"></nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<div class="actionbar">
|
||||
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
|
||||
<i class="bi bi-list"></i>
|
||||
</button>
|
||||
|
||||
<nav id="breadcrumb"></nav>
|
||||
</div>
|
||||
|
||||
<article data-uid="EchoHub.Core.DTOs.ChannelMetaDto">
|
||||
|
||||
|
||||
|
||||
<h1 id="EchoHub_Core_DTOs_ChannelMetaDto" data-uid="EchoHub.Core.DTOs.ChannelMetaDto" class="text-break">
|
||||
Class ChannelMetaDto <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h1>
|
||||
|
||||
<div class="facts text-secondary">
|
||||
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Core.html">Core</a>.<a class="xref" href="EchoHub.Core.DTOs.html">DTOs</a></dd></dl>
|
||||
<dl><dt>Assembly</dt><dd>EchoHub.Core.dll</dd></dl>
|
||||
</div>
|
||||
|
||||
<div class="markdown summary"><p>Human-facing summary of a channel (the <code>/meta</code> command). For encrypted channels the
|
||||
server still knows these figures — count, timestamps, and stored blob sizes — even though it
|
||||
cannot read the content itself. <a class="xref" href="EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_EstimatedSizeBytes">EstimatedSizeBytes</a> is the sum of stored
|
||||
attachment blob sizes plus message text length, so it is an estimate, not an exact on-disk total.</p>
|
||||
</div>
|
||||
<div class="markdown conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public record ChannelMetaDto : IEquatable<ChannelMetaDto></code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<dl class="typelist inheritance">
|
||||
<dt>Inheritance</dt>
|
||||
<dd>
|
||||
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
|
||||
<div><span class="xref">ChannelMetaDto</span></div>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl class="typelist implements">
|
||||
<dt>Implements</dt>
|
||||
<dd>
|
||||
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iequatable-1">IEquatable</a><<a class="xref" href="EchoHub.Core.DTOs.ChannelMetaDto.html">ChannelMetaDto</a>></div>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<dl class="typelist inheritedMembers">
|
||||
<dt>Inherited Members</dt>
|
||||
<dd>
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="constructors">Constructors
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto__ctor_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.#ctor*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto__ctor_EchoHub_Core_DTOs_ChannelMetaDto_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.#ctor(EchoHub.Core.DTOs.ChannelMetaDto)">
|
||||
ChannelMetaDto(ChannelMetaDto)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">protected ChannelMetaDto(ChannelMetaDto original)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>original</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelMetaDto.html">ChannelMetaDto</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto__ctor_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.#ctor*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto__ctor_System_Guid_System_String_System_String_System_Boolean_System_Boolean_System_Int32_System_Int32_System_Int64_System_DateTimeOffset_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.#ctor(System.Guid,System.String,System.String,System.Boolean,System.Boolean,System.Int32,System.Int32,System.Int64,System.DateTimeOffset)">
|
||||
ChannelMetaDto(Guid, string, string?, bool, bool, int, int, long, DateTimeOffset)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Human-facing summary of a channel (the <code>/meta</code> command). For encrypted channels the
|
||||
server still knows these figures — count, timestamps, and stored blob sizes — even though it
|
||||
cannot read the content itself. <a class="xref" href="EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_EstimatedSizeBytes">EstimatedSizeBytes</a> is the sum of stored
|
||||
attachment blob sizes plus message text length, so it is an estimate, not an exact on-disk total.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public ChannelMetaDto(Guid Id, string Name, string? Topic, bool IsEncrypted, bool IsProtected, int MessageCount, int UniqueUserCount, long EstimatedSizeBytes, DateTimeOffset CreatedAt)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>Id</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>Name</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>Topic</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>IsEncrypted</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>IsProtected</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>MessageCount</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>UniqueUserCount</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>EstimatedSizeBytes</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>CreatedAt</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.datetimeoffset">DateTimeOffset</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="properties">Properties
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_CreatedAt_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.CreatedAt*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_CreatedAt" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.CreatedAt">
|
||||
CreatedAt
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public DateTimeOffset CreatedAt { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.datetimeoffset">DateTimeOffset</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_EqualityContract_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.EqualityContract*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_EqualityContract" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.EqualityContract">
|
||||
EqualityContract
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">protected virtual Type EqualityContract { get; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.type">Type</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_EstimatedSizeBytes_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.EstimatedSizeBytes*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_EstimatedSizeBytes" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.EstimatedSizeBytes">
|
||||
EstimatedSizeBytes
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public long EstimatedSizeBytes { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_Id_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.Id*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_Id" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.Id">
|
||||
Id
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public Guid Id { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_IsEncrypted_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.IsEncrypted*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_IsEncrypted" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.IsEncrypted">
|
||||
IsEncrypted
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public bool IsEncrypted { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_IsProtected_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.IsProtected*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_IsProtected" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.IsProtected">
|
||||
IsProtected
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public bool IsProtected { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_MessageCount_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.MessageCount*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_MessageCount" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.MessageCount">
|
||||
MessageCount
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public int MessageCount { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_Name_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.Name*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_Name" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.Name">
|
||||
Name
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public string Name { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_Topic_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.Topic*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_Topic" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.Topic">
|
||||
Topic
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public string? Topic { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_UniqueUserCount_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.UniqueUserCount*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_UniqueUserCount" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.UniqueUserCount">
|
||||
UniqueUserCount
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public int UniqueUserCount { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="methods">Methods
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_Deconstruct_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.Deconstruct*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_Deconstruct_System_Guid__System_String__System_String__System_Boolean__System_Boolean__System_Int32__System_Int32__System_Int64__System_DateTimeOffset__" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.Deconstruct(System.Guid@,System.String@,System.String@,System.Boolean@,System.Boolean@,System.Int32@,System.Int32@,System.Int64@,System.DateTimeOffset@)">
|
||||
Deconstruct(out Guid, out string, out string?, out bool, out bool, out int, out int, out long, out DateTimeOffset)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public void Deconstruct(out Guid Id, out string Name, out string? Topic, out bool IsEncrypted, out bool IsProtected, out int MessageCount, out int UniqueUserCount, out long EstimatedSizeBytes, out DateTimeOffset CreatedAt)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>Id</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>Name</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>Topic</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>IsEncrypted</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>IsProtected</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>MessageCount</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>UniqueUserCount</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>EstimatedSizeBytes</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>CreatedAt</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.datetimeoffset">DateTimeOffset</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_Equals_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.Equals*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_Equals_EchoHub_Core_DTOs_ChannelMetaDto_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.Equals(EchoHub.Core.DTOs.ChannelMetaDto)">
|
||||
Equals(ChannelMetaDto?)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public virtual bool Equals(ChannelMetaDto? other)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>other</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelMetaDto.html">ChannelMetaDto</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_Equals_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.Equals*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_Equals_System_Object_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.Equals(System.Object)">
|
||||
Equals(object?)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public override bool Equals(object? obj)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>obj</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_GetHashCode_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.GetHashCode*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_GetHashCode" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.GetHashCode">
|
||||
GetHashCode()
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public override int GetHashCode()</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_PrintMembers_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.PrintMembers*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_PrintMembers_System_Text_StringBuilder_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.PrintMembers(System.Text.StringBuilder)">
|
||||
PrintMembers(StringBuilder)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">protected virtual bool PrintMembers(StringBuilder builder)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>builder</code> <span class="xref">StringBuilder</span></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_ToString_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.ToString*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_ToString" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.ToString">
|
||||
ToString()
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public override string ToString()</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="operators">Operators
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_op_Equality_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.op_Equality*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_op_Equality_EchoHub_Core_DTOs_ChannelMetaDto_EchoHub_Core_DTOs_ChannelMetaDto_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.op_Equality(EchoHub.Core.DTOs.ChannelMetaDto,EchoHub.Core.DTOs.ChannelMetaDto)">
|
||||
operator ==(ChannelMetaDto?, ChannelMetaDto?)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public static bool operator ==(ChannelMetaDto? left, ChannelMetaDto? right)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>left</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelMetaDto.html">ChannelMetaDto</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>right</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelMetaDto.html">ChannelMetaDto</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Core_DTOs_ChannelMetaDto_op_Inequality_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.op_Inequality*"></a>
|
||||
|
||||
<h3 id="EchoHub_Core_DTOs_ChannelMetaDto_op_Inequality_EchoHub_Core_DTOs_ChannelMetaDto_EchoHub_Core_DTOs_ChannelMetaDto_" data-uid="EchoHub.Core.DTOs.ChannelMetaDto.op_Inequality(EchoHub.Core.DTOs.ChannelMetaDto,EchoHub.Core.DTOs.ChannelMetaDto)">
|
||||
operator !=(ChannelMetaDto?, ChannelMetaDto?)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public static bool operator !=(ChannelMetaDto? left, ChannelMetaDto? right)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>left</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelMetaDto.html">ChannelMetaDto</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>right</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelMetaDto.html">ChannelMetaDto</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
|
||||
<div class="contribution d-print-none">
|
||||
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs" class="edit-link">Edit this page</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="affix">
|
||||
<nav id="affix"></nav>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div class="container-xxl search-results" id="search-results"></div>
|
||||
|
||||
<footer class="border-top text-secondary">
|
||||
<div class="container-xxl">
|
||||
<div class="flex-fill">
|
||||
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>·</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>·</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -131,6 +131,14 @@ credential from a passphrase. Never includes the wrapped room key.</p>
|
||||
<dt><a class="xref" href="EchoHub.Core.DTOs.ChannelDto.html">ChannelDto</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="EchoHub.Core.DTOs.ChannelMetaDto.html">ChannelMetaDto</a></dt>
|
||||
<dd><p>Human-facing summary of a channel (the <code>/meta</code> command). For encrypted channels the
|
||||
server still knows these figures — count, timestamps, and stored blob sizes — even though it
|
||||
cannot read the content itself. <a class="xref" href="EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_EstimatedSizeBytes">EstimatedSizeBytes</a> is the sum of stored
|
||||
attachment blob sizes plus message text length, so it is an estimate, not an exact on-disk total.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</a></dt>
|
||||
<dd></dd>
|
||||
|
||||
@@ -0,0 +1,564 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Class UploadLimits | EchoHub Documentation </title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="title" content="Class UploadLimits | EchoHub Documentation ">
|
||||
|
||||
<meta name="description" content="Admin-configurable upload limits, bound from the Uploads configuration section. Sizes are expressed in megabytes in configuration; the *Bytes accessors convert them for enforcement. Every default mirrors so an absent or partial Uploads section preserves the historical built-in limits.">
|
||||
<link rel="icon" href="../../images/hue_icon.svg">
|
||||
<link rel="stylesheet" href="../../public/docfx.min.css">
|
||||
<link rel="stylesheet" href="../../public/main.css">
|
||||
<meta name="docfx:navrel" content="../../toc.html">
|
||||
<meta name="docfx:tocrel" content="../toc.html">
|
||||
|
||||
<meta name="docfx:rel" content="../../">
|
||||
|
||||
|
||||
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Server_Config_UploadLimits.md&value=---%0Auid%3A%20EchoHub.Server.Config.UploadLimits%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
|
||||
<meta name="loc:inThisArticle" content="In this article">
|
||||
<meta name="loc:searchResultsCount" content="{count} results for "{query}"">
|
||||
<meta name="loc:searchNoResults" content="No results for "{query}"">
|
||||
<meta name="loc:tocFilter" content="Filter by title">
|
||||
<meta name="loc:nextArticle" content="Next">
|
||||
<meta name="loc:prevArticle" content="Previous">
|
||||
<meta name="loc:themeLight" content="Light">
|
||||
<meta name="loc:themeDark" content="Dark">
|
||||
<meta name="loc:themeAuto" content="Auto">
|
||||
<meta name="loc:changeTheme" content="Change theme">
|
||||
<meta name="loc:copy" content="Copy">
|
||||
<meta name="loc:downloadPdf" content="Download PDF">
|
||||
|
||||
<script type="module" src="./../../public/docfx.min.js"></script>
|
||||
|
||||
<script>
|
||||
const theme = localStorage.getItem('theme') || 'auto'
|
||||
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
|
||||
<header class="bg-body border-bottom">
|
||||
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
|
||||
<div class="container-xxl flex-nowrap">
|
||||
<a class="navbar-brand" href="../../index.html">
|
||||
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
|
||||
EchoHub
|
||||
</a>
|
||||
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<i class="bi bi-three-dots"></i>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navpanel">
|
||||
<div id="navbar">
|
||||
<form class="search" role="search" id="search">
|
||||
<i class="bi bi-search"></i>
|
||||
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="container-xxl">
|
||||
<div class="toc-offcanvas">
|
||||
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
|
||||
<div class="offcanvas-header">
|
||||
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="offcanvas-body">
|
||||
<nav class="toc" id="toc"></nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<div class="actionbar">
|
||||
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
|
||||
<i class="bi bi-list"></i>
|
||||
</button>
|
||||
|
||||
<nav id="breadcrumb"></nav>
|
||||
</div>
|
||||
|
||||
<article data-uid="EchoHub.Server.Config.UploadLimits">
|
||||
|
||||
|
||||
|
||||
<h1 id="EchoHub_Server_Config_UploadLimits" data-uid="EchoHub.Server.Config.UploadLimits" class="text-break">
|
||||
Class UploadLimits <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h1>
|
||||
|
||||
<div class="facts text-secondary">
|
||||
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Server.html">Server</a>.<a class="xref" href="EchoHub.Server.Config.html">Config</a></dd></dl>
|
||||
<dl><dt>Assembly</dt><dd>EchoHub.Server.dll</dd></dl>
|
||||
</div>
|
||||
|
||||
<div class="markdown summary"><p>Admin-configurable upload limits, bound from the <code>Uploads</code> configuration section.
|
||||
Sizes are expressed in megabytes in configuration; the <code>*Bytes</code> accessors convert them
|
||||
for enforcement. Every default mirrors <a class="xref" href="../core/EchoHub.Core.Constants.HubConstants.html">HubConstants</a> so an absent or partial
|
||||
<code>Uploads</code> section preserves the historical built-in limits.</p>
|
||||
</div>
|
||||
<div class="markdown conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public sealed class UploadLimits</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<dl class="typelist inheritance">
|
||||
<dt>Inheritance</dt>
|
||||
<dd>
|
||||
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
|
||||
<div><span class="xref">UploadLimits</span></div>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<dl class="typelist inheritedMembers">
|
||||
<dt>Inherited Members</dt>
|
||||
<dd>
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="constructors">Constructors
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Config_UploadLimits__ctor_" data-uid="EchoHub.Server.Config.UploadLimits.#ctor*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Config_UploadLimits__ctor" data-uid="EchoHub.Server.Config.UploadLimits.#ctor">
|
||||
UploadLimits()
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public UploadLimits()</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="properties">Properties
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Config_UploadLimits_MaxAttachmentsPerMessage_" data-uid="EchoHub.Server.Config.UploadLimits.MaxAttachmentsPerMessage*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Config_UploadLimits_MaxAttachmentsPerMessage" data-uid="EchoHub.Server.Config.UploadLimits.MaxAttachmentsPerMessage">
|
||||
MaxAttachmentsPerMessage
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public int MaxAttachmentsPerMessage { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Config_UploadLimits_MaxAudioSizeBytes_" data-uid="EchoHub.Server.Config.UploadLimits.MaxAudioSizeBytes*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Config_UploadLimits_MaxAudioSizeBytes" data-uid="EchoHub.Server.Config.UploadLimits.MaxAudioSizeBytes">
|
||||
MaxAudioSizeBytes
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public long MaxAudioSizeBytes { get; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Config_UploadLimits_MaxAudioSizeMB_" data-uid="EchoHub.Server.Config.UploadLimits.MaxAudioSizeMB*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Config_UploadLimits_MaxAudioSizeMB" data-uid="EchoHub.Server.Config.UploadLimits.MaxAudioSizeMB">
|
||||
MaxAudioSizeMB
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public int MaxAudioSizeMB { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Config_UploadLimits_MaxAvatarSizeBytes_" data-uid="EchoHub.Server.Config.UploadLimits.MaxAvatarSizeBytes*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Config_UploadLimits_MaxAvatarSizeBytes" data-uid="EchoHub.Server.Config.UploadLimits.MaxAvatarSizeBytes">
|
||||
MaxAvatarSizeBytes
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public long MaxAvatarSizeBytes { get; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Config_UploadLimits_MaxAvatarSizeMB_" data-uid="EchoHub.Server.Config.UploadLimits.MaxAvatarSizeMB*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Config_UploadLimits_MaxAvatarSizeMB" data-uid="EchoHub.Server.Config.UploadLimits.MaxAvatarSizeMB">
|
||||
MaxAvatarSizeMB
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public int MaxAvatarSizeMB { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Config_UploadLimits_MaxFileSizeBytes_" data-uid="EchoHub.Server.Config.UploadLimits.MaxFileSizeBytes*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Config_UploadLimits_MaxFileSizeBytes" data-uid="EchoHub.Server.Config.UploadLimits.MaxFileSizeBytes">
|
||||
MaxFileSizeBytes
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public long MaxFileSizeBytes { get; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Config_UploadLimits_MaxFileSizeMB_" data-uid="EchoHub.Server.Config.UploadLimits.MaxFileSizeMB*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Config_UploadLimits_MaxFileSizeMB" data-uid="EchoHub.Server.Config.UploadLimits.MaxFileSizeMB">
|
||||
MaxFileSizeMB
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public int MaxFileSizeMB { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Config_UploadLimits_MaxImageSizeBytes_" data-uid="EchoHub.Server.Config.UploadLimits.MaxImageSizeBytes*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Config_UploadLimits_MaxImageSizeBytes" data-uid="EchoHub.Server.Config.UploadLimits.MaxImageSizeBytes">
|
||||
MaxImageSizeBytes
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public long MaxImageSizeBytes { get; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Config_UploadLimits_MaxImageSizeMB_" data-uid="EchoHub.Server.Config.UploadLimits.MaxImageSizeMB*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Config_UploadLimits_MaxImageSizeMB" data-uid="EchoHub.Server.Config.UploadLimits.MaxImageSizeMB">
|
||||
MaxImageSizeMB
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public int MaxImageSizeMB { get; init; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Config_UploadLimits_MaxRequestBodyBytes_" data-uid="EchoHub.Server.Config.UploadLimits.MaxRequestBodyBytes*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Config_UploadLimits_MaxRequestBodyBytes" data-uid="EchoHub.Server.Config.UploadLimits.MaxRequestBodyBytes">
|
||||
MaxRequestBodyBytes
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Absolute ceiling for one message request body (largest file × the attachment cap). Used to
|
||||
size the request-body and multipart limits so a configured increase actually takes effect.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public long MaxRequestBodyBytes { get; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2 class="section" id="methods">Methods
|
||||
</h2>
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Config_UploadLimits_MaxForKind_" data-uid="EchoHub.Server.Config.UploadLimits.MaxForKind*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Config_UploadLimits_MaxForKind_EchoHub_Core_Models_AttachmentKind_" data-uid="EchoHub.Server.Config.UploadLimits.MaxForKind(EchoHub.Core.Models.AttachmentKind)">
|
||||
MaxForKind(AttachmentKind)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Maximum accepted size for a single attachment of the given kind.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public long MaxForKind(AttachmentKind kind)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>kind</code> <a class="xref" href="../core/EchoHub.Core.Models.AttachmentKind.html">AttachmentKind</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
|
||||
<div class="contribution d-print-none">
|
||||
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/UploadLimits.cs" class="edit-link">Edit this page</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="affix">
|
||||
<nav id="affix"></nav>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div class="container-xxl search-results" id="search-results"></div>
|
||||
|
||||
<footer class="border-top text-secondary">
|
||||
<div class="container-xxl">
|
||||
<div class="flex-fill">
|
||||
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>·</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>·</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,130 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Namespace EchoHub.Server.Config | EchoHub Documentation </title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="title" content="Namespace EchoHub.Server.Config | EchoHub Documentation ">
|
||||
|
||||
|
||||
<link rel="icon" href="../../images/hue_icon.svg">
|
||||
<link rel="stylesheet" href="../../public/docfx.min.css">
|
||||
<link rel="stylesheet" href="../../public/main.css">
|
||||
<meta name="docfx:navrel" content="../../toc.html">
|
||||
<meta name="docfx:tocrel" content="../toc.html">
|
||||
|
||||
<meta name="docfx:rel" content="../../">
|
||||
|
||||
|
||||
|
||||
<meta name="loc:inThisArticle" content="In this article">
|
||||
<meta name="loc:searchResultsCount" content="{count} results for "{query}"">
|
||||
<meta name="loc:searchNoResults" content="No results for "{query}"">
|
||||
<meta name="loc:tocFilter" content="Filter by title">
|
||||
<meta name="loc:nextArticle" content="Next">
|
||||
<meta name="loc:prevArticle" content="Previous">
|
||||
<meta name="loc:themeLight" content="Light">
|
||||
<meta name="loc:themeDark" content="Dark">
|
||||
<meta name="loc:themeAuto" content="Auto">
|
||||
<meta name="loc:changeTheme" content="Change theme">
|
||||
<meta name="loc:copy" content="Copy">
|
||||
<meta name="loc:downloadPdf" content="Download PDF">
|
||||
|
||||
<script type="module" src="./../../public/docfx.min.js"></script>
|
||||
|
||||
<script>
|
||||
const theme = localStorage.getItem('theme') || 'auto'
|
||||
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
|
||||
<header class="bg-body border-bottom">
|
||||
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
|
||||
<div class="container-xxl flex-nowrap">
|
||||
<a class="navbar-brand" href="../../index.html">
|
||||
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
|
||||
EchoHub
|
||||
</a>
|
||||
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<i class="bi bi-three-dots"></i>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navpanel">
|
||||
<div id="navbar">
|
||||
<form class="search" role="search" id="search">
|
||||
<i class="bi bi-search"></i>
|
||||
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="container-xxl">
|
||||
<div class="toc-offcanvas">
|
||||
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
|
||||
<div class="offcanvas-header">
|
||||
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="offcanvas-body">
|
||||
<nav class="toc" id="toc"></nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<div class="actionbar">
|
||||
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
|
||||
<i class="bi bi-list"></i>
|
||||
</button>
|
||||
|
||||
<nav id="breadcrumb"></nav>
|
||||
</div>
|
||||
|
||||
<article data-uid="EchoHub.Server.Config">
|
||||
|
||||
<h1 id="EchoHub_Server_Config" data-uid="EchoHub.Server.Config" class="text-break">Namespace EchoHub.Server.Config</h1>
|
||||
<div class="markdown level0 summary"></div>
|
||||
<div class="markdown level0 conceptual"></div>
|
||||
<div class="markdown level0 remarks"></div>
|
||||
|
||||
<h3 id="classes">
|
||||
Classes
|
||||
</h3>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="EchoHub.Server.Config.UploadLimits.html">UploadLimits</a></dt>
|
||||
<dd><p>Admin-configurable upload limits, bound from the <code>Uploads</code> configuration section.
|
||||
Sizes are expressed in megabytes in configuration; the <code>*Bytes</code> accessors convert them
|
||||
for enforcement. Every default mirrors <a class="xref" href="../core/EchoHub.Core.Constants.HubConstants.html">HubConstants</a> so an absent or partial
|
||||
<code>Uploads</code> section preserves the historical built-in limits.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
</article>
|
||||
|
||||
<div class="contribution d-print-none">
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="affix">
|
||||
<nav id="affix"></nav>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div class="container-xxl search-results" id="search-results"></div>
|
||||
|
||||
<footer class="border-top text-secondary">
|
||||
<div class="container-xxl">
|
||||
<div class="flex-fill">
|
||||
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>·</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>·</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -159,8 +159,8 @@ public class ChannelsController : ControllerBase</code></pre>
|
||||
|
||||
<a id="EchoHub_Server_Controllers_ChannelsController__ctor_" data-uid="EchoHub.Server.Controllers.ChannelsController.#ctor*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Controllers_ChannelsController__ctor_EchoHub_Core_Contracts_IChannelService_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Core_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_EchoHub_Core_Contracts_IMessageEncryptionService_" data-uid="EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Core.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService)">
|
||||
ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService)
|
||||
<h3 id="EchoHub_Server_Controllers_ChannelsController__ctor_EchoHub_Core_Contracts_IChannelService_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Core_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_EchoHub_Core_Contracts_IMessageEncryptionService_EchoHub_Server_Config_UploadLimits_" data-uid="EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Core.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Server.Config.UploadLimits)">
|
||||
ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Controllers/ChannelsController.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
@@ -168,7 +168,7 @@ public class ChannelsController : ControllerBase</code></pre>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public ChannelsController(IChannelService channelService, EchoHubDbContext db, FileStorageService fileStorage, ImageToAsciiService asciiService, IHttpClientFactory httpClientFactory, IChatService chatService, IMessageEncryptionService encryption)</code></pre>
|
||||
<pre><code class="lang-csharp hljs">public ChannelsController(IChannelService channelService, EchoHubDbContext db, FileStorageService fileStorage, ImageToAsciiService asciiService, IHttpClientFactory httpClientFactory, IChatService chatService, IMessageEncryptionService encryption, UploadLimits uploadLimits)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
@@ -187,6 +187,8 @@ public class ChannelsController : ControllerBase</code></pre>
|
||||
<dd></dd>
|
||||
<dt><code>encryption</code> <a class="xref" href="../core/EchoHub.Core.Contracts.IMessageEncryptionService.html">IMessageEncryptionService</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>uploadLimits</code> <a class="xref" href="EchoHub.Server.Config.UploadLimits.html">UploadLimits</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
@@ -318,6 +320,46 @@ public Task<IActionResult> GetChannelCrypto(string channel)</code></pre>
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Controllers_ChannelsController_GetChannelMeta_" data-uid="EchoHub.Server.Controllers.ChannelsController.GetChannelMeta*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Controllers_ChannelsController_GetChannelMeta_System_String_" data-uid="EchoHub.Server.Controllers.ChannelsController.GetChannelMeta(System.String)">
|
||||
GetChannelMeta(string)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Controllers/ChannelsController.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Human-facing summary of a channel (message count, unique posters, estimated size,
|
||||
created date, room id). Available for encrypted channels too — these are metadata the
|
||||
server tracks even though it cannot read the messages themselves.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">[HttpGet("{channel}/meta")]
|
||||
public Task<IActionResult> GetChannelMeta(string channel)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>channel</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">Task</span><<span class="xref">IActionResult</span>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Controllers_ChannelsController_GetChannels_" data-uid="EchoHub.Server.Controllers.ChannelsController.GetChannels*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Controllers_ChannelsController_GetChannels_System_Int32_System_Int32_" data-uid="EchoHub.Server.Controllers.ChannelsController.GetChannels(System.Int32,System.Int32)">
|
||||
@@ -417,8 +459,6 @@ room-encrypted preview (<code>preview</code>), aligned by file order — the ser
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">[HttpPost("{channel}/messages")]
|
||||
[EnableRateLimiting("upload")]
|
||||
[RequestSizeLimit(1048576000)]
|
||||
[RequestFormLimits(MultipartBodyLengthLimit = 1048576000)]
|
||||
public Task<IActionResult> SendMessageWithAttachments(string channel, string? size = null)</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -159,8 +159,8 @@ public class UsersController : ControllerBase</code></pre>
|
||||
|
||||
<a id="EchoHub_Server_Controllers_UsersController__ctor_" data-uid="EchoHub.Server.Controllers.UsersController.#ctor*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Controllers_UsersController__ctor_EchoHub_Core_Contracts_IUserService_EchoHub_Core_Services_ImageToAsciiService_" data-uid="EchoHub.Server.Controllers.UsersController.#ctor(EchoHub.Core.Contracts.IUserService,EchoHub.Core.Services.ImageToAsciiService)">
|
||||
UsersController(IUserService, ImageToAsciiService)
|
||||
<h3 id="EchoHub_Server_Controllers_UsersController__ctor_EchoHub_Core_Contracts_IUserService_EchoHub_Core_Services_ImageToAsciiService_EchoHub_Server_Config_UploadLimits_" data-uid="EchoHub.Server.Controllers.UsersController.#ctor(EchoHub.Core.Contracts.IUserService,EchoHub.Core.Services.ImageToAsciiService,EchoHub.Server.Config.UploadLimits)">
|
||||
UsersController(IUserService, ImageToAsciiService, UploadLimits)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Controllers/UsersController.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
@@ -168,7 +168,7 @@ public class UsersController : ControllerBase</code></pre>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public UsersController(IUserService userService, ImageToAsciiService asciiService)</code></pre>
|
||||
<pre><code class="lang-csharp hljs">public UsersController(IUserService userService, ImageToAsciiService asciiService, UploadLimits uploadLimits)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
@@ -177,6 +177,8 @@ public class UsersController : ControllerBase</code></pre>
|
||||
<dd></dd>
|
||||
<dt><code>asciiService</code> <a class="xref" href="../core/EchoHub.Core.Services.ImageToAsciiService.html">ImageToAsciiService</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>uploadLimits</code> <a class="xref" href="EchoHub.Server.Config.UploadLimits.html">UploadLimits</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
@@ -462,6 +462,42 @@ Class ChannelService <a class="header-action link-secondary" title="View source
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Services_ChannelService_GetChannelMetaAsync_" data-uid="EchoHub.Server.Services.ChannelService.GetChannelMetaAsync*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Services_ChannelService_GetChannelMetaAsync_System_String_" data-uid="EchoHub.Server.Services.ChannelService.GetChannelMetaAsync(System.String)">
|
||||
GetChannelMetaAsync(string)
|
||||
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/ChannelService.cs"><i class="bi bi-code-slash"></i></a>
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"></div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public Task<ChannelMetaDto?> GetChannelMetaAsync(string channelName)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>channelName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><span class="xref">Task</span><<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs">ChannelMetaDto</a>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="EchoHub_Server_Services_ChannelService_GetChannelTopicAsync_" data-uid="EchoHub.Server.Services.ChannelService.GetChannelTopicAsync*"></a>
|
||||
|
||||
<h3 id="EchoHub_Server_Services_ChannelService_GetChannelTopicAsync_System_String_" data-uid="EchoHub.Server.Services.ChannelService.GetChannelTopicAsync(System.String)">
|
||||
|
||||
+16
-3
@@ -229,9 +229,6 @@
|
||||
<li>
|
||||
<a href="client/EchoHub.Client.UI.Dialogs.UpdateConfirmDialog.html" name="" title="UpdateConfirmDialog">UpdateConfirmDialog</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="client/EchoHub.Client.UI.Dialogs.UpdateProgressDialog.html" name="" title="UpdateProgressDialog">UpdateProgressDialog</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -248,6 +245,9 @@
|
||||
<li>
|
||||
<a href="client/EchoHub.Client.UI.Helpers.HexColorHelper.html" name="" title="HexColorHelper">HexColorHelper</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="client/EchoHub.Client.UI.Helpers.NickColorHelper.html" name="" title="NickColorHelper">NickColorHelper</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
@@ -363,6 +363,9 @@
|
||||
<li>
|
||||
<a href="core/EchoHub.Core.DTOs.ChannelError.html" name="" title="ChannelError">ChannelError</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="core/EchoHub.Core.DTOs.ChannelMetaDto.html" name="" title="ChannelMetaDto">ChannelMetaDto</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="core/EchoHub.Core.DTOs.ChannelOperationResult.html" name="" title="ChannelOperationResult">ChannelOperationResult</a>
|
||||
</li>
|
||||
@@ -540,6 +543,16 @@
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<span class="expand-stub"></span>
|
||||
<a href="server/EchoHub.Server.Config.html" name="" title="EchoHub.Server.Config">EchoHub.Server.Config</a>
|
||||
|
||||
<ul class="nav level4">
|
||||
<li>
|
||||
<a href="server/EchoHub.Server.Config.UploadLimits.html" name="" title="UploadLimits">UploadLimits</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<span class="expand-stub"></span>
|
||||
<a href="server/EchoHub.Server.Controllers.html" name="" title="EchoHub.Server.Controllers">EchoHub.Server.Controllers</a>
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
@@ -0,0 +1,271 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Encrypted Rooms (Password-Protected Channels) | EchoHub Documentation </title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="title" content="Encrypted Rooms (Password-Protected Channels) | EchoHub Documentation ">
|
||||
|
||||
|
||||
<link rel="icon" href="../images/hue_icon.svg">
|
||||
<link rel="stylesheet" href="../public/docfx.min.css">
|
||||
<link rel="stylesheet" href="../public/main.css">
|
||||
<meta name="docfx:navrel" content="../toc.html">
|
||||
<meta name="docfx:tocrel" content="toc.html">
|
||||
|
||||
<meta name="docfx:rel" content="../">
|
||||
|
||||
|
||||
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/blob/master/docs/#L1">
|
||||
<meta name="loc:inThisArticle" content="In this article">
|
||||
<meta name="loc:searchResultsCount" content="{count} results for "{query}"">
|
||||
<meta name="loc:searchNoResults" content="No results for "{query}"">
|
||||
<meta name="loc:tocFilter" content="Filter by title">
|
||||
<meta name="loc:nextArticle" content="Next">
|
||||
<meta name="loc:prevArticle" content="Previous">
|
||||
<meta name="loc:themeLight" content="Light">
|
||||
<meta name="loc:themeDark" content="Dark">
|
||||
<meta name="loc:themeAuto" content="Auto">
|
||||
<meta name="loc:changeTheme" content="Change theme">
|
||||
<meta name="loc:copy" content="Copy">
|
||||
<meta name="loc:downloadPdf" content="Download PDF">
|
||||
|
||||
<script type="module" src="./../public/docfx.min.js"></script>
|
||||
|
||||
<script>
|
||||
const theme = localStorage.getItem('theme') || 'auto'
|
||||
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="">
|
||||
<header class="bg-body border-bottom">
|
||||
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
|
||||
<div class="container-xxl flex-nowrap">
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<img id="logo" class="svg" src="../images/hue_icon.svg" alt="EchoHub">
|
||||
EchoHub
|
||||
</a>
|
||||
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<i class="bi bi-three-dots"></i>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navpanel">
|
||||
<div id="navbar">
|
||||
<form class="search" role="search" id="search">
|
||||
<i class="bi bi-search"></i>
|
||||
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="container-xxl">
|
||||
<div class="toc-offcanvas">
|
||||
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
|
||||
<div class="offcanvas-header">
|
||||
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="offcanvas-body">
|
||||
<nav class="toc" id="toc"></nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<div class="actionbar">
|
||||
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
|
||||
<i class="bi bi-list"></i>
|
||||
</button>
|
||||
|
||||
<nav id="breadcrumb"></nav>
|
||||
</div>
|
||||
|
||||
<article data-uid="">
|
||||
<h1 id="encrypted-rooms-password-protected-channels">Encrypted Rooms (Password-Protected Channels)</h1>
|
||||
|
||||
<p>An <strong>encrypted room</strong> is a channel whose entire content — every message and every file — is
|
||||
end-to-end encrypted with a key derived from a shared passphrase. Only people who know the
|
||||
passphrase can read the room. <strong>Not even the server owner can read the content</strong>, yet the server
|
||||
can still gate who joins, and it can count and measure what's stored (message count, file sizes,
|
||||
timestamps) without ever seeing the plaintext.</p>
|
||||
<p>This is a stronger guarantee than the <a href="encryption.html">transport and at-rest encryption</a> described
|
||||
elsewhere, where the server decrypts every message to process it. Here the server is treated as
|
||||
<em>untrusted</em> for content: it holds only ciphertext and wrapped keys.</p>
|
||||
<blockquote>
|
||||
<p><strong>The passphrase is the only key.</strong> There is no recovery. If everyone who knows a room's
|
||||
passphrase forgets it, that room's history is permanently unreadable — by design.</p>
|
||||
</blockquote>
|
||||
<h2 id="what-the-server-can-and-cannot-see">What the server can and cannot see</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>The server <strong>can</strong> see</th>
|
||||
<th>The server <strong>cannot</strong> see</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>That the channel is encrypted</td>
|
||||
<td>Message text</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Message count and timestamps</td>
|
||||
<td>File contents</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Who sent each message (sender identity)</td>
|
||||
<td>Image previews (ASCII art)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Each attachment's <strong>file name</strong> and byte size</td>
|
||||
<td>The passphrase, the room key, or the key-encryption key</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The estimated total size (via <code>/meta</code>)</td>
|
||||
<td>Anything that would let it decrypt the above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>File <strong>names are stored in plaintext</strong> so the file list stays usable — treat a file name itself as
|
||||
non-secret. Everything <em>inside</em> the file is encrypted.</p>
|
||||
<h2 id="key-hierarchy">Key hierarchy</h2>
|
||||
<p>Three keys are derived from one passphrase. The passphrase, the key-encryption key, and the room
|
||||
content key <strong>never leave the client</strong>.</p>
|
||||
<pre><code class="lang-mermaid">flowchart TD
|
||||
P[Passphrase] -->|PBKDF2-SHA256, 210k iterations, per-room salt| OKM[64-byte output]
|
||||
OKM --> AK["Auth key (first 32 bytes)"]
|
||||
OKM --> KEK["Key-encryption key / KEK (last 32 bytes)"]
|
||||
AK -->|sent as lowercase hex| SRV1["Server: BCrypt-hash as the join gate"]
|
||||
RCK["Room Content Key (random 256-bit)"] -->|encrypts all content| CONTENT[Messages + files + previews]
|
||||
RCK -->|AES-256-GCM wrap under KEK| WRAP["Wrapped room key"]
|
||||
WRAP -->|stored| SRV2["Server: stores wrapped key + salt only"]
|
||||
</code></pre>
|
||||
<ul>
|
||||
<li><strong>Auth key</strong> — the join credential. Derived from the passphrase, sent to the server as hex, and
|
||||
stored only as a <strong>BCrypt hash</strong>. Proving knowledge of it is what lets you join; it reveals
|
||||
nothing about the content key.</li>
|
||||
<li><strong>Key-encryption key (KEK)</strong> — never sent. Used locally to <em>wrap</em> (encrypt) and <em>unwrap</em> the room
|
||||
content key.</li>
|
||||
<li><strong>Room Content Key (RCK)</strong> — a random 256-bit key generated once, at room creation. It encrypts
|
||||
every message and file. The server stores it only in wrapped form, so it can hand the wrapped key
|
||||
to a joiner but can never unwrap it itself.</li>
|
||||
</ul>
|
||||
<p>All content encryption is <strong>AES-256-GCM</strong> with a random 12-byte nonce and a 16-byte authentication
|
||||
tag per item, so identical inputs never produce identical ciphertext, and any tampering is detected.</p>
|
||||
<p>Room-encrypted text carries a self-describing prefix so clients and the server can tell it apart
|
||||
from plaintext:</p>
|
||||
<pre><code class="lang-text">$RC1$base64(nonce || tag || ciphertext)
|
||||
</code></pre>
|
||||
<h2 id="creating-a-room">Creating a room</h2>
|
||||
<p>The client does all the cryptography locally, then hands the server only what it needs to gate joins
|
||||
and store (but not read) the content.</p>
|
||||
<pre><code class="lang-mermaid">sequenceDiagram
|
||||
participant Client
|
||||
participant Server
|
||||
|
||||
Client->>Client: generate salt + random Room Content Key (RCK)
|
||||
Client->>Client: DeriveKeys(passphrase, salt) → auth key + KEK
|
||||
Client->>Client: wrap RCK under KEK
|
||||
Client->>Server: create channel { authKey(hex), salt, wrappedRoomKey }
|
||||
Server->>Server: BCrypt-hash auth key, store salt + wrapped key
|
||||
Note over Server: Server never receives passphrase, KEK, or RCK
|
||||
</code></pre>
|
||||
<h2 id="joining-a-room">Joining a room</h2>
|
||||
<pre><code class="lang-mermaid">sequenceDiagram
|
||||
participant Client
|
||||
participant Server
|
||||
|
||||
Client->>Server: GET /crypto → { isEncrypted, salt }
|
||||
Client->>Client: DeriveKeys(passphrase, salt) → auth key + KEK
|
||||
Client->>Server: join { authKey(hex) }
|
||||
Server->>Server: BCrypt-verify against stored hash
|
||||
alt correct passphrase
|
||||
Server->>Client: history (ciphertext) + wrapped room key
|
||||
Client->>Client: unwrap RCK with KEK, then decrypt everything locally
|
||||
else wrong passphrase
|
||||
Server->>Client: rejected (join gate fails)
|
||||
end
|
||||
</code></pre>
|
||||
<p>A wrong passphrase fails the BCrypt gate, so the server never even hands out the wrapped key. Even if
|
||||
it did, an attacker without the KEK cannot unwrap it.</p>
|
||||
<h2 id="what-gets-encrypted">What gets encrypted</h2>
|
||||
<p>When you send a message or attach files to an encrypted room, the client encrypts each part with the
|
||||
room content key <strong>before</strong> uploading:</p>
|
||||
<ul>
|
||||
<li><strong>Message text</strong> → <code>$RC1$…</code> ciphertext.</li>
|
||||
<li><strong>Files</strong> (any kind) → the whole blob is AES-256-GCM encrypted client-side; the server stores an
|
||||
opaque ciphertext blob.</li>
|
||||
<li><strong>Image ASCII previews</strong> → rendered on the client, then room-encrypted. The server never sees the
|
||||
rendered art.</li>
|
||||
</ul>
|
||||
<p>The server records each attachment's <strong>kind</strong>, <strong>file name</strong>, and <strong>byte size</strong> (of the ciphertext
|
||||
blob) as metadata, and broadcasts the ciphertext to other members, who decrypt locally.</p>
|
||||
<h2 id="changing-the-passphrase">Changing the passphrase</h2>
|
||||
<p><code>/passwd <old> <new></code> rotates the passphrase. Because only the <em>wrapping</em> of the room content key
|
||||
changes — not the RCK itself — <strong>all existing history stays readable</strong>:</p>
|
||||
<ol>
|
||||
<li>The client proves knowledge of the old passphrase (old auth key).</li>
|
||||
<li>It unwraps the RCK with the old KEK, then re-wraps it under the new KEK (new salt).</li>
|
||||
<li>It uploads the new auth key + salt + re-wrapped key. The content is never re-encrypted.</li>
|
||||
</ol>
|
||||
<h2 id="inspecting-a-room">Inspecting a room</h2>
|
||||
<p>Use <code>/meta</code> in any channel to see what the server knows about it, including encrypted rooms:</p>
|
||||
<pre><code class="lang-text">Room info for #private-room:
|
||||
Room ID 3f2a…-…-…
|
||||
Created 7/16/2026 2:31 PM
|
||||
Messages 128
|
||||
Unique users 4
|
||||
Est. size 42.5 MB
|
||||
Protection end-to-end encrypted
|
||||
</code></pre>
|
||||
<p><code>Est. size</code> is the sum of stored attachment blob sizes plus message text length — an estimate of the
|
||||
room's footprint, computed entirely from metadata the server holds without reading any content.</p>
|
||||
<h2 id="limitations--security-notes">Limitations & security notes</h2>
|
||||
<ul>
|
||||
<li><strong>No recovery.</strong> A lost passphrase means unrecoverable history. Keep it safe; there is no reset.</li>
|
||||
<li><strong>File names are plaintext.</strong> They stay readable so the file list works — don't put secrets in a
|
||||
file name.</li>
|
||||
<li><strong>IRC is disabled for encrypted rooms.</strong> The IRC gateway forwards plaintext and cannot participate
|
||||
in the room's key scheme, so encrypted channels are not bridged to IRC.</li>
|
||||
<li><strong>Metadata is visible.</strong> Message counts, timestamps, sender identities, file names, and sizes are
|
||||
intentionally readable so the server can moderate at the metadata level and report <code>/meta</code>.</li>
|
||||
<li><strong>Endpoint trust.</strong> End-to-end encryption protects content from the server and the network, not
|
||||
from a compromised client device that already holds the passphrase.</li>
|
||||
</ul>
|
||||
<h2 id="related">Related</h2>
|
||||
<ul>
|
||||
<li><a href="encryption.html">Message Encryption</a> — transport (<code>$ENC$v1$</code>) and optional at-rest database
|
||||
encryption, where the server <em>does</em> decrypt content for processing. Encrypted rooms are a separate,
|
||||
stronger layer that sits on top.</li>
|
||||
</ul>
|
||||
|
||||
</article>
|
||||
|
||||
<div class="contribution d-print-none">
|
||||
<a href="https://github.com/HueByte/EchoHub/blob/master/docs/#L1" class="edit-link">Edit this page</a>
|
||||
</div>
|
||||
|
||||
<div class="next-article d-print-none border-top" id="nextArticle"></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="affix">
|
||||
<nav id="affix"></nav>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div class="container-xxl search-results" id="search-results"></div>
|
||||
|
||||
<footer class="border-top text-secondary">
|
||||
<div class="container-xxl">
|
||||
<div class="flex-fill">
|
||||
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>·</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>·</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -197,7 +197,7 @@
|
||||
<h3 id="limitations">Limitations</h3>
|
||||
<ul>
|
||||
<li><strong>TLS-inspecting proxies</strong> — if a corporate proxy terminates TLS with a trusted root CA, it can intercept the key exchange (<code>GET /api/server/encryption-key</code>) and read all traffic. A future upgrade to ECDH key exchange would address this.</li>
|
||||
<li><strong>Server has full access</strong> — the server decrypts all messages for processing. This is not end-to-end encryption between users; it's transport encryption between client and server.</li>
|
||||
<li><strong>Server has full access</strong> — the server decrypts all messages for processing. This is not end-to-end encryption between users; it's transport encryption between client and server. For true end-to-end encryption where the server cannot read content, use <a href="encrypted-rooms.html">encrypted rooms</a>.</li>
|
||||
<li><strong>IRC clients receive plaintext</strong> — IRC is an open protocol and third-party clients cannot participate in the encryption scheme.</li>
|
||||
</ul>
|
||||
<h2 id="troubleshooting">Troubleshooting</h2>
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
<li>
|
||||
<a href="encryption.html" name="" title="Encryption">Encryption</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="encrypted-rooms.html" name="" title="Encrypted Rooms">Encrypted Rooms</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="notification-sounds.html" name="" title="Notification Sounds">Notification Sounds</a>
|
||||
</li>
|
||||
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
|
||||
{"items":[{"name":"Guides","items":[{"name":"Getting Started","href":"getting-started.html","topicHref":"getting-started.html"},{"name":"Docker","href":"docker.html","topicHref":"docker.html"},{"name":"Architecture","href":"architecture.html","topicHref":"architecture.html"},{"name":"Configuration","href":"configuration.html","topicHref":"configuration.html"},{"name":"Encryption","href":"encryption.html","topicHref":"encryption.html"},{"name":"Notification Sounds","href":"notification-sounds.html","topicHref":"notification-sounds.html"}]},{"name":"Flows","includedFrom":"~/flows/toc.yml","items":[{"name":"Authentication","href":"../flows/authentication.html","topicHref":"../flows/authentication.html"},{"name":"Connection","href":"../flows/connection.html","topicHref":"../flows/connection.html"},{"name":"Messaging","href":"../flows/messaging.html","topicHref":"../flows/messaging.html"},{"name":"Channels","href":"../flows/channels.html","topicHref":"../flows/channels.html"},{"name":"Moderation","href":"../flows/moderation.html","topicHref":"../flows/moderation.html"},{"name":"Media & Services","href":"../flows/media.html","topicHref":"../flows/media.html"}]}]}
|
||||
{"items":[{"name":"Guides","items":[{"name":"Getting Started","href":"getting-started.html","topicHref":"getting-started.html"},{"name":"Docker","href":"docker.html","topicHref":"docker.html"},{"name":"Architecture","href":"architecture.html","topicHref":"architecture.html"},{"name":"Configuration","href":"configuration.html","topicHref":"configuration.html"},{"name":"Encryption","href":"encryption.html","topicHref":"encryption.html"},{"name":"Encrypted Rooms","href":"encrypted-rooms.html","topicHref":"encrypted-rooms.html"},{"name":"Notification Sounds","href":"notification-sounds.html","topicHref":"notification-sounds.html"}]},{"name":"Flows","includedFrom":"~/flows/toc.yml","items":[{"name":"Authentication","href":"../flows/authentication.html","topicHref":"../flows/authentication.html"},{"name":"Connection","href":"../flows/connection.html","topicHref":"../flows/connection.html"},{"name":"Messaging","href":"../flows/messaging.html","topicHref":"../flows/messaging.html"},{"name":"Channels","href":"../flows/channels.html","topicHref":"../flows/channels.html"},{"name":"Moderation","href":"../flows/moderation.html","topicHref":"../flows/moderation.html"},{"name":"Media & Services","href":"../flows/media.html","topicHref":"../flows/media.html"}]}]}
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
<p>Release history for EchoHub.</p>
|
||||
<h2 id="releases">Releases</h2>
|
||||
<ul>
|
||||
<li><a href="v0.2.13.html">v0.2.13</a> - Chat Visual Overhaul, Auto-Join All Channels & Persistent Read Positions</li>
|
||||
<li><a href="v0.2.12.html">v0.2.12</a> - End-to-End Encrypted Channels, IRC Channel Keys, Image Save & Ctrl+W Crash Fix</li>
|
||||
<li><a href="v0.2.11.html">v0.2.11</a> - EchoHubSpace Auth, Live Directory Updates & Server Browser Metadata</li>
|
||||
<li><a href="v0.2.10.html">v0.2.10</a> - Command Palette, Infinite History Scroll & Auto-Updater Fixes</li>
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
<li>
|
||||
<a href="index.html" name="" title="Overview">Overview</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="v0.2.13.html" name="" title="v0.2.13">v0.2.13</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="v0.2.12.html" name="" title="v0.2.12">v0.2.12</a>
|
||||
</li>
|
||||
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
|
||||
{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"v0.2.12","href":"v0.2.12.html","topicHref":"v0.2.12.html"},{"name":"v0.2.11","href":"v0.2.11.html","topicHref":"v0.2.11.html"},{"name":"v0.2.10","href":"v0.2.10.html","topicHref":"v0.2.10.html"},{"name":"v0.2.9","href":"v0.2.9.html","topicHref":"v0.2.9.html"},{"name":"v0.2.8","href":"v0.2.8.html","topicHref":"v0.2.8.html"},{"name":"v0.2.7","href":"v0.2.7.html","topicHref":"v0.2.7.html"},{"name":"v0.2.6","href":"v0.2.6.html","topicHref":"v0.2.6.html"},{"name":"v0.2.5","href":"v0.2.5.html","topicHref":"v0.2.5.html"},{"name":"v0.2.4","href":"v0.2.4.html","topicHref":"v0.2.4.html"},{"name":"v0.2.3","href":"v0.2.3.html","topicHref":"v0.2.3.html"},{"name":"v0.2.2","href":"v0.2.2.html","topicHref":"v0.2.2.html"},{"name":"v0.2.1","href":"v0.2.1.html","topicHref":"v0.2.1.html"},{"name":"v0.2.0","href":"v0.2.0.html","topicHref":"v0.2.0.html"},{"name":"v0.1.1","href":"v0.1.1.html","topicHref":"v0.1.1.html"},{"name":"v0.1.0","href":"v0.1.0.html","topicHref":"v0.1.0.html"}]}
|
||||
{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"v0.2.13","href":"v0.2.13.html","topicHref":"v0.2.13.html"},{"name":"v0.2.12","href":"v0.2.12.html","topicHref":"v0.2.12.html"},{"name":"v0.2.11","href":"v0.2.11.html","topicHref":"v0.2.11.html"},{"name":"v0.2.10","href":"v0.2.10.html","topicHref":"v0.2.10.html"},{"name":"v0.2.9","href":"v0.2.9.html","topicHref":"v0.2.9.html"},{"name":"v0.2.8","href":"v0.2.8.html","topicHref":"v0.2.8.html"},{"name":"v0.2.7","href":"v0.2.7.html","topicHref":"v0.2.7.html"},{"name":"v0.2.6","href":"v0.2.6.html","topicHref":"v0.2.6.html"},{"name":"v0.2.5","href":"v0.2.5.html","topicHref":"v0.2.5.html"},{"name":"v0.2.4","href":"v0.2.4.html","topicHref":"v0.2.4.html"},{"name":"v0.2.3","href":"v0.2.3.html","topicHref":"v0.2.3.html"},{"name":"v0.2.2","href":"v0.2.2.html","topicHref":"v0.2.2.html"},{"name":"v0.2.1","href":"v0.2.1.html","topicHref":"v0.2.1.html"},{"name":"v0.2.0","href":"v0.2.0.html","topicHref":"v0.2.0.html"},{"name":"v0.1.1","href":"v0.1.1.html","topicHref":"v0.1.1.html"},{"name":"v0.1.0","href":"v0.1.0.html","topicHref":"v0.1.0.html"}]}
|
||||
|
||||
@@ -120,7 +120,10 @@
|
||||
<li>Attach a file by drag & drop or by pasting — drop a file onto the terminal, or <strong>copy a file in your file manager and press Ctrl+V</strong>, to stage it as an attachment (the next Enter sends it with your caption). Multiple files at once are supported. Ctrl+V still pastes text when the clipboard holds text; Ctrl+Y is a paste alias. On Windows the copied-file paste reads the clipboard's file list directly (Windows Terminal never pastes copied files as text), with <code>xclip</code>/<code>wl-paste</code> used on Linux</li>
|
||||
<li>Pick ASCII-art size for attached images — <code>/size</code> opens a Small/Medium/Large picker (40×40 / 80×80 / 120×120) with descriptions, <code>/size <s|m|l></code> sets it directly, and <code>/send <file> -l</code> sets it for that message. The choice is a saved preference and applies to copy-paste/drag-drop images (which have no per-file flag); the current size is shown in the staging tray</li>
|
||||
<li>New <code>TransparentLight</code> theme — dark characters on a transparent background, for light terminal color schemes (<code>/theme transparentlight</code>)</li>
|
||||
<li>Timestamps in messages are now aware of the current culture and display the short time pattern for today's messages and the short date+time pattern for older messages.</li>
|
||||
<li><strong><code>/meta</code> command</strong> — shows a summary of the current room: room id, created date, message count, unique participant count, estimated storage size, and protection level (open / password-protected / end-to-end encrypted). Works for encrypted rooms too, since these are all metadata the server tracks without reading content. (<code>/info</code> is an alias.)</li>
|
||||
<li><strong>Configurable upload limits</strong> — a new <code>Uploads</code> section in the server settings sets the maximum size per file, image, audio clip, and avatar, plus the maximum attachments per message. Absent values fall back to the previous built-in limits, so existing servers are unaffected until they opt in.</li>
|
||||
<li><strong>Updater progress bar</strong> — the self-updater now draws a real progress bar on the console (<code>Downloading [████████░░] 62%</code>) for each step, replacing the plain status lines, so a large download shows visible progress.</li>
|
||||
<li>Timestamps in messages are culture-aware and now <strong>always include the date</strong>: today's messages show a compact date + short time, and older messages show the general short date/time.</li>
|
||||
</ul>
|
||||
<h2 id="bug-fixes">Bug Fixes</h2>
|
||||
<ul>
|
||||
@@ -128,12 +131,16 @@
|
||||
<li>Attachments whose files have been pruned (retention cleanup deletes blobs older than <code>Storage:RetentionDays</code> but left the message rows) no longer render a dead download/preview. When channel history loads, the server checks which attachment blobs still exist: missing ones are dropped from the message, and an attachment-only message whose files are all gone is removed from the database.</li>
|
||||
<li>Fixed intermittent crash on Ctrl+W — Terminal.Gui binds Ctrl+W to clipboard-cut, and Windows clipboard contention (another app holding the clipboard) threw an unhandled <code>Win32Exception</code> that took the app down. Ctrl+W now deletes the previous word (readline behavior, no clipboard), and all clipboard shortcuts (Ctrl+X/C/V/Y) are guarded so transient clipboard failures log a warning instead of crashing</li>
|
||||
<li>Fixed emoji shortcode replacement permanently disabling itself if a cursor update threw mid-replacement</li>
|
||||
<li>Fixed new messages showing no date — today's messages rendered time-only, and the "is it today?" check compared the server's UTC date against the local date, so the classification could also be wrong near midnight. Timestamps are now converted to local time first and always include the date.</li>
|
||||
<li>Fixed the self-updater hanging at "extracting" — the update ran while the Terminal.Gui main loop still owned the console, so the old and new processes deadlocked over it. The update now runs after the TUI shuts down, on a clean console</li>
|
||||
<li>IRC <code>LIST</code> no longer leaks private channels; protected channels are marked <code>[+k]</code></li>
|
||||
</ul>
|
||||
<h2 id="api-changes">API Changes</h2>
|
||||
<ul>
|
||||
<li><code>ChannelDto</code> gains <code>isProtected</code> and <code>isEncrypted</code>; <code>CreateChannelRequest</code> gains optional <code>password</code>, <code>encryptionSalt</code>, and <code>wrappedRoomKey</code>; SignalR <code>JoinChannel</code> takes an optional second <code>password</code> argument and <code>JoinChannelResult</code> gains <code>passwordRequired</code>, <code>encryptionSalt</code>, and <code>wrappedRoomKey</code> (older clients must update to join over SignalR)</li>
|
||||
<li>New endpoints: <code>GET /api/channels/{channel}/crypto</code> (public crypto metadata — salt only, never the wrapped key) and <code>POST /api/channels/{channel}/rekey</code> (creator-only passphrase change)</li>
|
||||
<li>New endpoint <code>GET /api/channels/{channel}/meta</code> returns a <code>ChannelMetaDto</code> (room id, name, topic, encrypted/protected flags, message count, unique user count, estimated size, created date) backing the <code>/meta</code> command</li>
|
||||
<li>New server <code>Uploads</code> configuration section (<code>MaxFileSizeMB</code>, <code>MaxImageSizeMB</code>, <code>MaxAudioSizeMB</code>, <code>MaxAvatarSizeMB</code>, <code>MaxAttachmentsPerMessage</code>); the message-upload endpoint's request-body ceiling is now derived from these values at runtime rather than from compile-time constants</li>
|
||||
<li>The upload endpoint accepts <code>type</code> and <code>content</code> form fields for encrypted channels, where the client supplies the declared message type and room-encrypted content</li>
|
||||
<li><code>ImageToAsciiService</code> and <code>FileValidationHelper</code> moved from <code>EchoHub.Server</code> to <code>EchoHub.Core</code> so the client can render ASCII art and detect file types for encrypted uploads</li>
|
||||
<li><strong>Message shape change</strong>: <code>MessageDto</code> drops <code>Type</code>/<code>AttachmentUrl</code>/<code>AttachmentFileName</code>/<code>AttachmentFileSize</code> and gains <code>Attachments</code> (a list of <code>AttachmentDto { Kind, Url, FileName, FileSize, AsciiPreview }</code>, null/empty for plain text). New <code>Attachment</code> entity + table with a cascade FK to <code>Message</code></li>
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>v0.2.13 | EchoHub Documentation </title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="title" content="v0.2.13 | EchoHub Documentation ">
|
||||
|
||||
|
||||
<link rel="icon" href="../images/hue_icon.svg">
|
||||
<link rel="stylesheet" href="../public/docfx.min.css">
|
||||
<link rel="stylesheet" href="../public/main.css">
|
||||
<meta name="docfx:navrel" content="../toc.html">
|
||||
<meta name="docfx:tocrel" content="toc.html">
|
||||
|
||||
<meta name="docfx:rel" content="../">
|
||||
|
||||
|
||||
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/blob/master/docs/#L1">
|
||||
<meta name="loc:inThisArticle" content="In this article">
|
||||
<meta name="loc:searchResultsCount" content="{count} results for "{query}"">
|
||||
<meta name="loc:searchNoResults" content="No results for "{query}"">
|
||||
<meta name="loc:tocFilter" content="Filter by title">
|
||||
<meta name="loc:nextArticle" content="Next">
|
||||
<meta name="loc:prevArticle" content="Previous">
|
||||
<meta name="loc:themeLight" content="Light">
|
||||
<meta name="loc:themeDark" content="Dark">
|
||||
<meta name="loc:themeAuto" content="Auto">
|
||||
<meta name="loc:changeTheme" content="Change theme">
|
||||
<meta name="loc:copy" content="Copy">
|
||||
<meta name="loc:downloadPdf" content="Download PDF">
|
||||
|
||||
<script type="module" src="./../public/docfx.min.js"></script>
|
||||
|
||||
<script>
|
||||
const theme = localStorage.getItem('theme') || 'auto'
|
||||
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="">
|
||||
<header class="bg-body border-bottom">
|
||||
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
|
||||
<div class="container-xxl flex-nowrap">
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<img id="logo" class="svg" src="../images/hue_icon.svg" alt="EchoHub">
|
||||
EchoHub
|
||||
</a>
|
||||
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<i class="bi bi-three-dots"></i>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navpanel">
|
||||
<div id="navbar">
|
||||
<form class="search" role="search" id="search">
|
||||
<i class="bi bi-search"></i>
|
||||
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="container-xxl">
|
||||
<div class="toc-offcanvas">
|
||||
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
|
||||
<div class="offcanvas-header">
|
||||
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="offcanvas-body">
|
||||
<nav class="toc" id="toc"></nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<div class="actionbar">
|
||||
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
|
||||
<i class="bi bi-list"></i>
|
||||
</button>
|
||||
|
||||
<nav id="breadcrumb"></nav>
|
||||
</div>
|
||||
|
||||
<article data-uid="">
|
||||
<h1 id="v0213">v0.2.13</h1>
|
||||
|
||||
<p>A visual overhaul of the chat client — WeeChat-style column layout, per-user nick colors, date rules, unread markers, an activity status segment, and an ASCII welcome banner — plus reliable cross-channel notifications: the client now joins all your channels at connect so unread counts and @mentions light up everywhere, and read positions persist across restarts so activity that happened while you were offline still shows. Modern polish, old IRC soul.</p>
|
||||
<h2 id="new-features">New Features</h2>
|
||||
<ul>
|
||||
<li><strong>Aligned message layout (WeeChat-style)</strong> — every message renders as <code>HH:mm nickname │ text</code>: a dim timestamp, the nick right-aligned in a fixed 12-column gutter, and a dim <code>│</code> rail separating names from content. Word-wrapped continuation lines, multi-line messages, attachments, ASCII-art image previews, and link embeds all align under the text column and extend the rail, so conversations read as a clean two-column grid. Over-long nicks are truncated with <code>…</code> in the gutter only — profiles, mentions, and the users panel always use the full name. System and status lines (<code>joined</code>, <code>is now Away</code>, …) show <code>--</code> in the nick column, replacing the old <code>**</code> prefix.</li>
|
||||
<li><strong>Deterministic nickname colors</strong> — users who haven't picked a <code>/color</code> now get an automatic, stable color derived from their nick (12-entry palette chosen to stay readable on dark and light backgrounds). The same user is the same color in message headers and the online-users panel, on every client, every session. An explicitly chosen nickname color still takes priority.</li>
|
||||
<li><strong>Date separator rules</strong> — a full-width <code>── Wed, Jul 16 2026 ─────</code> rule is inserted whenever the calendar day changes (live, in loaded history, and when scrolling back through older messages). Timestamps are now a compact <code>HH:mm</code> — the date lives in the rules instead of being repeated on every line.</li>
|
||||
<li><strong>"New messages" marker</strong> — the first message that arrives in a channel you're not viewing gets an orange <code>── new messages ──</code> rule above it (irssi-style). Switch to the channel and the marker shows exactly where you left off; it survives the history reload on channel switch and is consumed when you move away again.</li>
|
||||
<li><strong>Status bar activity segment</strong> — channels with unread messages appear in the status bar as <code>│ Act: #dev,#random</code> (up to 4, <code>+n</code> overflow). Channels where you were @mentioned show in orange, others in cyan.</li>
|
||||
<li><strong>Connecting spinner</strong> — transitional connection states (Connecting, Reconnecting, Authenticating…) now animate a braille spinner in the status bar instead of sitting on static text.</li>
|
||||
<li><strong>Mention-aware channel list</strong> — a channel where you were @mentioned turns orange in the channel list (name and unread badge), escalating above the cyan plain-unread highlight. The highlight clears when you view the channel.</li>
|
||||
<li><strong>Welcome banner</strong> — with no channel selected (fresh start, or after disconnecting) the chat pane shows a gold-gradient ASCII "ECHOHUB" logo with the version and key hints, instead of an empty box. Narrow panes get a compact variant.</li>
|
||||
<li><strong>Rounded frame borders</strong> — the channels, chat, input, and users panels draw with rounded corners.</li>
|
||||
<li><strong>Auto-join all channels at connect</strong> — the client now joins every channel it lists for you (public channels and prior memberships) as part of connecting, so message events flow for all of them: unread badges, @mention highlights, and the status-bar activity segment work without having to open each channel first. Protected channels you've never entered are skipped silently (joining them stays a prompted, manual action), and channels you <code>/leave</code> are remembered and excluded until you join them again.</li>
|
||||
<li><strong>Read positions survive restarts</strong> — the client persists the last message you read per channel (locally, per server). On the next connect it compares that against fetched history, so messages that arrived while you were offline still produce unread counts, mention highlights, and a correctly placed "new messages" marker.</li>
|
||||
<li><strong>Theme-tinted frame borders</strong> — themes can now color the window frame borders independently of text via a new optional <code>border</code> section (hex values supported). The Transparent and TransparentLight themes use it to draw dim gray borders instead of stark white ones, for a subtler, glassier look. Custom theme JSON files without a <code>border</code> section keep their base colors.</li>
|
||||
</ul>
|
||||
<h2 id="bug-fixes">Bug Fixes</h2>
|
||||
<ul>
|
||||
<li>The @mention highlight no longer drops off the second and later lines of a long mention message — wrapped continuation lines now inherit the highlight.</li>
|
||||
<li>The unread-position marker is re-anchored after a channel switch reloads history, instead of being wiped by the reload before you could see it.</li>
|
||||
<li>Cached room keys for end-to-end encrypted channels no longer disappear from the config on reconnect. Saving the server entry after a successful connect replaced it wholesale, wiping the cached keys (and forcing a passphrase re-entry on the next launch); the entry is now updated in place.</li>
|
||||
<li>A failed channel rejoin after a reconnect (e.g. a channel deleted while you were away) no longer aborts rejoining the remaining channels.</li>
|
||||
<li>Client config file access is now serialized across threads (token refresh, room-key cache, and read-position checkpoints all write it), preventing rare config corruption.</li>
|
||||
</ul>
|
||||
|
||||
</article>
|
||||
|
||||
<div class="contribution d-print-none">
|
||||
<a href="https://github.com/HueByte/EchoHub/blob/master/docs/#L1" class="edit-link">Edit this page</a>
|
||||
</div>
|
||||
|
||||
<div class="next-article d-print-none border-top" id="nextArticle"></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="affix">
|
||||
<nav id="affix"></nav>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div class="container-xxl search-results" id="search-results"></div>
|
||||
|
||||
<footer class="border-top text-secondary">
|
||||
<div class="container-xxl">
|
||||
<div class="flex-fill">
|
||||
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>·</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>·</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
+51
-26
File diff suppressed because one or more lines are too long
+76
-14
@@ -780,20 +780,6 @@
|
||||
"Title": "EchoHub.Client.UI.Dialogs.UpdateConfirmDialog",
|
||||
"Summary": null
|
||||
},
|
||||
{
|
||||
"type": "ManagedReference",
|
||||
"source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.UpdateProgressDialog.yml",
|
||||
"output": {
|
||||
".html": {
|
||||
"relative_path": "api/client/EchoHub.Client.UI.Dialogs.UpdateProgressDialog.html"
|
||||
}
|
||||
},
|
||||
"version": "",
|
||||
"Uid": null,
|
||||
"IsMRef": true,
|
||||
"Title": "EchoHub.Client.UI.Dialogs.UpdateProgressDialog",
|
||||
"Summary": null
|
||||
},
|
||||
{
|
||||
"type": "ManagedReference",
|
||||
"source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.yml",
|
||||
@@ -850,6 +836,20 @@
|
||||
"Title": "EchoHub.Client.UI.Helpers.HexColorHelper",
|
||||
"Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Helpers.HexColorHelper.yml\" sourcestartlinenumber=\"1\">Helper to parse hex colors to Terminal.Gui Attributes.</p>\n"
|
||||
},
|
||||
{
|
||||
"type": "ManagedReference",
|
||||
"source_relative_path": "_api_meta/client/EchoHub.Client.UI.Helpers.NickColorHelper.yml",
|
||||
"output": {
|
||||
".html": {
|
||||
"relative_path": "api/client/EchoHub.Client.UI.Helpers.NickColorHelper.html"
|
||||
}
|
||||
},
|
||||
"version": "",
|
||||
"Uid": null,
|
||||
"IsMRef": true,
|
||||
"Title": "EchoHub.Client.UI.Helpers.NickColorHelper",
|
||||
"Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Helpers.NickColorHelper.yml\" sourcestartlinenumber=\"1\">Deterministic per-nick colors for users who haven't picked a nickname color.\nThe same nick always maps to the same palette entry (classic IRC client behavior),\nso a busy channel stays scannable without any configuration.</p>\n"
|
||||
},
|
||||
{
|
||||
"type": "ManagedReference",
|
||||
"source_relative_path": "_api_meta/client/EchoHub.Client.UI.Helpers.yml",
|
||||
@@ -1242,6 +1242,20 @@
|
||||
"Title": "EchoHub.Core.DTOs.ChannelError",
|
||||
"Summary": null
|
||||
},
|
||||
{
|
||||
"type": "ManagedReference",
|
||||
"source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ChannelMetaDto.yml",
|
||||
"output": {
|
||||
".html": {
|
||||
"relative_path": "api/core/EchoHub.Core.DTOs.ChannelMetaDto.html"
|
||||
}
|
||||
},
|
||||
"version": "",
|
||||
"Uid": null,
|
||||
"IsMRef": true,
|
||||
"Title": "EchoHub.Core.DTOs.ChannelMetaDto",
|
||||
"Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.DTOs.ChannelMetaDto.yml\" sourcestartlinenumber=\"1\">Human-facing summary of a channel (the <code>/meta</code> command). For encrypted channels the\nserver still knows these figures — count, timestamps, and stored blob sizes — even though it\ncannot read the content itself. <xref href=\"EchoHub.Core.DTOs.ChannelMetaDto.EstimatedSizeBytes\" data-throw-if-not-resolved=\"false\"></xref> is the sum of stored\nattachment blob sizes plus message text length, so it is an estimate, not an exact on-disk total.</p>\n"
|
||||
},
|
||||
{
|
||||
"type": "ManagedReference",
|
||||
"source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ChannelOperationResult.yml",
|
||||
@@ -2026,6 +2040,34 @@
|
||||
"Title": "EchoHub.Server.Auth",
|
||||
"Summary": null
|
||||
},
|
||||
{
|
||||
"type": "ManagedReference",
|
||||
"source_relative_path": "_api_meta/server/EchoHub.Server.Config.UploadLimits.yml",
|
||||
"output": {
|
||||
".html": {
|
||||
"relative_path": "api/server/EchoHub.Server.Config.UploadLimits.html"
|
||||
}
|
||||
},
|
||||
"version": "",
|
||||
"Uid": null,
|
||||
"IsMRef": true,
|
||||
"Title": "EchoHub.Server.Config.UploadLimits",
|
||||
"Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Config.UploadLimits.yml\" sourcestartlinenumber=\"1\">Admin-configurable upload limits, bound from the <code>Uploads</code> configuration section.\nSizes are expressed in megabytes in configuration; the <code>*Bytes</code> accessors convert them\nfor enforcement. Every default mirrors <xref href=\"EchoHub.Core.Constants.HubConstants\" data-throw-if-not-resolved=\"false\"></xref> so an absent or partial\n<code>Uploads</code> section preserves the historical built-in limits.</p>\n"
|
||||
},
|
||||
{
|
||||
"type": "ManagedReference",
|
||||
"source_relative_path": "_api_meta/server/EchoHub.Server.Config.yml",
|
||||
"output": {
|
||||
".html": {
|
||||
"relative_path": "api/server/EchoHub.Server.Config.html"
|
||||
}
|
||||
},
|
||||
"version": "",
|
||||
"Uid": null,
|
||||
"IsMRef": true,
|
||||
"Title": "EchoHub.Server.Config",
|
||||
"Summary": null
|
||||
},
|
||||
{
|
||||
"type": "ManagedReference",
|
||||
"source_relative_path": "_api_meta/server/EchoHub.Server.Controllers.AuthController.yml",
|
||||
@@ -2708,6 +2750,16 @@
|
||||
},
|
||||
"version": ""
|
||||
},
|
||||
{
|
||||
"type": "Conceptual",
|
||||
"source_relative_path": "articles/encrypted-rooms.md",
|
||||
"output": {
|
||||
".html": {
|
||||
"relative_path": "articles/encrypted-rooms.html"
|
||||
}
|
||||
},
|
||||
"version": ""
|
||||
},
|
||||
{
|
||||
"type": "Conceptual",
|
||||
"source_relative_path": "articles/encryption.md",
|
||||
@@ -2844,6 +2896,16 @@
|
||||
},
|
||||
"version": ""
|
||||
},
|
||||
{
|
||||
"type": "Conceptual",
|
||||
"source_relative_path": "changelog/v0.2.13.md",
|
||||
"output": {
|
||||
".html": {
|
||||
"relative_path": "changelog/v0.2.13.html"
|
||||
}
|
||||
},
|
||||
"version": ""
|
||||
},
|
||||
{
|
||||
"type": "Conceptual",
|
||||
"source_relative_path": "changelog/v0.2.2.md",
|
||||
|
||||
+732
-99
@@ -55,6 +55,18 @@ references:
|
||||
commentId: Overload:EchoHub.Client.AppOrchestrator.MainWindow
|
||||
fullName: EchoHub.Client.AppOrchestrator.MainWindow
|
||||
nameWithType: AppOrchestrator.MainWindow
|
||||
- uid: EchoHub.Client.AppOrchestrator.PendingUpdate
|
||||
name: PendingUpdate
|
||||
href: api/client/EchoHub.Client.AppOrchestrator.html#EchoHub_Client_AppOrchestrator_PendingUpdate
|
||||
commentId: P:EchoHub.Client.AppOrchestrator.PendingUpdate
|
||||
fullName: EchoHub.Client.AppOrchestrator.PendingUpdate
|
||||
nameWithType: AppOrchestrator.PendingUpdate
|
||||
- uid: EchoHub.Client.AppOrchestrator.PendingUpdate*
|
||||
name: PendingUpdate
|
||||
href: api/client/EchoHub.Client.AppOrchestrator.html#EchoHub_Client_AppOrchestrator_PendingUpdate_
|
||||
commentId: Overload:EchoHub.Client.AppOrchestrator.PendingUpdate
|
||||
fullName: EchoHub.Client.AppOrchestrator.PendingUpdate
|
||||
nameWithType: AppOrchestrator.PendingUpdate
|
||||
- uid: EchoHub.Client.Commands
|
||||
name: EchoHub.Client.Commands
|
||||
href: api/client/EchoHub.Client.Commands.html
|
||||
@@ -199,6 +211,12 @@ references:
|
||||
commentId: E:EchoHub.Client.Commands.CommandHandler.OnQuit
|
||||
fullName: EchoHub.Client.Commands.CommandHandler.OnQuit
|
||||
nameWithType: CommandHandler.OnQuit
|
||||
- uid: EchoHub.Client.Commands.CommandHandler.OnRoomInfo
|
||||
name: OnRoomInfo
|
||||
href: api/client/EchoHub.Client.Commands.CommandHandler.html#EchoHub_Client_Commands_CommandHandler_OnRoomInfo
|
||||
commentId: E:EchoHub.Client.Commands.CommandHandler.OnRoomInfo
|
||||
fullName: EchoHub.Client.Commands.CommandHandler.OnRoomInfo
|
||||
nameWithType: CommandHandler.OnRoomInfo
|
||||
- uid: EchoHub.Client.Commands.CommandHandler.OnSendFile
|
||||
name: OnSendFile
|
||||
href: api/client/EchoHub.Client.Commands.CommandHandler.html#EchoHub_Client_Commands_CommandHandler_OnSendFile
|
||||
@@ -790,6 +808,30 @@ references:
|
||||
commentId: Overload:EchoHub.Client.Config.SavedServer.LastConnected
|
||||
fullName: EchoHub.Client.Config.SavedServer.LastConnected
|
||||
nameWithType: SavedServer.LastConnected
|
||||
- uid: EchoHub.Client.Config.SavedServer.LastReadMessages
|
||||
name: LastReadMessages
|
||||
href: api/client/EchoHub.Client.Config.SavedServer.html#EchoHub_Client_Config_SavedServer_LastReadMessages
|
||||
commentId: P:EchoHub.Client.Config.SavedServer.LastReadMessages
|
||||
fullName: EchoHub.Client.Config.SavedServer.LastReadMessages
|
||||
nameWithType: SavedServer.LastReadMessages
|
||||
- uid: EchoHub.Client.Config.SavedServer.LastReadMessages*
|
||||
name: LastReadMessages
|
||||
href: api/client/EchoHub.Client.Config.SavedServer.html#EchoHub_Client_Config_SavedServer_LastReadMessages_
|
||||
commentId: Overload:EchoHub.Client.Config.SavedServer.LastReadMessages
|
||||
fullName: EchoHub.Client.Config.SavedServer.LastReadMessages
|
||||
nameWithType: SavedServer.LastReadMessages
|
||||
- uid: EchoHub.Client.Config.SavedServer.LeftChannels
|
||||
name: LeftChannels
|
||||
href: api/client/EchoHub.Client.Config.SavedServer.html#EchoHub_Client_Config_SavedServer_LeftChannels
|
||||
commentId: P:EchoHub.Client.Config.SavedServer.LeftChannels
|
||||
fullName: EchoHub.Client.Config.SavedServer.LeftChannels
|
||||
nameWithType: SavedServer.LeftChannels
|
||||
- uid: EchoHub.Client.Config.SavedServer.LeftChannels*
|
||||
name: LeftChannels
|
||||
href: api/client/EchoHub.Client.Config.SavedServer.html#EchoHub_Client_Config_SavedServer_LeftChannels_
|
||||
commentId: Overload:EchoHub.Client.Config.SavedServer.LeftChannels
|
||||
fullName: EchoHub.Client.Config.SavedServer.LeftChannels
|
||||
nameWithType: SavedServer.LeftChannels
|
||||
- uid: EchoHub.Client.Config.SavedServer.Name
|
||||
name: Name
|
||||
href: api/client/EchoHub.Client.Config.SavedServer.html#EchoHub_Client_Config_SavedServer_Name
|
||||
@@ -1006,6 +1048,21 @@ references:
|
||||
commentId: Overload:EchoHub.Client.Services.ApiClient.GetChannelCryptoAsync
|
||||
fullName: EchoHub.Client.Services.ApiClient.GetChannelCryptoAsync
|
||||
nameWithType: ApiClient.GetChannelCryptoAsync
|
||||
- uid: EchoHub.Client.Services.ApiClient.GetChannelMetaAsync(System.String)
|
||||
name: GetChannelMetaAsync(string)
|
||||
href: api/client/EchoHub.Client.Services.ApiClient.html#EchoHub_Client_Services_ApiClient_GetChannelMetaAsync_System_String_
|
||||
commentId: M:EchoHub.Client.Services.ApiClient.GetChannelMetaAsync(System.String)
|
||||
name.vb: GetChannelMetaAsync(String)
|
||||
fullName: EchoHub.Client.Services.ApiClient.GetChannelMetaAsync(string)
|
||||
fullName.vb: EchoHub.Client.Services.ApiClient.GetChannelMetaAsync(String)
|
||||
nameWithType: ApiClient.GetChannelMetaAsync(string)
|
||||
nameWithType.vb: ApiClient.GetChannelMetaAsync(String)
|
||||
- uid: EchoHub.Client.Services.ApiClient.GetChannelMetaAsync*
|
||||
name: GetChannelMetaAsync
|
||||
href: api/client/EchoHub.Client.Services.ApiClient.html#EchoHub_Client_Services_ApiClient_GetChannelMetaAsync_
|
||||
commentId: Overload:EchoHub.Client.Services.ApiClient.GetChannelMetaAsync
|
||||
fullName: EchoHub.Client.Services.ApiClient.GetChannelMetaAsync
|
||||
nameWithType: ApiClient.GetChannelMetaAsync
|
||||
- uid: EchoHub.Client.Services.ApiClient.GetChannelsAsync
|
||||
name: GetChannelsAsync()
|
||||
href: api/client/EchoHub.Client.Services.ApiClient.html#EchoHub_Client_Services_ApiClient_GetChannelsAsync
|
||||
@@ -2956,6 +3013,18 @@ references:
|
||||
commentId: Overload:EchoHub.Client.Services.UpdateChecker.Dispose
|
||||
fullName: EchoHub.Client.Services.UpdateChecker.Dispose
|
||||
nameWithType: UpdateChecker.Dispose
|
||||
- uid: EchoHub.Client.Services.UpdateChecker.PendingUpdate
|
||||
name: PendingUpdate
|
||||
href: api/client/EchoHub.Client.Services.UpdateChecker.html#EchoHub_Client_Services_UpdateChecker_PendingUpdate
|
||||
commentId: P:EchoHub.Client.Services.UpdateChecker.PendingUpdate
|
||||
fullName: EchoHub.Client.Services.UpdateChecker.PendingUpdate
|
||||
nameWithType: UpdateChecker.PendingUpdate
|
||||
- uid: EchoHub.Client.Services.UpdateChecker.PendingUpdate*
|
||||
name: PendingUpdate
|
||||
href: api/client/EchoHub.Client.Services.UpdateChecker.html#EchoHub_Client_Services_UpdateChecker_PendingUpdate_
|
||||
commentId: Overload:EchoHub.Client.Services.UpdateChecker.PendingUpdate
|
||||
fullName: EchoHub.Client.Services.UpdateChecker.PendingUpdate
|
||||
nameWithType: UpdateChecker.PendingUpdate
|
||||
- uid: EchoHub.Client.Services.UpdateChecker.Start
|
||||
name: Start()
|
||||
href: api/client/EchoHub.Client.Services.UpdateChecker.html#EchoHub_Client_Services_UpdateChecker_Start
|
||||
@@ -3010,6 +3079,18 @@ references:
|
||||
commentId: Overload:EchoHub.Client.Themes.Theme.Base
|
||||
fullName: EchoHub.Client.Themes.Theme.Base
|
||||
nameWithType: Theme.Base
|
||||
- uid: EchoHub.Client.Themes.Theme.Border
|
||||
name: Border
|
||||
href: api/client/EchoHub.Client.Themes.Theme.html#EchoHub_Client_Themes_Theme_Border
|
||||
commentId: P:EchoHub.Client.Themes.Theme.Border
|
||||
fullName: EchoHub.Client.Themes.Theme.Border
|
||||
nameWithType: Theme.Border
|
||||
- uid: EchoHub.Client.Themes.Theme.Border*
|
||||
name: Border
|
||||
href: api/client/EchoHub.Client.Themes.Theme.html#EchoHub_Client_Themes_Theme_Border_
|
||||
commentId: Overload:EchoHub.Client.Themes.Theme.Border
|
||||
fullName: EchoHub.Client.Themes.Theme.Border
|
||||
nameWithType: Theme.Border
|
||||
- uid: EchoHub.Client.Themes.Theme.Dialog
|
||||
name: Dialog
|
||||
href: api/client/EchoHub.Client.Themes.Theme.html#EchoHub_Client_Themes_Theme_Dialog
|
||||
@@ -3217,6 +3298,12 @@ references:
|
||||
commentId: F:EchoHub.Client.UI.Chat.ChatColors.ChannelRefAttr
|
||||
fullName: EchoHub.Client.UI.Chat.ChatColors.ChannelRefAttr
|
||||
nameWithType: ChatColors.ChannelRefAttr
|
||||
- uid: EchoHub.Client.UI.Chat.ChatColors.DateRuleAttr
|
||||
name: DateRuleAttr
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatColors.html#EchoHub_Client_UI_Chat_ChatColors_DateRuleAttr
|
||||
commentId: F:EchoHub.Client.UI.Chat.ChatColors.DateRuleAttr
|
||||
fullName: EchoHub.Client.UI.Chat.ChatColors.DateRuleAttr
|
||||
nameWithType: ChatColors.DateRuleAttr
|
||||
- uid: EchoHub.Client.UI.Chat.ChatColors.EmbedBorderAttr
|
||||
name: EmbedBorderAttr
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatColors.html#EchoHub_Client_UI_Chat_ChatColors_EmbedBorderAttr
|
||||
@@ -3259,6 +3346,12 @@ references:
|
||||
commentId: F:EchoHub.Client.UI.Chat.ChatColors.MentionTextAttr
|
||||
fullName: EchoHub.Client.UI.Chat.ChatColors.MentionTextAttr
|
||||
nameWithType: ChatColors.MentionTextAttr
|
||||
- uid: EchoHub.Client.UI.Chat.ChatColors.RailAttr
|
||||
name: RailAttr
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatColors.html#EchoHub_Client_UI_Chat_ChatColors_RailAttr
|
||||
commentId: F:EchoHub.Client.UI.Chat.ChatColors.RailAttr
|
||||
fullName: EchoHub.Client.UI.Chat.ChatColors.RailAttr
|
||||
nameWithType: ChatColors.RailAttr
|
||||
- uid: EchoHub.Client.UI.Chat.ChatColors.SplitMentions(System.String,System.Nullable{Terminal.Gui.Drawing.Attribute})
|
||||
name: SplitMentions(string, Attribute?)
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatColors.html#EchoHub_Client_UI_Chat_ChatColors_SplitMentions_System_String_System_Nullable_Terminal_Gui_Drawing_Attribute__
|
||||
@@ -3286,6 +3379,12 @@ references:
|
||||
commentId: F:EchoHub.Client.UI.Chat.ChatColors.TimestampAttr
|
||||
fullName: EchoHub.Client.UI.Chat.ChatColors.TimestampAttr
|
||||
nameWithType: ChatColors.TimestampAttr
|
||||
- uid: EchoHub.Client.UI.Chat.ChatColors.UnreadMarkerAttr
|
||||
name: UnreadMarkerAttr
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatColors.html#EchoHub_Client_UI_Chat_ChatColors_UnreadMarkerAttr
|
||||
commentId: F:EchoHub.Client.UI.Chat.ChatColors.UnreadMarkerAttr
|
||||
fullName: EchoHub.Client.UI.Chat.ChatColors.UnreadMarkerAttr
|
||||
nameWithType: ChatColors.UnreadMarkerAttr
|
||||
- uid: EchoHub.Client.UI.Chat.ChatLine
|
||||
name: ChatLine
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatLine.html
|
||||
@@ -3367,6 +3466,18 @@ references:
|
||||
commentId: Overload:EchoHub.Client.UI.Chat.ChatLine.ContinuationIndent
|
||||
fullName: EchoHub.Client.UI.Chat.ChatLine.ContinuationIndent
|
||||
nameWithType: ChatLine.ContinuationIndent
|
||||
- uid: EchoHub.Client.UI.Chat.ChatLine.ContinuationPrefixSegments
|
||||
name: ContinuationPrefixSegments
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatLine.html#EchoHub_Client_UI_Chat_ChatLine_ContinuationPrefixSegments
|
||||
commentId: P:EchoHub.Client.UI.Chat.ChatLine.ContinuationPrefixSegments
|
||||
fullName: EchoHub.Client.UI.Chat.ChatLine.ContinuationPrefixSegments
|
||||
nameWithType: ChatLine.ContinuationPrefixSegments
|
||||
- uid: EchoHub.Client.UI.Chat.ChatLine.ContinuationPrefixSegments*
|
||||
name: ContinuationPrefixSegments
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatLine.html#EchoHub_Client_UI_Chat_ChatLine_ContinuationPrefixSegments_
|
||||
commentId: Overload:EchoHub.Client.UI.Chat.ChatLine.ContinuationPrefixSegments
|
||||
fullName: EchoHub.Client.UI.Chat.ChatLine.ContinuationPrefixSegments
|
||||
nameWithType: ChatLine.ContinuationPrefixSegments
|
||||
- uid: EchoHub.Client.UI.Chat.ChatLine.FromColoredText(System.String,System.Nullable{Terminal.Gui.Drawing.Attribute})
|
||||
name: FromColoredText(string, Attribute?)
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatLine.html#EchoHub_Client_UI_Chat_ChatLine_FromColoredText_System_String_System_Nullable_Terminal_Gui_Drawing_Attribute__
|
||||
@@ -3409,6 +3520,18 @@ references:
|
||||
commentId: Overload:EchoHub.Client.UI.Chat.ChatLine.IsMention
|
||||
fullName: EchoHub.Client.UI.Chat.ChatLine.IsMention
|
||||
nameWithType: ChatLine.IsMention
|
||||
- uid: EchoHub.Client.UI.Chat.ChatLine.IsUnreadMarker
|
||||
name: IsUnreadMarker
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatLine.html#EchoHub_Client_UI_Chat_ChatLine_IsUnreadMarker
|
||||
commentId: P:EchoHub.Client.UI.Chat.ChatLine.IsUnreadMarker
|
||||
fullName: EchoHub.Client.UI.Chat.ChatLine.IsUnreadMarker
|
||||
nameWithType: ChatLine.IsUnreadMarker
|
||||
- uid: EchoHub.Client.UI.Chat.ChatLine.IsUnreadMarker*
|
||||
name: IsUnreadMarker
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatLine.html#EchoHub_Client_UI_Chat_ChatLine_IsUnreadMarker_
|
||||
commentId: Overload:EchoHub.Client.UI.Chat.ChatLine.IsUnreadMarker
|
||||
fullName: EchoHub.Client.UI.Chat.ChatLine.IsUnreadMarker
|
||||
nameWithType: ChatLine.IsUnreadMarker
|
||||
- uid: EchoHub.Client.UI.Chat.ChatLine.MessageId
|
||||
name: MessageId
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatLine.html#EchoHub_Client_UI_Chat_ChatLine_MessageId
|
||||
@@ -3421,6 +3544,30 @@ references:
|
||||
commentId: Overload:EchoHub.Client.UI.Chat.ChatLine.MessageId
|
||||
fullName: EchoHub.Client.UI.Chat.ChatLine.MessageId
|
||||
nameWithType: ChatLine.MessageId
|
||||
- uid: EchoHub.Client.UI.Chat.ChatLine.RuleAttr
|
||||
name: RuleAttr
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatLine.html#EchoHub_Client_UI_Chat_ChatLine_RuleAttr
|
||||
commentId: P:EchoHub.Client.UI.Chat.ChatLine.RuleAttr
|
||||
fullName: EchoHub.Client.UI.Chat.ChatLine.RuleAttr
|
||||
nameWithType: ChatLine.RuleAttr
|
||||
- uid: EchoHub.Client.UI.Chat.ChatLine.RuleAttr*
|
||||
name: RuleAttr
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatLine.html#EchoHub_Client_UI_Chat_ChatLine_RuleAttr_
|
||||
commentId: Overload:EchoHub.Client.UI.Chat.ChatLine.RuleAttr
|
||||
fullName: EchoHub.Client.UI.Chat.ChatLine.RuleAttr
|
||||
nameWithType: ChatLine.RuleAttr
|
||||
- uid: EchoHub.Client.UI.Chat.ChatLine.RuleLabel
|
||||
name: RuleLabel
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatLine.html#EchoHub_Client_UI_Chat_ChatLine_RuleLabel
|
||||
commentId: P:EchoHub.Client.UI.Chat.ChatLine.RuleLabel
|
||||
fullName: EchoHub.Client.UI.Chat.ChatLine.RuleLabel
|
||||
nameWithType: ChatLine.RuleLabel
|
||||
- uid: EchoHub.Client.UI.Chat.ChatLine.RuleLabel*
|
||||
name: RuleLabel
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatLine.html#EchoHub_Client_UI_Chat_ChatLine_RuleLabel_
|
||||
commentId: Overload:EchoHub.Client.UI.Chat.ChatLine.RuleLabel
|
||||
fullName: EchoHub.Client.UI.Chat.ChatLine.RuleLabel
|
||||
nameWithType: ChatLine.RuleLabel
|
||||
- uid: EchoHub.Client.UI.Chat.ChatLine.Segments
|
||||
name: Segments
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatLine.html#EchoHub_Client_UI_Chat_ChatLine_Segments
|
||||
@@ -3811,6 +3958,12 @@ references:
|
||||
commentId: Overload:EchoHub.Client.UI.Chat.ChatMessageManager.ClearUnread
|
||||
fullName: EchoHub.Client.UI.Chat.ChatMessageManager.ClearUnread
|
||||
nameWithType: ChatMessageManager.ClearUnread
|
||||
- uid: EchoHub.Client.UI.Chat.ChatMessageManager.ContentIndentCols
|
||||
name: ContentIndentCols
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_ContentIndentCols
|
||||
commentId: F:EchoHub.Client.UI.Chat.ChatMessageManager.ContentIndentCols
|
||||
fullName: EchoHub.Client.UI.Chat.ChatMessageManager.ContentIndentCols
|
||||
nameWithType: ChatMessageManager.ContentIndentCols
|
||||
- uid: EchoHub.Client.UI.Chat.ChatMessageManager.CurrentChannel
|
||||
name: CurrentChannel
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_CurrentChannel
|
||||
@@ -3871,27 +4024,57 @@ references:
|
||||
commentId: E:EchoHub.Client.UI.Chat.ChatMessageManager.HistoryPrepended
|
||||
fullName: EchoHub.Client.UI.Chat.ChatMessageManager.HistoryPrepended
|
||||
nameWithType: ChatMessageManager.HistoryPrepended
|
||||
- uid: EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory(System.String,System.Collections.Generic.List{EchoHub.Core.DTOs.MessageDto})
|
||||
name: LoadHistory(string, List<MessageDto>)
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_LoadHistory_System_String_System_Collections_Generic_List_EchoHub_Core_DTOs_MessageDto__
|
||||
commentId: M:EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory(System.String,System.Collections.Generic.List{EchoHub.Core.DTOs.MessageDto})
|
||||
name.vb: LoadHistory(String, List(Of MessageDto))
|
||||
fullName: EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory(string, System.Collections.Generic.List<EchoHub.Core.DTOs.MessageDto>)
|
||||
fullName.vb: EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory(String, System.Collections.Generic.List(Of EchoHub.Core.DTOs.MessageDto))
|
||||
nameWithType: ChatMessageManager.LoadHistory(string, List<MessageDto>)
|
||||
nameWithType.vb: ChatMessageManager.LoadHistory(String, List(Of MessageDto))
|
||||
- uid: EchoHub.Client.UI.Chat.ChatMessageManager.LastReadIds
|
||||
name: LastReadIds
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_LastReadIds
|
||||
commentId: P:EchoHub.Client.UI.Chat.ChatMessageManager.LastReadIds
|
||||
fullName: EchoHub.Client.UI.Chat.ChatMessageManager.LastReadIds
|
||||
nameWithType: ChatMessageManager.LastReadIds
|
||||
- uid: EchoHub.Client.UI.Chat.ChatMessageManager.LastReadIds*
|
||||
name: LastReadIds
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_LastReadIds_
|
||||
commentId: Overload:EchoHub.Client.UI.Chat.ChatMessageManager.LastReadIds
|
||||
fullName: EchoHub.Client.UI.Chat.ChatMessageManager.LastReadIds
|
||||
nameWithType: ChatMessageManager.LastReadIds
|
||||
- uid: EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory(System.String,System.Collections.Generic.List{EchoHub.Core.DTOs.MessageDto},System.Nullable{System.Guid})
|
||||
name: LoadHistory(string, List<MessageDto>, Guid?)
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_LoadHistory_System_String_System_Collections_Generic_List_EchoHub_Core_DTOs_MessageDto__System_Nullable_System_Guid__
|
||||
commentId: M:EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory(System.String,System.Collections.Generic.List{EchoHub.Core.DTOs.MessageDto},System.Nullable{System.Guid})
|
||||
name.vb: LoadHistory(String, List(Of MessageDto), Guid?)
|
||||
fullName: EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory(string, System.Collections.Generic.List<EchoHub.Core.DTOs.MessageDto>, System.Guid?)
|
||||
fullName.vb: EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory(String, System.Collections.Generic.List(Of EchoHub.Core.DTOs.MessageDto), System.Guid?)
|
||||
nameWithType: ChatMessageManager.LoadHistory(string, List<MessageDto>, Guid?)
|
||||
nameWithType.vb: ChatMessageManager.LoadHistory(String, List(Of MessageDto), Guid?)
|
||||
- uid: EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory*
|
||||
name: LoadHistory
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_LoadHistory_
|
||||
commentId: Overload:EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory
|
||||
fullName: EchoHub.Client.UI.Chat.ChatMessageManager.LoadHistory
|
||||
nameWithType: ChatMessageManager.LoadHistory
|
||||
- uid: EchoHub.Client.UI.Chat.ChatMessageManager.MentionChannels
|
||||
name: MentionChannels
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_MentionChannels
|
||||
commentId: P:EchoHub.Client.UI.Chat.ChatMessageManager.MentionChannels
|
||||
fullName: EchoHub.Client.UI.Chat.ChatMessageManager.MentionChannels
|
||||
nameWithType: ChatMessageManager.MentionChannels
|
||||
- uid: EchoHub.Client.UI.Chat.ChatMessageManager.MentionChannels*
|
||||
name: MentionChannels
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_MentionChannels_
|
||||
commentId: Overload:EchoHub.Client.UI.Chat.ChatMessageManager.MentionChannels
|
||||
fullName: EchoHub.Client.UI.Chat.ChatMessageManager.MentionChannels
|
||||
nameWithType: ChatMessageManager.MentionChannels
|
||||
- uid: EchoHub.Client.UI.Chat.ChatMessageManager.MessagesChanged
|
||||
name: MessagesChanged
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_MessagesChanged
|
||||
commentId: E:EchoHub.Client.UI.Chat.ChatMessageManager.MessagesChanged
|
||||
fullName: EchoHub.Client.UI.Chat.ChatMessageManager.MessagesChanged
|
||||
nameWithType: ChatMessageManager.MessagesChanged
|
||||
- uid: EchoHub.Client.UI.Chat.ChatMessageManager.NickColWidth
|
||||
name: NickColWidth
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_NickColWidth
|
||||
commentId: F:EchoHub.Client.UI.Chat.ChatMessageManager.NickColWidth
|
||||
fullName: EchoHub.Client.UI.Chat.ChatMessageManager.NickColWidth
|
||||
nameWithType: ChatMessageManager.NickColWidth
|
||||
- uid: EchoHub.Client.UI.Chat.ChatMessageManager.PrependHistory(System.String,System.Collections.Generic.List{EchoHub.Core.DTOs.MessageDto})
|
||||
name: PrependHistory(string, List<MessageDto>)
|
||||
href: api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html#EchoHub_Client_UI_Chat_ChatMessageManager_PrependHistory_System_String_System_Collections_Generic_List_EchoHub_Core_DTOs_MessageDto__
|
||||
@@ -5557,69 +5740,6 @@ references:
|
||||
commentId: Overload:EchoHub.Client.UI.Dialogs.UpdateConfirmDialog.Show
|
||||
fullName: EchoHub.Client.UI.Dialogs.UpdateConfirmDialog.Show
|
||||
nameWithType: UpdateConfirmDialog.Show
|
||||
- uid: EchoHub.Client.UI.Dialogs.UpdateProgressDialog
|
||||
name: UpdateProgressDialog
|
||||
href: api/client/EchoHub.Client.UI.Dialogs.UpdateProgressDialog.html
|
||||
commentId: T:EchoHub.Client.UI.Dialogs.UpdateProgressDialog
|
||||
fullName: EchoHub.Client.UI.Dialogs.UpdateProgressDialog
|
||||
nameWithType: UpdateProgressDialog
|
||||
- uid: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.#ctor(Terminal.Gui.App.IApplication,System.String)
|
||||
name: UpdateProgressDialog(IApplication, string)
|
||||
href: api/client/EchoHub.Client.UI.Dialogs.UpdateProgressDialog.html#EchoHub_Client_UI_Dialogs_UpdateProgressDialog__ctor_Terminal_Gui_App_IApplication_System_String_
|
||||
commentId: M:EchoHub.Client.UI.Dialogs.UpdateProgressDialog.#ctor(Terminal.Gui.App.IApplication,System.String)
|
||||
name.vb: New(IApplication, String)
|
||||
fullName: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.UpdateProgressDialog(Terminal.Gui.App.IApplication, string)
|
||||
fullName.vb: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.New(Terminal.Gui.App.IApplication, String)
|
||||
nameWithType: UpdateProgressDialog.UpdateProgressDialog(IApplication, string)
|
||||
nameWithType.vb: UpdateProgressDialog.New(IApplication, String)
|
||||
- uid: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.#ctor*
|
||||
name: UpdateProgressDialog
|
||||
href: api/client/EchoHub.Client.UI.Dialogs.UpdateProgressDialog.html#EchoHub_Client_UI_Dialogs_UpdateProgressDialog__ctor_
|
||||
commentId: Overload:EchoHub.Client.UI.Dialogs.UpdateProgressDialog.#ctor
|
||||
name.vb: New
|
||||
fullName: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.UpdateProgressDialog
|
||||
fullName.vb: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.New
|
||||
nameWithType: UpdateProgressDialog.UpdateProgressDialog
|
||||
nameWithType.vb: UpdateProgressDialog.New
|
||||
- uid: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Close
|
||||
name: Close()
|
||||
href: api/client/EchoHub.Client.UI.Dialogs.UpdateProgressDialog.html#EchoHub_Client_UI_Dialogs_UpdateProgressDialog_Close
|
||||
commentId: M:EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Close
|
||||
fullName: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Close()
|
||||
nameWithType: UpdateProgressDialog.Close()
|
||||
- uid: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Close*
|
||||
name: Close
|
||||
href: api/client/EchoHub.Client.UI.Dialogs.UpdateProgressDialog.html#EchoHub_Client_UI_Dialogs_UpdateProgressDialog_Close_
|
||||
commentId: Overload:EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Close
|
||||
fullName: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Close
|
||||
nameWithType: UpdateProgressDialog.Close
|
||||
- uid: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Show
|
||||
name: Show()
|
||||
href: api/client/EchoHub.Client.UI.Dialogs.UpdateProgressDialog.html#EchoHub_Client_UI_Dialogs_UpdateProgressDialog_Show
|
||||
commentId: M:EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Show
|
||||
fullName: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Show()
|
||||
nameWithType: UpdateProgressDialog.Show()
|
||||
- uid: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Show*
|
||||
name: Show
|
||||
href: api/client/EchoHub.Client.UI.Dialogs.UpdateProgressDialog.html#EchoHub_Client_UI_Dialogs_UpdateProgressDialog_Show_
|
||||
commentId: Overload:EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Show
|
||||
fullName: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.Show
|
||||
nameWithType: UpdateProgressDialog.Show
|
||||
- uid: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.UpdateProgress(System.Single,System.String)
|
||||
name: UpdateProgress(float, string)
|
||||
href: api/client/EchoHub.Client.UI.Dialogs.UpdateProgressDialog.html#EchoHub_Client_UI_Dialogs_UpdateProgressDialog_UpdateProgress_System_Single_System_String_
|
||||
commentId: M:EchoHub.Client.UI.Dialogs.UpdateProgressDialog.UpdateProgress(System.Single,System.String)
|
||||
name.vb: UpdateProgress(Single, String)
|
||||
fullName: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.UpdateProgress(float, string)
|
||||
fullName.vb: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.UpdateProgress(Single, String)
|
||||
nameWithType: UpdateProgressDialog.UpdateProgress(float, string)
|
||||
nameWithType.vb: UpdateProgressDialog.UpdateProgress(Single, String)
|
||||
- uid: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.UpdateProgress*
|
||||
name: UpdateProgress
|
||||
href: api/client/EchoHub.Client.UI.Dialogs.UpdateProgressDialog.html#EchoHub_Client_UI_Dialogs_UpdateProgressDialog_UpdateProgress_
|
||||
commentId: Overload:EchoHub.Client.UI.Dialogs.UpdateProgressDialog.UpdateProgress
|
||||
fullName: EchoHub.Client.UI.Dialogs.UpdateProgressDialog.UpdateProgress
|
||||
nameWithType: UpdateProgressDialog.UpdateProgress
|
||||
- uid: EchoHub.Client.UI.Helpers
|
||||
name: EchoHub.Client.UI.Helpers
|
||||
href: api/client/EchoHub.Client.UI.Helpers.html
|
||||
@@ -5719,6 +5839,42 @@ references:
|
||||
commentId: Overload:EchoHub.Client.UI.Helpers.HexColorHelper.ParseHexToColor
|
||||
fullName: EchoHub.Client.UI.Helpers.HexColorHelper.ParseHexToColor
|
||||
nameWithType: HexColorHelper.ParseHexToColor
|
||||
- uid: EchoHub.Client.UI.Helpers.NickColorHelper
|
||||
name: NickColorHelper
|
||||
href: api/client/EchoHub.Client.UI.Helpers.NickColorHelper.html
|
||||
commentId: T:EchoHub.Client.UI.Helpers.NickColorHelper
|
||||
fullName: EchoHub.Client.UI.Helpers.NickColorHelper
|
||||
nameWithType: NickColorHelper
|
||||
- uid: EchoHub.Client.UI.Helpers.NickColorHelper.GetAttribute(System.String)
|
||||
name: GetAttribute(string)
|
||||
href: api/client/EchoHub.Client.UI.Helpers.NickColorHelper.html#EchoHub_Client_UI_Helpers_NickColorHelper_GetAttribute_System_String_
|
||||
commentId: M:EchoHub.Client.UI.Helpers.NickColorHelper.GetAttribute(System.String)
|
||||
name.vb: GetAttribute(String)
|
||||
fullName: EchoHub.Client.UI.Helpers.NickColorHelper.GetAttribute(string)
|
||||
fullName.vb: EchoHub.Client.UI.Helpers.NickColorHelper.GetAttribute(String)
|
||||
nameWithType: NickColorHelper.GetAttribute(string)
|
||||
nameWithType.vb: NickColorHelper.GetAttribute(String)
|
||||
- uid: EchoHub.Client.UI.Helpers.NickColorHelper.GetAttribute*
|
||||
name: GetAttribute
|
||||
href: api/client/EchoHub.Client.UI.Helpers.NickColorHelper.html#EchoHub_Client_UI_Helpers_NickColorHelper_GetAttribute_
|
||||
commentId: Overload:EchoHub.Client.UI.Helpers.NickColorHelper.GetAttribute
|
||||
fullName: EchoHub.Client.UI.Helpers.NickColorHelper.GetAttribute
|
||||
nameWithType: NickColorHelper.GetAttribute
|
||||
- uid: EchoHub.Client.UI.Helpers.NickColorHelper.GetPaletteIndex(System.String,System.Int32)
|
||||
name: GetPaletteIndex(string, int)
|
||||
href: api/client/EchoHub.Client.UI.Helpers.NickColorHelper.html#EchoHub_Client_UI_Helpers_NickColorHelper_GetPaletteIndex_System_String_System_Int32_
|
||||
commentId: M:EchoHub.Client.UI.Helpers.NickColorHelper.GetPaletteIndex(System.String,System.Int32)
|
||||
name.vb: GetPaletteIndex(String, Integer)
|
||||
fullName: EchoHub.Client.UI.Helpers.NickColorHelper.GetPaletteIndex(string, int)
|
||||
fullName.vb: EchoHub.Client.UI.Helpers.NickColorHelper.GetPaletteIndex(String, Integer)
|
||||
nameWithType: NickColorHelper.GetPaletteIndex(string, int)
|
||||
nameWithType.vb: NickColorHelper.GetPaletteIndex(String, Integer)
|
||||
- uid: EchoHub.Client.UI.Helpers.NickColorHelper.GetPaletteIndex*
|
||||
name: GetPaletteIndex
|
||||
href: api/client/EchoHub.Client.UI.Helpers.NickColorHelper.html#EchoHub_Client_UI_Helpers_NickColorHelper_GetPaletteIndex_
|
||||
commentId: Overload:EchoHub.Client.UI.Helpers.NickColorHelper.GetPaletteIndex
|
||||
fullName: EchoHub.Client.UI.Helpers.NickColorHelper.GetPaletteIndex
|
||||
nameWithType: NickColorHelper.GetPaletteIndex
|
||||
- uid: EchoHub.Client.UI.ListSources
|
||||
name: EchoHub.Client.UI.ListSources
|
||||
href: api/client/EchoHub.Client.UI.ListSources.html
|
||||
@@ -5860,15 +6016,15 @@ references:
|
||||
commentId: Overload:EchoHub.Client.UI.ListSources.ChannelListSource.ToList
|
||||
fullName: EchoHub.Client.UI.ListSources.ChannelListSource.ToList
|
||||
nameWithType: ChannelListSource.ToList
|
||||
- uid: EchoHub.Client.UI.ListSources.ChannelListSource.Update(System.Collections.Generic.List{System.String},System.Collections.Generic.Dictionary{System.String,System.Int32},System.String,System.Collections.Generic.IReadOnlySet{System.String})
|
||||
name: Update(List<string>, Dictionary<string, int>, string, IReadOnlySet<string>?)
|
||||
href: api/client/EchoHub.Client.UI.ListSources.ChannelListSource.html#EchoHub_Client_UI_ListSources_ChannelListSource_Update_System_Collections_Generic_List_System_String__System_Collections_Generic_Dictionary_System_String_System_Int32__System_String_System_Collections_Generic_IReadOnlySet_System_String__
|
||||
commentId: M:EchoHub.Client.UI.ListSources.ChannelListSource.Update(System.Collections.Generic.List{System.String},System.Collections.Generic.Dictionary{System.String,System.Int32},System.String,System.Collections.Generic.IReadOnlySet{System.String})
|
||||
name.vb: Update(List(Of String), Dictionary(Of String, Integer), String, IReadOnlySet(Of String))
|
||||
fullName: EchoHub.Client.UI.ListSources.ChannelListSource.Update(System.Collections.Generic.List<string>, System.Collections.Generic.Dictionary<string, int>, string, System.Collections.Generic.IReadOnlySet<string>?)
|
||||
fullName.vb: EchoHub.Client.UI.ListSources.ChannelListSource.Update(System.Collections.Generic.List(Of String), System.Collections.Generic.Dictionary(Of String, Integer), String, System.Collections.Generic.IReadOnlySet(Of String))
|
||||
nameWithType: ChannelListSource.Update(List<string>, Dictionary<string, int>, string, IReadOnlySet<string>?)
|
||||
nameWithType.vb: ChannelListSource.Update(List(Of String), Dictionary(Of String, Integer), String, IReadOnlySet(Of String))
|
||||
- uid: EchoHub.Client.UI.ListSources.ChannelListSource.Update(System.Collections.Generic.List{System.String},System.Collections.Generic.Dictionary{System.String,System.Int32},System.String,System.Collections.Generic.IReadOnlySet{System.String},System.Collections.Generic.IReadOnlySet{System.String})
|
||||
name: Update(List<string>, Dictionary<string, int>, string, IReadOnlySet<string>?, IReadOnlySet<string>?)
|
||||
href: api/client/EchoHub.Client.UI.ListSources.ChannelListSource.html#EchoHub_Client_UI_ListSources_ChannelListSource_Update_System_Collections_Generic_List_System_String__System_Collections_Generic_Dictionary_System_String_System_Int32__System_String_System_Collections_Generic_IReadOnlySet_System_String__System_Collections_Generic_IReadOnlySet_System_String__
|
||||
commentId: M:EchoHub.Client.UI.ListSources.ChannelListSource.Update(System.Collections.Generic.List{System.String},System.Collections.Generic.Dictionary{System.String,System.Int32},System.String,System.Collections.Generic.IReadOnlySet{System.String},System.Collections.Generic.IReadOnlySet{System.String})
|
||||
name.vb: Update(List(Of String), Dictionary(Of String, Integer), String, IReadOnlySet(Of String), IReadOnlySet(Of String))
|
||||
fullName: EchoHub.Client.UI.ListSources.ChannelListSource.Update(System.Collections.Generic.List<string>, System.Collections.Generic.Dictionary<string, int>, string, System.Collections.Generic.IReadOnlySet<string>?, System.Collections.Generic.IReadOnlySet<string>?)
|
||||
fullName.vb: EchoHub.Client.UI.ListSources.ChannelListSource.Update(System.Collections.Generic.List(Of String), System.Collections.Generic.Dictionary(Of String, Integer), String, System.Collections.Generic.IReadOnlySet(Of String), System.Collections.Generic.IReadOnlySet(Of String))
|
||||
nameWithType: ChannelListSource.Update(List<string>, Dictionary<string, int>, string, IReadOnlySet<string>?, IReadOnlySet<string>?)
|
||||
nameWithType.vb: ChannelListSource.Update(List(Of String), Dictionary(Of String, Integer), String, IReadOnlySet(Of String), IReadOnlySet(Of String))
|
||||
- uid: EchoHub.Client.UI.ListSources.ChannelListSource.Update*
|
||||
name: Update
|
||||
href: api/client/EchoHub.Client.UI.ListSources.ChannelListSource.html#EchoHub_Client_UI_ListSources_ChannelListSource_Update_
|
||||
@@ -7141,6 +7297,21 @@ references:
|
||||
commentId: Overload:EchoHub.Core.Contracts.IChannelService.GetChannelListAsync
|
||||
fullName: EchoHub.Core.Contracts.IChannelService.GetChannelListAsync
|
||||
nameWithType: IChannelService.GetChannelListAsync
|
||||
- uid: EchoHub.Core.Contracts.IChannelService.GetChannelMetaAsync(System.String)
|
||||
name: GetChannelMetaAsync(string)
|
||||
href: api/core/EchoHub.Core.Contracts.IChannelService.html#EchoHub_Core_Contracts_IChannelService_GetChannelMetaAsync_System_String_
|
||||
commentId: M:EchoHub.Core.Contracts.IChannelService.GetChannelMetaAsync(System.String)
|
||||
name.vb: GetChannelMetaAsync(String)
|
||||
fullName: EchoHub.Core.Contracts.IChannelService.GetChannelMetaAsync(string)
|
||||
fullName.vb: EchoHub.Core.Contracts.IChannelService.GetChannelMetaAsync(String)
|
||||
nameWithType: IChannelService.GetChannelMetaAsync(string)
|
||||
nameWithType.vb: IChannelService.GetChannelMetaAsync(String)
|
||||
- uid: EchoHub.Core.Contracts.IChannelService.GetChannelMetaAsync*
|
||||
name: GetChannelMetaAsync
|
||||
href: api/core/EchoHub.Core.Contracts.IChannelService.html#EchoHub_Core_Contracts_IChannelService_GetChannelMetaAsync_
|
||||
commentId: Overload:EchoHub.Core.Contracts.IChannelService.GetChannelMetaAsync
|
||||
fullName: EchoHub.Core.Contracts.IChannelService.GetChannelMetaAsync
|
||||
nameWithType: IChannelService.GetChannelMetaAsync
|
||||
- uid: EchoHub.Core.Contracts.IChannelService.GetChannelTopicAsync(System.String)
|
||||
name: GetChannelTopicAsync(string)
|
||||
href: api/core/EchoHub.Core.Contracts.IChannelService.html#EchoHub_Core_Contracts_IChannelService_GetChannelTopicAsync_System_String_
|
||||
@@ -7726,6 +7897,12 @@ references:
|
||||
commentId: T:EchoHub.Core.Contracts.IMessageEncryptionService
|
||||
fullName: EchoHub.Core.Contracts.IMessageEncryptionService
|
||||
nameWithType: IMessageEncryptionService
|
||||
- uid: EchoHub.Core.Contracts.IMessageEncryptionService.CiphertextPrefix
|
||||
name: CiphertextPrefix
|
||||
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_CiphertextPrefix
|
||||
commentId: F:EchoHub.Core.Contracts.IMessageEncryptionService.CiphertextPrefix
|
||||
fullName: EchoHub.Core.Contracts.IMessageEncryptionService.CiphertextPrefix
|
||||
nameWithType: IMessageEncryptionService.CiphertextPrefix
|
||||
- uid: EchoHub.Core.Contracts.IMessageEncryptionService.Decrypt(System.String)
|
||||
name: Decrypt(string)
|
||||
href: api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html#EchoHub_Core_Contracts_IMessageEncryptionService_Decrypt_System_String_
|
||||
@@ -9532,6 +9709,270 @@ references:
|
||||
commentId: F:EchoHub.Core.DTOs.ChannelError.ValidationFailed
|
||||
fullName: EchoHub.Core.DTOs.ChannelError.ValidationFailed
|
||||
nameWithType: ChannelError.ValidationFailed
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto
|
||||
name: ChannelMetaDto
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html
|
||||
commentId: T:EchoHub.Core.DTOs.ChannelMetaDto
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto
|
||||
nameWithType: ChannelMetaDto
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.#ctor(EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
name: ChannelMetaDto(ChannelMetaDto)
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto__ctor_EchoHub_Core_DTOs_ChannelMetaDto_
|
||||
commentId: M:EchoHub.Core.DTOs.ChannelMetaDto.#ctor(EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
name.vb: New(ChannelMetaDto)
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.ChannelMetaDto(EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
fullName.vb: EchoHub.Core.DTOs.ChannelMetaDto.New(EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
nameWithType: ChannelMetaDto.ChannelMetaDto(ChannelMetaDto)
|
||||
nameWithType.vb: ChannelMetaDto.New(ChannelMetaDto)
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.#ctor(System.Guid,System.String,System.String,System.Boolean,System.Boolean,System.Int32,System.Int32,System.Int64,System.DateTimeOffset)
|
||||
name: ChannelMetaDto(Guid, string, string?, bool, bool, int, int, long, DateTimeOffset)
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto__ctor_System_Guid_System_String_System_String_System_Boolean_System_Boolean_System_Int32_System_Int32_System_Int64_System_DateTimeOffset_
|
||||
commentId: M:EchoHub.Core.DTOs.ChannelMetaDto.#ctor(System.Guid,System.String,System.String,System.Boolean,System.Boolean,System.Int32,System.Int32,System.Int64,System.DateTimeOffset)
|
||||
name.vb: New(Guid, String, String, Boolean, Boolean, Integer, Integer, Long, DateTimeOffset)
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.ChannelMetaDto(System.Guid, string, string?, bool, bool, int, int, long, System.DateTimeOffset)
|
||||
fullName.vb: EchoHub.Core.DTOs.ChannelMetaDto.New(System.Guid, String, String, Boolean, Boolean, Integer, Integer, Long, System.DateTimeOffset)
|
||||
nameWithType: ChannelMetaDto.ChannelMetaDto(Guid, string, string?, bool, bool, int, int, long, DateTimeOffset)
|
||||
nameWithType.vb: ChannelMetaDto.New(Guid, String, String, Boolean, Boolean, Integer, Integer, Long, DateTimeOffset)
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.#ctor*
|
||||
name: ChannelMetaDto
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto__ctor_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.#ctor
|
||||
name.vb: New
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.ChannelMetaDto
|
||||
fullName.vb: EchoHub.Core.DTOs.ChannelMetaDto.New
|
||||
nameWithType: ChannelMetaDto.ChannelMetaDto
|
||||
nameWithType.vb: ChannelMetaDto.New
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.CreatedAt
|
||||
name: CreatedAt
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_CreatedAt
|
||||
commentId: P:EchoHub.Core.DTOs.ChannelMetaDto.CreatedAt
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.CreatedAt
|
||||
nameWithType: ChannelMetaDto.CreatedAt
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.CreatedAt*
|
||||
name: CreatedAt
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_CreatedAt_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.CreatedAt
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.CreatedAt
|
||||
nameWithType: ChannelMetaDto.CreatedAt
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.Deconstruct(System.Guid@,System.String@,System.String@,System.Boolean@,System.Boolean@,System.Int32@,System.Int32@,System.Int64@,System.DateTimeOffset@)
|
||||
name: Deconstruct(out Guid, out string, out string?, out bool, out bool, out int, out int, out long, out DateTimeOffset)
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_Deconstruct_System_Guid__System_String__System_String__System_Boolean__System_Boolean__System_Int32__System_Int32__System_Int64__System_DateTimeOffset__
|
||||
commentId: M:EchoHub.Core.DTOs.ChannelMetaDto.Deconstruct(System.Guid@,System.String@,System.String@,System.Boolean@,System.Boolean@,System.Int32@,System.Int32@,System.Int64@,System.DateTimeOffset@)
|
||||
name.vb: Deconstruct(Guid, String, String, Boolean, Boolean, Integer, Integer, Long, DateTimeOffset)
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.Deconstruct(out System.Guid, out string, out string?, out bool, out bool, out int, out int, out long, out System.DateTimeOffset)
|
||||
fullName.vb: EchoHub.Core.DTOs.ChannelMetaDto.Deconstruct(System.Guid, String, String, Boolean, Boolean, Integer, Integer, Long, System.DateTimeOffset)
|
||||
nameWithType: ChannelMetaDto.Deconstruct(out Guid, out string, out string?, out bool, out bool, out int, out int, out long, out DateTimeOffset)
|
||||
nameWithType.vb: ChannelMetaDto.Deconstruct(Guid, String, String, Boolean, Boolean, Integer, Integer, Long, DateTimeOffset)
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.Deconstruct*
|
||||
name: Deconstruct
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_Deconstruct_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.Deconstruct
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.Deconstruct
|
||||
nameWithType: ChannelMetaDto.Deconstruct
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.EqualityContract
|
||||
name: EqualityContract
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_EqualityContract
|
||||
commentId: P:EchoHub.Core.DTOs.ChannelMetaDto.EqualityContract
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.EqualityContract
|
||||
nameWithType: ChannelMetaDto.EqualityContract
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.EqualityContract*
|
||||
name: EqualityContract
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_EqualityContract_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.EqualityContract
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.EqualityContract
|
||||
nameWithType: ChannelMetaDto.EqualityContract
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.Equals(EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
name: Equals(ChannelMetaDto?)
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_Equals_EchoHub_Core_DTOs_ChannelMetaDto_
|
||||
commentId: M:EchoHub.Core.DTOs.ChannelMetaDto.Equals(EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
name.vb: Equals(ChannelMetaDto)
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.Equals(EchoHub.Core.DTOs.ChannelMetaDto?)
|
||||
fullName.vb: EchoHub.Core.DTOs.ChannelMetaDto.Equals(EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
nameWithType: ChannelMetaDto.Equals(ChannelMetaDto?)
|
||||
nameWithType.vb: ChannelMetaDto.Equals(ChannelMetaDto)
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.Equals(System.Object)
|
||||
name: Equals(object?)
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_Equals_System_Object_
|
||||
commentId: M:EchoHub.Core.DTOs.ChannelMetaDto.Equals(System.Object)
|
||||
name.vb: Equals(Object)
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.Equals(object?)
|
||||
fullName.vb: EchoHub.Core.DTOs.ChannelMetaDto.Equals(Object)
|
||||
nameWithType: ChannelMetaDto.Equals(object?)
|
||||
nameWithType.vb: ChannelMetaDto.Equals(Object)
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.Equals*
|
||||
name: Equals
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_Equals_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.Equals
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.Equals
|
||||
nameWithType: ChannelMetaDto.Equals
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.EstimatedSizeBytes
|
||||
name: EstimatedSizeBytes
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_EstimatedSizeBytes
|
||||
commentId: P:EchoHub.Core.DTOs.ChannelMetaDto.EstimatedSizeBytes
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.EstimatedSizeBytes
|
||||
nameWithType: ChannelMetaDto.EstimatedSizeBytes
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.EstimatedSizeBytes*
|
||||
name: EstimatedSizeBytes
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_EstimatedSizeBytes_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.EstimatedSizeBytes
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.EstimatedSizeBytes
|
||||
nameWithType: ChannelMetaDto.EstimatedSizeBytes
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.GetHashCode
|
||||
name: GetHashCode()
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_GetHashCode
|
||||
commentId: M:EchoHub.Core.DTOs.ChannelMetaDto.GetHashCode
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.GetHashCode()
|
||||
nameWithType: ChannelMetaDto.GetHashCode()
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.GetHashCode*
|
||||
name: GetHashCode
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_GetHashCode_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.GetHashCode
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.GetHashCode
|
||||
nameWithType: ChannelMetaDto.GetHashCode
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.Id
|
||||
name: Id
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_Id
|
||||
commentId: P:EchoHub.Core.DTOs.ChannelMetaDto.Id
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.Id
|
||||
nameWithType: ChannelMetaDto.Id
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.Id*
|
||||
name: Id
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_Id_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.Id
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.Id
|
||||
nameWithType: ChannelMetaDto.Id
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.IsEncrypted
|
||||
name: IsEncrypted
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_IsEncrypted
|
||||
commentId: P:EchoHub.Core.DTOs.ChannelMetaDto.IsEncrypted
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.IsEncrypted
|
||||
nameWithType: ChannelMetaDto.IsEncrypted
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.IsEncrypted*
|
||||
name: IsEncrypted
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_IsEncrypted_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.IsEncrypted
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.IsEncrypted
|
||||
nameWithType: ChannelMetaDto.IsEncrypted
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.IsProtected
|
||||
name: IsProtected
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_IsProtected
|
||||
commentId: P:EchoHub.Core.DTOs.ChannelMetaDto.IsProtected
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.IsProtected
|
||||
nameWithType: ChannelMetaDto.IsProtected
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.IsProtected*
|
||||
name: IsProtected
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_IsProtected_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.IsProtected
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.IsProtected
|
||||
nameWithType: ChannelMetaDto.IsProtected
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.MessageCount
|
||||
name: MessageCount
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_MessageCount
|
||||
commentId: P:EchoHub.Core.DTOs.ChannelMetaDto.MessageCount
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.MessageCount
|
||||
nameWithType: ChannelMetaDto.MessageCount
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.MessageCount*
|
||||
name: MessageCount
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_MessageCount_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.MessageCount
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.MessageCount
|
||||
nameWithType: ChannelMetaDto.MessageCount
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.Name
|
||||
name: Name
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_Name
|
||||
commentId: P:EchoHub.Core.DTOs.ChannelMetaDto.Name
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.Name
|
||||
nameWithType: ChannelMetaDto.Name
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.Name*
|
||||
name: Name
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_Name_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.Name
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.Name
|
||||
nameWithType: ChannelMetaDto.Name
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.PrintMembers(System.Text.StringBuilder)
|
||||
name: PrintMembers(StringBuilder)
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_PrintMembers_System_Text_StringBuilder_
|
||||
commentId: M:EchoHub.Core.DTOs.ChannelMetaDto.PrintMembers(System.Text.StringBuilder)
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.PrintMembers(System.Text.StringBuilder)
|
||||
nameWithType: ChannelMetaDto.PrintMembers(StringBuilder)
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.PrintMembers*
|
||||
name: PrintMembers
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_PrintMembers_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.PrintMembers
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.PrintMembers
|
||||
nameWithType: ChannelMetaDto.PrintMembers
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.ToString
|
||||
name: ToString()
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_ToString
|
||||
commentId: M:EchoHub.Core.DTOs.ChannelMetaDto.ToString
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.ToString()
|
||||
nameWithType: ChannelMetaDto.ToString()
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.ToString*
|
||||
name: ToString
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_ToString_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.ToString
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.ToString
|
||||
nameWithType: ChannelMetaDto.ToString
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.Topic
|
||||
name: Topic
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_Topic
|
||||
commentId: P:EchoHub.Core.DTOs.ChannelMetaDto.Topic
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.Topic
|
||||
nameWithType: ChannelMetaDto.Topic
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.Topic*
|
||||
name: Topic
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_Topic_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.Topic
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.Topic
|
||||
nameWithType: ChannelMetaDto.Topic
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.UniqueUserCount
|
||||
name: UniqueUserCount
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_UniqueUserCount
|
||||
commentId: P:EchoHub.Core.DTOs.ChannelMetaDto.UniqueUserCount
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.UniqueUserCount
|
||||
nameWithType: ChannelMetaDto.UniqueUserCount
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.UniqueUserCount*
|
||||
name: UniqueUserCount
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_UniqueUserCount_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.UniqueUserCount
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.UniqueUserCount
|
||||
nameWithType: ChannelMetaDto.UniqueUserCount
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.op_Equality(EchoHub.Core.DTOs.ChannelMetaDto,EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
name: operator ==(ChannelMetaDto?, ChannelMetaDto?)
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_op_Equality_EchoHub_Core_DTOs_ChannelMetaDto_EchoHub_Core_DTOs_ChannelMetaDto_
|
||||
commentId: M:EchoHub.Core.DTOs.ChannelMetaDto.op_Equality(EchoHub.Core.DTOs.ChannelMetaDto,EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
name.vb: =(ChannelMetaDto, ChannelMetaDto)
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.operator ==(EchoHub.Core.DTOs.ChannelMetaDto?, EchoHub.Core.DTOs.ChannelMetaDto?)
|
||||
fullName.vb: EchoHub.Core.DTOs.ChannelMetaDto.=(EchoHub.Core.DTOs.ChannelMetaDto, EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
nameWithType: ChannelMetaDto.operator ==(ChannelMetaDto?, ChannelMetaDto?)
|
||||
nameWithType.vb: ChannelMetaDto.=(ChannelMetaDto, ChannelMetaDto)
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.op_Equality*
|
||||
name: operator ==
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_op_Equality_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.op_Equality
|
||||
name.vb: =
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.operator ==
|
||||
fullName.vb: EchoHub.Core.DTOs.ChannelMetaDto.=
|
||||
nameWithType: ChannelMetaDto.operator ==
|
||||
nameWithType.vb: ChannelMetaDto.=
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.op_Inequality(EchoHub.Core.DTOs.ChannelMetaDto,EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
name: operator !=(ChannelMetaDto?, ChannelMetaDto?)
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_op_Inequality_EchoHub_Core_DTOs_ChannelMetaDto_EchoHub_Core_DTOs_ChannelMetaDto_
|
||||
commentId: M:EchoHub.Core.DTOs.ChannelMetaDto.op_Inequality(EchoHub.Core.DTOs.ChannelMetaDto,EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
name.vb: <>(ChannelMetaDto, ChannelMetaDto)
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.operator !=(EchoHub.Core.DTOs.ChannelMetaDto?, EchoHub.Core.DTOs.ChannelMetaDto?)
|
||||
fullName.vb: EchoHub.Core.DTOs.ChannelMetaDto.<>(EchoHub.Core.DTOs.ChannelMetaDto, EchoHub.Core.DTOs.ChannelMetaDto)
|
||||
nameWithType: ChannelMetaDto.operator !=(ChannelMetaDto?, ChannelMetaDto?)
|
||||
nameWithType.vb: ChannelMetaDto.<>(ChannelMetaDto, ChannelMetaDto)
|
||||
- uid: EchoHub.Core.DTOs.ChannelMetaDto.op_Inequality*
|
||||
name: operator !=
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelMetaDto.html#EchoHub_Core_DTOs_ChannelMetaDto_op_Inequality_
|
||||
commentId: Overload:EchoHub.Core.DTOs.ChannelMetaDto.op_Inequality
|
||||
name.vb: <>
|
||||
fullName: EchoHub.Core.DTOs.ChannelMetaDto.operator !=
|
||||
fullName.vb: EchoHub.Core.DTOs.ChannelMetaDto.<>
|
||||
nameWithType: ChannelMetaDto.operator !=
|
||||
nameWithType.vb: ChannelMetaDto.<>
|
||||
- uid: EchoHub.Core.DTOs.ChannelOperationResult
|
||||
name: ChannelOperationResult
|
||||
href: api/core/EchoHub.Core.DTOs.ChannelOperationResult.html
|
||||
@@ -16168,6 +16609,168 @@ references:
|
||||
commentId: F:EchoHub.Server.Auth.JwtTokenService.RefreshTokenLifetime
|
||||
fullName: EchoHub.Server.Auth.JwtTokenService.RefreshTokenLifetime
|
||||
nameWithType: JwtTokenService.RefreshTokenLifetime
|
||||
- uid: EchoHub.Server.Config
|
||||
name: EchoHub.Server.Config
|
||||
href: api/server/EchoHub.Server.Config.html
|
||||
commentId: N:EchoHub.Server.Config
|
||||
fullName: EchoHub.Server.Config
|
||||
nameWithType: EchoHub.Server.Config
|
||||
- uid: EchoHub.Server.Config.UploadLimits
|
||||
name: UploadLimits
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html
|
||||
commentId: T:EchoHub.Server.Config.UploadLimits
|
||||
fullName: EchoHub.Server.Config.UploadLimits
|
||||
nameWithType: UploadLimits
|
||||
- uid: EchoHub.Server.Config.UploadLimits.#ctor
|
||||
name: UploadLimits()
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits__ctor
|
||||
commentId: M:EchoHub.Server.Config.UploadLimits.#ctor
|
||||
name.vb: New()
|
||||
fullName: EchoHub.Server.Config.UploadLimits.UploadLimits()
|
||||
fullName.vb: EchoHub.Server.Config.UploadLimits.New()
|
||||
nameWithType: UploadLimits.UploadLimits()
|
||||
nameWithType.vb: UploadLimits.New()
|
||||
- uid: EchoHub.Server.Config.UploadLimits.#ctor*
|
||||
name: UploadLimits
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits__ctor_
|
||||
commentId: Overload:EchoHub.Server.Config.UploadLimits.#ctor
|
||||
name.vb: New
|
||||
fullName: EchoHub.Server.Config.UploadLimits.UploadLimits
|
||||
fullName.vb: EchoHub.Server.Config.UploadLimits.New
|
||||
nameWithType: UploadLimits.UploadLimits
|
||||
nameWithType.vb: UploadLimits.New
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxAttachmentsPerMessage
|
||||
name: MaxAttachmentsPerMessage
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxAttachmentsPerMessage
|
||||
commentId: P:EchoHub.Server.Config.UploadLimits.MaxAttachmentsPerMessage
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxAttachmentsPerMessage
|
||||
nameWithType: UploadLimits.MaxAttachmentsPerMessage
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxAttachmentsPerMessage*
|
||||
name: MaxAttachmentsPerMessage
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxAttachmentsPerMessage_
|
||||
commentId: Overload:EchoHub.Server.Config.UploadLimits.MaxAttachmentsPerMessage
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxAttachmentsPerMessage
|
||||
nameWithType: UploadLimits.MaxAttachmentsPerMessage
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxAudioSizeBytes
|
||||
name: MaxAudioSizeBytes
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxAudioSizeBytes
|
||||
commentId: P:EchoHub.Server.Config.UploadLimits.MaxAudioSizeBytes
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxAudioSizeBytes
|
||||
nameWithType: UploadLimits.MaxAudioSizeBytes
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxAudioSizeBytes*
|
||||
name: MaxAudioSizeBytes
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxAudioSizeBytes_
|
||||
commentId: Overload:EchoHub.Server.Config.UploadLimits.MaxAudioSizeBytes
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxAudioSizeBytes
|
||||
nameWithType: UploadLimits.MaxAudioSizeBytes
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxAudioSizeMB
|
||||
name: MaxAudioSizeMB
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxAudioSizeMB
|
||||
commentId: P:EchoHub.Server.Config.UploadLimits.MaxAudioSizeMB
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxAudioSizeMB
|
||||
nameWithType: UploadLimits.MaxAudioSizeMB
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxAudioSizeMB*
|
||||
name: MaxAudioSizeMB
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxAudioSizeMB_
|
||||
commentId: Overload:EchoHub.Server.Config.UploadLimits.MaxAudioSizeMB
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxAudioSizeMB
|
||||
nameWithType: UploadLimits.MaxAudioSizeMB
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxAvatarSizeBytes
|
||||
name: MaxAvatarSizeBytes
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxAvatarSizeBytes
|
||||
commentId: P:EchoHub.Server.Config.UploadLimits.MaxAvatarSizeBytes
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxAvatarSizeBytes
|
||||
nameWithType: UploadLimits.MaxAvatarSizeBytes
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxAvatarSizeBytes*
|
||||
name: MaxAvatarSizeBytes
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxAvatarSizeBytes_
|
||||
commentId: Overload:EchoHub.Server.Config.UploadLimits.MaxAvatarSizeBytes
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxAvatarSizeBytes
|
||||
nameWithType: UploadLimits.MaxAvatarSizeBytes
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxAvatarSizeMB
|
||||
name: MaxAvatarSizeMB
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxAvatarSizeMB
|
||||
commentId: P:EchoHub.Server.Config.UploadLimits.MaxAvatarSizeMB
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxAvatarSizeMB
|
||||
nameWithType: UploadLimits.MaxAvatarSizeMB
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxAvatarSizeMB*
|
||||
name: MaxAvatarSizeMB
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxAvatarSizeMB_
|
||||
commentId: Overload:EchoHub.Server.Config.UploadLimits.MaxAvatarSizeMB
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxAvatarSizeMB
|
||||
nameWithType: UploadLimits.MaxAvatarSizeMB
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxFileSizeBytes
|
||||
name: MaxFileSizeBytes
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxFileSizeBytes
|
||||
commentId: P:EchoHub.Server.Config.UploadLimits.MaxFileSizeBytes
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxFileSizeBytes
|
||||
nameWithType: UploadLimits.MaxFileSizeBytes
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxFileSizeBytes*
|
||||
name: MaxFileSizeBytes
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxFileSizeBytes_
|
||||
commentId: Overload:EchoHub.Server.Config.UploadLimits.MaxFileSizeBytes
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxFileSizeBytes
|
||||
nameWithType: UploadLimits.MaxFileSizeBytes
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxFileSizeMB
|
||||
name: MaxFileSizeMB
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxFileSizeMB
|
||||
commentId: P:EchoHub.Server.Config.UploadLimits.MaxFileSizeMB
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxFileSizeMB
|
||||
nameWithType: UploadLimits.MaxFileSizeMB
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxFileSizeMB*
|
||||
name: MaxFileSizeMB
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxFileSizeMB_
|
||||
commentId: Overload:EchoHub.Server.Config.UploadLimits.MaxFileSizeMB
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxFileSizeMB
|
||||
nameWithType: UploadLimits.MaxFileSizeMB
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxForKind(EchoHub.Core.Models.AttachmentKind)
|
||||
name: MaxForKind(AttachmentKind)
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxForKind_EchoHub_Core_Models_AttachmentKind_
|
||||
commentId: M:EchoHub.Server.Config.UploadLimits.MaxForKind(EchoHub.Core.Models.AttachmentKind)
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxForKind(EchoHub.Core.Models.AttachmentKind)
|
||||
nameWithType: UploadLimits.MaxForKind(AttachmentKind)
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxForKind*
|
||||
name: MaxForKind
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxForKind_
|
||||
commentId: Overload:EchoHub.Server.Config.UploadLimits.MaxForKind
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxForKind
|
||||
nameWithType: UploadLimits.MaxForKind
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxImageSizeBytes
|
||||
name: MaxImageSizeBytes
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxImageSizeBytes
|
||||
commentId: P:EchoHub.Server.Config.UploadLimits.MaxImageSizeBytes
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxImageSizeBytes
|
||||
nameWithType: UploadLimits.MaxImageSizeBytes
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxImageSizeBytes*
|
||||
name: MaxImageSizeBytes
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxImageSizeBytes_
|
||||
commentId: Overload:EchoHub.Server.Config.UploadLimits.MaxImageSizeBytes
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxImageSizeBytes
|
||||
nameWithType: UploadLimits.MaxImageSizeBytes
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxImageSizeMB
|
||||
name: MaxImageSizeMB
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxImageSizeMB
|
||||
commentId: P:EchoHub.Server.Config.UploadLimits.MaxImageSizeMB
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxImageSizeMB
|
||||
nameWithType: UploadLimits.MaxImageSizeMB
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxImageSizeMB*
|
||||
name: MaxImageSizeMB
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxImageSizeMB_
|
||||
commentId: Overload:EchoHub.Server.Config.UploadLimits.MaxImageSizeMB
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxImageSizeMB
|
||||
nameWithType: UploadLimits.MaxImageSizeMB
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxRequestBodyBytes
|
||||
name: MaxRequestBodyBytes
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxRequestBodyBytes
|
||||
commentId: P:EchoHub.Server.Config.UploadLimits.MaxRequestBodyBytes
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxRequestBodyBytes
|
||||
nameWithType: UploadLimits.MaxRequestBodyBytes
|
||||
- uid: EchoHub.Server.Config.UploadLimits.MaxRequestBodyBytes*
|
||||
name: MaxRequestBodyBytes
|
||||
href: api/server/EchoHub.Server.Config.UploadLimits.html#EchoHub_Server_Config_UploadLimits_MaxRequestBodyBytes_
|
||||
commentId: Overload:EchoHub.Server.Config.UploadLimits.MaxRequestBodyBytes
|
||||
fullName: EchoHub.Server.Config.UploadLimits.MaxRequestBodyBytes
|
||||
nameWithType: UploadLimits.MaxRequestBodyBytes
|
||||
- uid: EchoHub.Server.Controllers
|
||||
name: EchoHub.Server.Controllers
|
||||
href: api/server/EchoHub.Server.Controllers.html
|
||||
@@ -16252,15 +16855,15 @@ references:
|
||||
commentId: T:EchoHub.Server.Controllers.ChannelsController
|
||||
fullName: EchoHub.Server.Controllers.ChannelsController
|
||||
nameWithType: ChannelsController
|
||||
- uid: EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Core.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService)
|
||||
name: ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService)
|
||||
href: api/server/EchoHub.Server.Controllers.ChannelsController.html#EchoHub_Server_Controllers_ChannelsController__ctor_EchoHub_Core_Contracts_IChannelService_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Core_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_EchoHub_Core_Contracts_IMessageEncryptionService_
|
||||
commentId: M:EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Core.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService)
|
||||
name.vb: New(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService)
|
||||
fullName: EchoHub.Server.Controllers.ChannelsController.ChannelsController(EchoHub.Core.Contracts.IChannelService, EchoHub.Server.Data.EchoHubDbContext, EchoHub.Server.Services.FileStorageService, EchoHub.Core.Services.ImageToAsciiService, System.Net.Http.IHttpClientFactory, EchoHub.Core.Contracts.IChatService, EchoHub.Core.Contracts.IMessageEncryptionService)
|
||||
fullName.vb: EchoHub.Server.Controllers.ChannelsController.New(EchoHub.Core.Contracts.IChannelService, EchoHub.Server.Data.EchoHubDbContext, EchoHub.Server.Services.FileStorageService, EchoHub.Core.Services.ImageToAsciiService, System.Net.Http.IHttpClientFactory, EchoHub.Core.Contracts.IChatService, EchoHub.Core.Contracts.IMessageEncryptionService)
|
||||
nameWithType: ChannelsController.ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService)
|
||||
nameWithType.vb: ChannelsController.New(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService)
|
||||
- uid: EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Core.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Server.Config.UploadLimits)
|
||||
name: ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits)
|
||||
href: api/server/EchoHub.Server.Controllers.ChannelsController.html#EchoHub_Server_Controllers_ChannelsController__ctor_EchoHub_Core_Contracts_IChannelService_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Core_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_EchoHub_Core_Contracts_IMessageEncryptionService_EchoHub_Server_Config_UploadLimits_
|
||||
commentId: M:EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Core.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Server.Config.UploadLimits)
|
||||
name.vb: New(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits)
|
||||
fullName: EchoHub.Server.Controllers.ChannelsController.ChannelsController(EchoHub.Core.Contracts.IChannelService, EchoHub.Server.Data.EchoHubDbContext, EchoHub.Server.Services.FileStorageService, EchoHub.Core.Services.ImageToAsciiService, System.Net.Http.IHttpClientFactory, EchoHub.Core.Contracts.IChatService, EchoHub.Core.Contracts.IMessageEncryptionService, EchoHub.Server.Config.UploadLimits)
|
||||
fullName.vb: EchoHub.Server.Controllers.ChannelsController.New(EchoHub.Core.Contracts.IChannelService, EchoHub.Server.Data.EchoHubDbContext, EchoHub.Server.Services.FileStorageService, EchoHub.Core.Services.ImageToAsciiService, System.Net.Http.IHttpClientFactory, EchoHub.Core.Contracts.IChatService, EchoHub.Core.Contracts.IMessageEncryptionService, EchoHub.Server.Config.UploadLimits)
|
||||
nameWithType: ChannelsController.ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits)
|
||||
nameWithType.vb: ChannelsController.New(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits)
|
||||
- uid: EchoHub.Server.Controllers.ChannelsController.#ctor*
|
||||
name: ChannelsController
|
||||
href: api/server/EchoHub.Server.Controllers.ChannelsController.html#EchoHub_Server_Controllers_ChannelsController__ctor_
|
||||
@@ -16312,6 +16915,21 @@ references:
|
||||
commentId: Overload:EchoHub.Server.Controllers.ChannelsController.GetChannelCrypto
|
||||
fullName: EchoHub.Server.Controllers.ChannelsController.GetChannelCrypto
|
||||
nameWithType: ChannelsController.GetChannelCrypto
|
||||
- uid: EchoHub.Server.Controllers.ChannelsController.GetChannelMeta(System.String)
|
||||
name: GetChannelMeta(string)
|
||||
href: api/server/EchoHub.Server.Controllers.ChannelsController.html#EchoHub_Server_Controllers_ChannelsController_GetChannelMeta_System_String_
|
||||
commentId: M:EchoHub.Server.Controllers.ChannelsController.GetChannelMeta(System.String)
|
||||
name.vb: GetChannelMeta(String)
|
||||
fullName: EchoHub.Server.Controllers.ChannelsController.GetChannelMeta(string)
|
||||
fullName.vb: EchoHub.Server.Controllers.ChannelsController.GetChannelMeta(String)
|
||||
nameWithType: ChannelsController.GetChannelMeta(string)
|
||||
nameWithType.vb: ChannelsController.GetChannelMeta(String)
|
||||
- uid: EchoHub.Server.Controllers.ChannelsController.GetChannelMeta*
|
||||
name: GetChannelMeta
|
||||
href: api/server/EchoHub.Server.Controllers.ChannelsController.html#EchoHub_Server_Controllers_ChannelsController_GetChannelMeta_
|
||||
commentId: Overload:EchoHub.Server.Controllers.ChannelsController.GetChannelMeta
|
||||
fullName: EchoHub.Server.Controllers.ChannelsController.GetChannelMeta
|
||||
nameWithType: ChannelsController.GetChannelMeta
|
||||
- uid: EchoHub.Server.Controllers.ChannelsController.GetChannels(System.Int32,System.Int32)
|
||||
name: GetChannels(int, int)
|
||||
href: api/server/EchoHub.Server.Controllers.ChannelsController.html#EchoHub_Server_Controllers_ChannelsController_GetChannels_System_Int32_System_Int32_
|
||||
@@ -16630,15 +17248,15 @@ references:
|
||||
commentId: T:EchoHub.Server.Controllers.UsersController
|
||||
fullName: EchoHub.Server.Controllers.UsersController
|
||||
nameWithType: UsersController
|
||||
- uid: EchoHub.Server.Controllers.UsersController.#ctor(EchoHub.Core.Contracts.IUserService,EchoHub.Core.Services.ImageToAsciiService)
|
||||
name: UsersController(IUserService, ImageToAsciiService)
|
||||
href: api/server/EchoHub.Server.Controllers.UsersController.html#EchoHub_Server_Controllers_UsersController__ctor_EchoHub_Core_Contracts_IUserService_EchoHub_Core_Services_ImageToAsciiService_
|
||||
commentId: M:EchoHub.Server.Controllers.UsersController.#ctor(EchoHub.Core.Contracts.IUserService,EchoHub.Core.Services.ImageToAsciiService)
|
||||
name.vb: New(IUserService, ImageToAsciiService)
|
||||
fullName: EchoHub.Server.Controllers.UsersController.UsersController(EchoHub.Core.Contracts.IUserService, EchoHub.Core.Services.ImageToAsciiService)
|
||||
fullName.vb: EchoHub.Server.Controllers.UsersController.New(EchoHub.Core.Contracts.IUserService, EchoHub.Core.Services.ImageToAsciiService)
|
||||
nameWithType: UsersController.UsersController(IUserService, ImageToAsciiService)
|
||||
nameWithType.vb: UsersController.New(IUserService, ImageToAsciiService)
|
||||
- uid: EchoHub.Server.Controllers.UsersController.#ctor(EchoHub.Core.Contracts.IUserService,EchoHub.Core.Services.ImageToAsciiService,EchoHub.Server.Config.UploadLimits)
|
||||
name: UsersController(IUserService, ImageToAsciiService, UploadLimits)
|
||||
href: api/server/EchoHub.Server.Controllers.UsersController.html#EchoHub_Server_Controllers_UsersController__ctor_EchoHub_Core_Contracts_IUserService_EchoHub_Core_Services_ImageToAsciiService_EchoHub_Server_Config_UploadLimits_
|
||||
commentId: M:EchoHub.Server.Controllers.UsersController.#ctor(EchoHub.Core.Contracts.IUserService,EchoHub.Core.Services.ImageToAsciiService,EchoHub.Server.Config.UploadLimits)
|
||||
name.vb: New(IUserService, ImageToAsciiService, UploadLimits)
|
||||
fullName: EchoHub.Server.Controllers.UsersController.UsersController(EchoHub.Core.Contracts.IUserService, EchoHub.Core.Services.ImageToAsciiService, EchoHub.Server.Config.UploadLimits)
|
||||
fullName.vb: EchoHub.Server.Controllers.UsersController.New(EchoHub.Core.Contracts.IUserService, EchoHub.Core.Services.ImageToAsciiService, EchoHub.Server.Config.UploadLimits)
|
||||
nameWithType: UsersController.UsersController(IUserService, ImageToAsciiService, UploadLimits)
|
||||
nameWithType.vb: UsersController.New(IUserService, ImageToAsciiService, UploadLimits)
|
||||
- uid: EchoHub.Server.Controllers.UsersController.#ctor*
|
||||
name: UsersController
|
||||
href: api/server/EchoHub.Server.Controllers.UsersController.html#EchoHub_Server_Controllers_UsersController__ctor_
|
||||
@@ -18883,6 +19501,21 @@ references:
|
||||
commentId: Overload:EchoHub.Server.Services.ChannelService.GetChannelListAsync
|
||||
fullName: EchoHub.Server.Services.ChannelService.GetChannelListAsync
|
||||
nameWithType: ChannelService.GetChannelListAsync
|
||||
- uid: EchoHub.Server.Services.ChannelService.GetChannelMetaAsync(System.String)
|
||||
name: GetChannelMetaAsync(string)
|
||||
href: api/server/EchoHub.Server.Services.ChannelService.html#EchoHub_Server_Services_ChannelService_GetChannelMetaAsync_System_String_
|
||||
commentId: M:EchoHub.Server.Services.ChannelService.GetChannelMetaAsync(System.String)
|
||||
name.vb: GetChannelMetaAsync(String)
|
||||
fullName: EchoHub.Server.Services.ChannelService.GetChannelMetaAsync(string)
|
||||
fullName.vb: EchoHub.Server.Services.ChannelService.GetChannelMetaAsync(String)
|
||||
nameWithType: ChannelService.GetChannelMetaAsync(string)
|
||||
nameWithType.vb: ChannelService.GetChannelMetaAsync(String)
|
||||
- uid: EchoHub.Server.Services.ChannelService.GetChannelMetaAsync*
|
||||
name: GetChannelMetaAsync
|
||||
href: api/server/EchoHub.Server.Services.ChannelService.html#EchoHub_Server_Services_ChannelService_GetChannelMetaAsync_
|
||||
commentId: Overload:EchoHub.Server.Services.ChannelService.GetChannelMetaAsync
|
||||
fullName: EchoHub.Server.Services.ChannelService.GetChannelMetaAsync
|
||||
nameWithType: ChannelService.GetChannelMetaAsync
|
||||
- uid: EchoHub.Server.Services.ChannelService.GetChannelTopicAsync(System.String)
|
||||
name: GetChannelTopicAsync(string)
|
||||
href: api/server/EchoHub.Server.Services.ChannelService.html#EchoHub_Server_Services_ChannelService_GetChannelTopicAsync_System_String_
|
||||
|
||||
Reference in New Issue
Block a user