This commit is contained in:
HueByte
2026-02-22 04:57:18 +00:00
parent fca77ea92f
commit 03bcf194d6
63 changed files with 8871 additions and 743 deletions
+4 -2
View File
@@ -91,9 +91,11 @@
<h2 id="topics">Topics</h2>
<ul>
<li>Terminal.Gui v2 patterns and conventions</li>
<li>Theme system and customization</li>
<li>Theme system and customization (including transparent theme)</li>
<li>Command system reference</li>
<li>Configuration management</li>
<li>Configuration and session persistence</li>
<li>Audio playback and file downloads</li>
<li>Automatic update checking</li>
<li><a href="../../articles/notification-sounds.html">Notification sounds</a></li>
</ul>
@@ -173,7 +173,7 @@ Owns session state and wires UI events to service calls.</p>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>app</code> <span class="xref">IApplication</span></dt>
<dt><code>app</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/App/IApplication.cs">IApplication</a></dt>
<dd></dd>
<dt><code>config</code> <a class="xref" href="EchoHub.Client.Config.ClientConfig.html">ClientConfig</a></dt>
<dd></dd>
+1 -1
View File
@@ -170,7 +170,7 @@ Runs async work on a background thread and routes exceptions to the UI.</p>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>app</code> <span class="xref">IApplication</span></dt>
<dt><code>app</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/App/IApplication.cs">IApplication</a></dt>
<dd></dd>
<dt><code>work</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<span class="xref">Task</span>&gt;</dt>
<dd></dd>
@@ -244,10 +244,10 @@ Class SavedServer <a class="header-action link-secondary" title="View source" h
<a id="EchoHub_Client_Config_SavedServer_Token_" data-uid="EchoHub.Client.Config.SavedServer.Token*"></a>
<a id="EchoHub_Client_Config_SavedServer_RefreshToken_" data-uid="EchoHub.Client.Config.SavedServer.RefreshToken*"></a>
<h3 id="EchoHub_Client_Config_SavedServer_Token" data-uid="EchoHub.Client.Config.SavedServer.Token">
Token
<h3 id="EchoHub_Client_Config_SavedServer_RefreshToken" data-uid="EchoHub.Client.Config.SavedServer.RefreshToken">
RefreshToken
<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>
@@ -255,7 +255,7 @@ Class SavedServer <a class="header-action link-secondary" title="View source" h
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string? Token { get; set; }</code></pre>
<pre><code class="lang-csharp hljs">public string? RefreshToken { get; set; }</code></pre>
</div>
@@ -275,6 +275,37 @@ Class SavedServer <a class="header-action link-secondary" title="View source" h
<a id="EchoHub_Client_Config_SavedServer_RememberMe_" data-uid="EchoHub.Client.Config.SavedServer.RememberMe*"></a>
<h3 id="EchoHub_Client_Config_SavedServer_RememberMe" data-uid="EchoHub.Client.Config.SavedServer.RememberMe">
RememberMe
<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"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool RememberMe { 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_Config_SavedServer_Url_" data-uid="EchoHub.Client.Config.SavedServer.Url*"></a>
<h3 id="EchoHub_Client_Config_SavedServer_Url" data-uid="EchoHub.Client.Config.SavedServer.Url">
@@ -501,6 +501,44 @@ Class ApiClient <a class="header-action link-secondary" title="View source" hre
<a id="EchoHub_Client_Services_ApiClient_DownloadFileToTempAsync_" data-uid="EchoHub.Client.Services.ApiClient.DownloadFileToTempAsync*"></a>
<h3 id="EchoHub_Client_Services_ApiClient_DownloadFileToTempAsync_System_String_System_String_" data-uid="EchoHub.Client.Services.ApiClient.DownloadFileToTempAsync(System.String,System.String)">
DownloadFileToTempAsync(string, 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"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Task&lt;string&gt; DownloadFileToTempAsync(string relativeUrl, string fileName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>relativeUrl</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>fileName</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>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</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">
@@ -739,6 +777,42 @@ Used by EchoHubConnection for SignalR token provider.</p>
<a id="EchoHub_Client_Services_ApiClient_LoginWithRefreshTokenAsync_" data-uid="EchoHub.Client.Services.ApiClient.LoginWithRefreshTokenAsync*"></a>
<h3 id="EchoHub_Client_Services_ApiClient_LoginWithRefreshTokenAsync_System_String_" data-uid="EchoHub.Client.Services.ApiClient.LoginWithRefreshTokenAsync(System.String)">
LoginWithRefreshTokenAsync(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"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Task&lt;LoginResponse&gt; LoginWithRefreshTokenAsync(string refreshToken)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>refreshToken</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>&lt;<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/AuthDtos.cs">LoginResponse</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_Services_ApiClient_LogoutAsync_" data-uid="EchoHub.Client.Services.ApiClient.LogoutAsync*"></a>
<h3 id="EchoHub_Client_Services_ApiClient_LogoutAsync" data-uid="EchoHub.Client.Services.ApiClient.LogoutAsync">
@@ -1183,6 +1257,40 @@ Used by EchoHubConnection for SignalR token provider.</p>
<h2 class="section" id="events">Events
</h2>
<h3 id="EchoHub_Client_Services_ApiClient_OnTokensRefreshed" data-uid="EchoHub.Client.Services.ApiClient.OnTokensRefreshed">
OnTokensRefreshed
<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"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event Action? OnTokensRefreshed</code></pre>
</div>
<h4 class="section">Event Type</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.action">Action</a></dt>
<dd></dd>
</dl>
</article>
@@ -0,0 +1,475 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class AudioPlaybackService | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class AudioPlaybackService | 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/new/master/apiSpec/new?filename=EchoHub_Client_Services_AudioPlaybackService.md&amp;value=---%0Auid%3A%20EchoHub.Client.Services.AudioPlaybackService%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.Client.Services.AudioPlaybackService">
<h1 id="EchoHub_Client_Services_AudioPlaybackService" data-uid="EchoHub.Client.Services.AudioPlaybackService" class="text-break">
Class AudioPlaybackService <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/AudioPlaybackService.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.Services.html">Services</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Client.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class AudioPlaybackService</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">AudioPlaybackService</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.memberwiseclone">object.MemberwiseClone()</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_Client_Services_AudioPlaybackService__ctor_" data-uid="EchoHub.Client.Services.AudioPlaybackService.#ctor*"></a>
<h3 id="EchoHub_Client_Services_AudioPlaybackService__ctor" data-uid="EchoHub.Client.Services.AudioPlaybackService.#ctor">
AudioPlaybackService()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/AudioPlaybackService.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 AudioPlaybackService()</code></pre>
</div>
<h2 class="section" id="properties">Properties
</h2>
<a id="EchoHub_Client_Services_AudioPlaybackService_IsPaused_" data-uid="EchoHub.Client.Services.AudioPlaybackService.IsPaused*"></a>
<h3 id="EchoHub_Client_Services_AudioPlaybackService_IsPaused" data-uid="EchoHub.Client.Services.AudioPlaybackService.IsPaused">
IsPaused
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/AudioPlaybackService.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 IsPaused { 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.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_Services_AudioPlaybackService_IsPlaying_" data-uid="EchoHub.Client.Services.AudioPlaybackService.IsPlaying*"></a>
<h3 id="EchoHub_Client_Services_AudioPlaybackService_IsPlaying" data-uid="EchoHub.Client.Services.AudioPlaybackService.IsPlaying">
IsPlaying
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/AudioPlaybackService.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 IsPlaying { 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.boolean">bool</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Client_Services_AudioPlaybackService_PauseAsync_" data-uid="EchoHub.Client.Services.AudioPlaybackService.PauseAsync*"></a>
<h3 id="EchoHub_Client_Services_AudioPlaybackService_PauseAsync" data-uid="EchoHub.Client.Services.AudioPlaybackService.PauseAsync">
PauseAsync()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/AudioPlaybackService.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 PauseAsync()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span></dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_Services_AudioPlaybackService_PlayAsync_" data-uid="EchoHub.Client.Services.AudioPlaybackService.PlayAsync*"></a>
<h3 id="EchoHub_Client_Services_AudioPlaybackService_PlayAsync_System_String_" data-uid="EchoHub.Client.Services.AudioPlaybackService.PlayAsync(System.String)">
PlayAsync(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/AudioPlaybackService.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 PlayAsync(string filePath)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>filePath</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></dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_Services_AudioPlaybackService_ResumeAsync_" data-uid="EchoHub.Client.Services.AudioPlaybackService.ResumeAsync*"></a>
<h3 id="EchoHub_Client_Services_AudioPlaybackService_ResumeAsync" data-uid="EchoHub.Client.Services.AudioPlaybackService.ResumeAsync">
ResumeAsync()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/AudioPlaybackService.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 ResumeAsync()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span></dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_Services_AudioPlaybackService_SetVolumeAsync_" data-uid="EchoHub.Client.Services.AudioPlaybackService.SetVolumeAsync*"></a>
<h3 id="EchoHub_Client_Services_AudioPlaybackService_SetVolumeAsync_System_Byte_" data-uid="EchoHub.Client.Services.AudioPlaybackService.SetVolumeAsync(System.Byte)">
SetVolumeAsync(byte)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/AudioPlaybackService.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 SetVolumeAsync(byte volume)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>volume</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.byte">byte</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span></dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_Services_AudioPlaybackService_StopAsync_" data-uid="EchoHub.Client.Services.AudioPlaybackService.StopAsync*"></a>
<h3 id="EchoHub_Client_Services_AudioPlaybackService_StopAsync" data-uid="EchoHub.Client.Services.AudioPlaybackService.StopAsync">
StopAsync()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/AudioPlaybackService.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 StopAsync()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span></dt>
<dd></dd>
</dl>
<h2 class="section" id="events">Events
</h2>
<h3 id="EchoHub_Client_Services_AudioPlaybackService_PlaybackFinished" data-uid="EchoHub.Client.Services.AudioPlaybackService.PlaybackFinished">
PlaybackFinished
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/AudioPlaybackService.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 EventHandler? PlaybackFinished</code></pre>
</div>
<h4 class="section">Event Type</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.eventhandler">EventHandler</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/Services/AudioPlaybackService.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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -101,7 +101,7 @@ Class UpdateChecker <a class="header-action link-secondary" title="View source"
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class UpdateChecker</code></pre>
<pre><code class="lang-csharp hljs">public sealed class UpdateChecker : IDisposable</code></pre>
</div>
@@ -115,6 +115,12 @@ Class UpdateChecker <a class="header-action link-secondary" title="View source"
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
@@ -123,9 +129,6 @@ Class UpdateChecker <a class="header-action link-secondary" title="View source"
<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>
@@ -148,32 +151,121 @@ Class UpdateChecker <a class="header-action link-secondary" title="View source"
<h2 class="section" id="constructors">Constructors
</h2>
<a id="EchoHub_Client_Services_UpdateChecker__ctor_" data-uid="EchoHub.Client.Services.UpdateChecker.#ctor*"></a>
<h3 id="EchoHub_Client_Services_UpdateChecker__ctor_Terminal_Gui_App_IApplication_" data-uid="EchoHub.Client.Services.UpdateChecker.#ctor(Terminal.Gui.App.IApplication)">
UpdateChecker(IApplication)
<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"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public UpdateChecker(IApplication app)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>app</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/App/IApplication.cs">IApplication</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="EchoHub_Client_Services_UpdateChecker_CurrentVersion_" data-uid="EchoHub.Client.Services.UpdateChecker.CurrentVersion*"></a>
<h3 id="EchoHub_Client_Services_UpdateChecker_CurrentVersion" data-uid="EchoHub.Client.Services.UpdateChecker.CurrentVersion">
CurrentVersion
<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"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string CurrentVersion { 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.string">string</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Client_Services_UpdateChecker_CheckForUpdateAsync_" data-uid="EchoHub.Client.Services.UpdateChecker.CheckForUpdateAsync*"></a>
<a id="EchoHub_Client_Services_UpdateChecker_Dispose_" data-uid="EchoHub.Client.Services.UpdateChecker.Dispose*"></a>
<h3 id="EchoHub_Client_Services_UpdateChecker_CheckForUpdateAsync" data-uid="EchoHub.Client.Services.UpdateChecker.CheckForUpdateAsync">
CheckForUpdateAsync()
<h3 id="EchoHub_Client_Services_UpdateChecker_Dispose" data-uid="EchoHub.Client.Services.UpdateChecker.Dispose">
Dispose()
<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>Checks GitHub for a newer release. Returns the new version string if one exists, or null.
Never throws — all errors are silently swallowed.</p>
</div>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static Task&lt;string?&gt; CheckForUpdateAsync()</code></pre>
<pre><code class="lang-csharp hljs">public void Dispose()</code></pre>
</div>
<a id="EchoHub_Client_Services_UpdateChecker_Start_" data-uid="EchoHub.Client.Services.UpdateChecker.Start*"></a>
<h3 id="EchoHub_Client_Services_UpdateChecker_Start" data-uid="EchoHub.Client.Services.UpdateChecker.Start">
Start()
<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"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Start()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
</dl>
+4
View File
@@ -98,6 +98,10 @@ Classes
<dt><a class="xref" href="EchoHub.Client.Services.ApiClient.html">ApiClient</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Client.Services.AudioPlaybackService.html">AudioPlaybackService</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Client.Services.ClientEncryptionService.html">ClientEncryptionService</a></dt>
<dd><p>Client-side encryption service. Uses the same AES-256-GCM format as the server
@@ -0,0 +1,244 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class AudioPlayerDialog | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class AudioPlayerDialog | 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/new/master/apiSpec/new?filename=EchoHub_Client_UI_AudioPlayerDialog.md&amp;value=---%0Auid%3A%20EchoHub.Client.UI.AudioPlayerDialog%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.Client.UI.AudioPlayerDialog">
<h1 id="EchoHub_Client_UI_AudioPlayerDialog" data-uid="EchoHub.Client.UI.AudioPlayerDialog" class="text-break">
Class AudioPlayerDialog <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/AudioPlayerDialog.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></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Client.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public sealed class AudioPlayerDialog</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">AudioPlayerDialog</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_Client_UI_AudioPlayerDialog__ctor_" data-uid="EchoHub.Client.UI.AudioPlayerDialog.#ctor*"></a>
<h3 id="EchoHub_Client_UI_AudioPlayerDialog__ctor" data-uid="EchoHub.Client.UI.AudioPlayerDialog.#ctor">
AudioPlayerDialog()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/AudioPlayerDialog.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 AudioPlayerDialog()</code></pre>
</div>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Client_UI_AudioPlayerDialog_Show_" data-uid="EchoHub.Client.UI.AudioPlayerDialog.Show*"></a>
<h3 id="EchoHub_Client_UI_AudioPlayerDialog_Show_Terminal_Gui_App_IApplication_EchoHub_Client_Services_AudioPlaybackService_System_String_System_String_" data-uid="EchoHub.Client.UI.AudioPlayerDialog.Show(Terminal.Gui.App.IApplication,EchoHub.Client.Services.AudioPlaybackService,System.String,System.String)">
Show(IApplication, AudioPlaybackService, string, string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/AudioPlayerDialog.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 void Show(IApplication app, AudioPlaybackService audioService, string filePath, string fileName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>app</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/App/IApplication.cs">IApplication</a></dt>
<dd></dd>
<dt><code>audioService</code> <a class="xref" href="EchoHub.Client.Services.AudioPlaybackService.html">AudioPlaybackService</a></dt>
<dd></dd>
<dt><code>filePath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>fileName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/AudioPlayerDialog.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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -120,7 +120,7 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><span class="xref">IListDataSource</span></div>
<div><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/IListDataSource.cs">IListDataSource</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a></div>
</dd>
</dl>
@@ -198,7 +198,8 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Gets the number of items in the data source.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -229,7 +230,8 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Gets the width in columns of the widest item in the data source.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -249,6 +251,9 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<h4 class="section" id="EchoHub_Client_UI_ChannelListSource_MaxItemLength_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> uses this value to set its horizontal content size for scrolling.</p>
</div>
@@ -260,7 +265,8 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Gets or sets whether the <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/IListDataSource.cs">CollectionChanged</a> event should be suppressed.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -280,6 +286,10 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<h4 class="section" id="EchoHub_Client_UI_ChannelListSource_SuspendCollectionChangedEvent_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>Set to <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> to prevent <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/IListDataSource.cs">CollectionChanged</a> from being raised during bulk
operations. Set back to <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a> to resume event notifications.</p>
</div>
@@ -321,7 +331,8 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Determines whether the specified item is marked.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -331,13 +342,15 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>item</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The zero-based index of the item.</p>
</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>
<dd><p><a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> if the item is marked; otherwise <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a>.</p>
</dd>
</dl>
@@ -346,6 +359,10 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<h4 class="section" id="EchoHub_Client_UI_ChannelListSource_IsMarked_System_Int32__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> calls this method to determine whether to render the item with a mark indicator when
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Selection.cs">ShowMarks</a> is <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a>.</p>
</div>
@@ -357,7 +374,8 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Renders the specified item to the <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -366,20 +384,27 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>listView</code> <span class="xref">ListView</span></dt>
<dd></dd>
<dt><code>listView</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a></dt>
<dd><p>The <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> to render to.</p>
</dd>
<dt><code>selected</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dd><p><a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> if the item is currently selected; otherwise <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a>.</p>
</dd>
<dt><code>item</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The zero-based index of the item to render.</p>
</dd>
<dt><code>col</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The column in <code class="paramref">listView</code> Viewport where rendering starts.</p>
</dd>
<dt><code>row</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The row in <code class="paramref">listView</code> Viewport where rendering starts.</p>
</dd>
<dt><code>width</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The width available for rendering.</p>
</dd>
<dt><code>viewportX</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The horizontal scroll offset.</p>
</dd>
</dl>
@@ -389,6 +414,15 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<h4 class="section" id="EchoHub_Client_UI_ChannelListSource_Render_Terminal_Gui_Views_ListView_System_Boolean_System_Int32_System_Int32_System_Int32_System_Int32_System_Int32__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> calls this method for each visible item during rendering. The color scheme will be
set based on selection state before this method is called.
</p>
<p>
Implementations must fill the entire <code class="paramref">width</code> to avoid rendering artifacts.
</p>
</div>
@@ -400,7 +434,8 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Sets the marked state of the specified item.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -410,9 +445,11 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>item</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The zero-based index of the item.</p>
</dd>
<dt><code>value</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dd><p><a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> to mark the item; <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a> to unmark it.</p>
</dd>
</dl>
@@ -422,6 +459,10 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<h4 class="section" id="EchoHub_Client_UI_ChannelListSource_SetMark_System_Int32_System_Boolean__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> calls this method when the user toggles marking (e.g., via the SPACE key) if
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Selection.cs">ShowMarks</a> is <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a>.</p>
</div>
@@ -433,7 +474,8 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Returns the underlying data source as an <span class="xref">System.Collections.IList</span>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -444,7 +486,8 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">IList</span></dt>
<dd></dd>
<dd><p>The data source as an <span class="xref">System.Collections.IList</span>.</p>
</dd>
</dl>
@@ -453,6 +496,11 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<h4 class="section" id="EchoHub_Client_UI_ChannelListSource_ToList_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> uses this method to access individual items for events like
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ValueChanged</a> and to enable keyboard search via
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.cs">KeystrokeNavigator</a>.</p>
</div>
@@ -502,7 +550,8 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Raised when items are added, removed, moved, or the entire collection is refreshed.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -522,6 +571,11 @@ Active channel gets a &gt; indicator, unread channels are bright with a count ba
<h4 class="section" id="EchoHub_Client_UI_ChannelListSource_CollectionChanged_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> subscribes to this event to update its display and content size when the data
changes. Implementations should raise this event whenever the underlying collection changes, unless
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/IListDataSource.cs">SuspendCollectionChangedEvent</a> is <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a>.</p>
</div>
+69 -9
View File
@@ -154,6 +154,36 @@ Class ChatColors <a class="header-action link-secondary" title="View source" hr
<h3 id="EchoHub_Client_UI_ChatColors_AudioAttr" data-uid="EchoHub.Client.UI.ChatColors.AudioAttr">
AudioAttr
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.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 readonly Attribute AudioAttr</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a></dt>
<dd></dd>
</dl>
<h3 id="EchoHub_Client_UI_ChatColors_EmbedBorderAttr" data-uid="EchoHub.Client.UI.ChatColors.EmbedBorderAttr">
EmbedBorderAttr
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
@@ -171,7 +201,7 @@ Class ChatColors <a class="header-action link-secondary" title="View source" hr
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><span class="xref">Attribute</span></dt>
<dt><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a></dt>
<dd></dd>
</dl>
@@ -201,7 +231,7 @@ Class ChatColors <a class="header-action link-secondary" title="View source" hr
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><span class="xref">Attribute</span></dt>
<dt><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a></dt>
<dd></dd>
</dl>
@@ -231,7 +261,7 @@ Class ChatColors <a class="header-action link-secondary" title="View source" hr
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><span class="xref">Attribute</span></dt>
<dt><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a></dt>
<dd></dd>
</dl>
@@ -261,7 +291,37 @@ Class ChatColors <a class="header-action link-secondary" title="View source" hr
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><span class="xref">Attribute</span></dt>
<dt><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a></dt>
<dd></dd>
</dl>
<h3 id="EchoHub_Client_UI_ChatColors_FileAttr" data-uid="EchoHub.Client.UI.ChatColors.FileAttr">
FileAttr
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.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 readonly Attribute FileAttr</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a></dt>
<dd></dd>
</dl>
@@ -291,7 +351,7 @@ Class ChatColors <a class="header-action link-secondary" title="View source" hr
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><span class="xref">Attribute</span></dt>
<dt><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a></dt>
<dd></dd>
</dl>
@@ -321,7 +381,7 @@ Class ChatColors <a class="header-action link-secondary" title="View source" hr
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><span class="xref">Attribute</span></dt>
<dt><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a></dt>
<dd></dd>
</dl>
@@ -351,7 +411,7 @@ Class ChatColors <a class="header-action link-secondary" title="View source" hr
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><span class="xref">Attribute</span></dt>
<dt><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a></dt>
<dd></dd>
</dl>
@@ -381,7 +441,7 @@ Class ChatColors <a class="header-action link-secondary" title="View source" hr
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><span class="xref">Attribute</span></dt>
<dt><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a></dt>
<dd></dd>
</dl>
@@ -417,7 +477,7 @@ Non-mention text uses the provided default color.</p>
<dl class="parameters">
<dt><code>text</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>defaultColor</code> <span class="xref">Attribute</span>?</dt>
<dt><code>defaultColor</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a>?</dt>
<dd></dd>
</dl>
+94 -1
View File
@@ -216,6 +216,68 @@ Class ChatLine <a class="header-action link-secondary" title="View source" href
</h2>
<a id="EchoHub_Client_UI_ChatLine_AttachmentFileName_" data-uid="EchoHub.Client.UI.ChatLine.AttachmentFileName*"></a>
<h3 id="EchoHub_Client_UI_ChatLine_AttachmentFileName" data-uid="EchoHub.Client.UI.ChatLine.AttachmentFileName">
AttachmentFileName
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.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? AttachmentFileName { 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_ChatLine_AttachmentUrl_" data-uid="EchoHub.Client.UI.ChatLine.AttachmentUrl*"></a>
<h3 id="EchoHub_Client_UI_ChatLine_AttachmentUrl" data-uid="EchoHub.Client.UI.ChatLine.AttachmentUrl">
AttachmentUrl
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.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? AttachmentUrl { 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_ChatLine_IsMention_" data-uid="EchoHub.Client.UI.ChatLine.IsMention*"></a>
<h3 id="EchoHub_Client_UI_ChatLine_IsMention" data-uid="EchoHub.Client.UI.ChatLine.IsMention">
@@ -340,6 +402,37 @@ Class ChatLine <a class="header-action link-secondary" title="View source" href
<a id="EchoHub_Client_UI_ChatLine_Type_" data-uid="EchoHub.Client.UI.ChatLine.Type*"></a>
<h3 id="EchoHub_Client_UI_ChatLine_Type" data-uid="EchoHub.Client.UI.ChatLine.Type">
Type
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.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 MessageType? Type { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/MessageType.cs">MessageType</a>?</dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
@@ -364,7 +457,7 @@ Format: {F:RRGGBB} (foreground), {B:RRGGBB} (background), {X} (reset).</p>
<dl class="parameters">
<dt><code>text</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>defaultAttr</code> <span class="xref">Attribute</span>?</dt>
<dt><code>defaultAttr</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a>?</dt>
<dd></dd>
</dl>
+112 -22
View File
@@ -119,7 +119,7 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><span class="xref">IListDataSource</span></div>
<div><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/IListDataSource.cs">IListDataSource</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a></div>
</dd>
</dl>
@@ -197,7 +197,8 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Gets the number of items in the data source.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -228,7 +229,8 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Gets the width in columns of the widest item in the data source.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -248,6 +250,9 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_ChatListSource_MaxItemLength_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> uses this value to set its horizontal content size for scrolling.</p>
</div>
@@ -259,7 +264,8 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Gets or sets whether the <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/IListDataSource.cs">CollectionChanged</a> event should be suppressed.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -279,6 +285,10 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_ChatListSource_SuspendCollectionChangedEvent_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>Set to <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> to prevent <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/IListDataSource.cs">CollectionChanged</a> from being raised during bulk
operations. Set back to <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a> to resume event notifications.</p>
</div>
@@ -401,6 +411,42 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<a id="EchoHub_Client_UI_ChatListSource_GetLine_" data-uid="EchoHub.Client.UI.ChatListSource.GetLine*"></a>
<h3 id="EchoHub_Client_UI_ChatListSource_GetLine_System_Int32_" data-uid="EchoHub.Client.UI.ChatListSource.GetLine(System.Int32)">
GetLine(int)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.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 ChatLine? GetLine(int index)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>index</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="EchoHub.Client.UI.ChatLine.html">ChatLine</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Client_UI_ChatListSource_InsertRange_" data-uid="EchoHub.Client.UI.ChatListSource.InsertRange*"></a>
<h3 id="EchoHub_Client_UI_ChatListSource_InsertRange_System_Int32_System_Collections_Generic_IEnumerable_EchoHub_Client_UI_ChatLine__" data-uid="EchoHub.Client.UI.ChatListSource.InsertRange(System.Int32,System.Collections.Generic.IEnumerable{EchoHub.Client.UI.ChatLine})">
@@ -441,7 +487,8 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Determines whether the specified item is marked.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -451,13 +498,15 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>item</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The zero-based index of the item.</p>
</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>
<dd><p><a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> if the item is marked; otherwise <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a>.</p>
</dd>
</dl>
@@ -466,6 +515,10 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_ChatListSource_IsMarked_System_Int32__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> calls this method to determine whether to render the item with a mark indicator when
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Selection.cs">ShowMarks</a> is <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a>.</p>
</div>
@@ -477,7 +530,8 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Renders the specified item to the <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -486,20 +540,27 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>listView</code> <span class="xref">ListView</span></dt>
<dd></dd>
<dt><code>listView</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a></dt>
<dd><p>The <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> to render to.</p>
</dd>
<dt><code>selected</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dd><p><a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> if the item is currently selected; otherwise <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a>.</p>
</dd>
<dt><code>item</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The zero-based index of the item to render.</p>
</dd>
<dt><code>col</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The column in <code class="paramref">listView</code> Viewport where rendering starts.</p>
</dd>
<dt><code>row</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The row in <code class="paramref">listView</code> Viewport where rendering starts.</p>
</dd>
<dt><code>width</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The width available for rendering.</p>
</dd>
<dt><code>viewportX</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The horizontal scroll offset.</p>
</dd>
</dl>
@@ -509,6 +570,15 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_ChatListSource_Render_Terminal_Gui_Views_ListView_System_Boolean_System_Int32_System_Int32_System_Int32_System_Int32_System_Int32__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> calls this method for each visible item during rendering. The color scheme will be
set based on selection state before this method is called.
</p>
<p>
Implementations must fill the entire <code class="paramref">width</code> to avoid rendering artifacts.
</p>
</div>
@@ -520,7 +590,8 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Sets the marked state of the specified item.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -530,9 +601,11 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>item</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The zero-based index of the item.</p>
</dd>
<dt><code>value</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dd><p><a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> to mark the item; <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a> to unmark it.</p>
</dd>
</dl>
@@ -542,6 +615,10 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_ChatListSource_SetMark_System_Int32_System_Boolean__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> calls this method when the user toggles marking (e.g., via the SPACE key) if
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Selection.cs">ShowMarks</a> is <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a>.</p>
</div>
@@ -553,7 +630,8 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Returns the underlying data source as an <span class="xref">System.Collections.IList</span>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -564,7 +642,8 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">IList</span></dt>
<dd></dd>
<dd><p>The data source as an <span class="xref">System.Collections.IList</span>.</p>
</dd>
</dl>
@@ -573,6 +652,11 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_ChatListSource_ToList_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> uses this method to access individual items for events like
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ValueChanged</a> and to enable keyboard search via
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.cs">KeystrokeNavigator</a>.</p>
</div>
@@ -587,7 +671,8 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Raised when items are added, removed, moved, or the entire collection is refreshed.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -607,6 +692,11 @@ Class ChatListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_ChatListSource_CollectionChanged_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> subscribes to this event to update its display and content size when the data
changes. Implementations should raise this event whenever the underlying collection changes, unless
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/IListDataSource.cs">SuspendCollectionChangedEvent</a> is <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a>.</p>
</div>
@@ -200,7 +200,7 @@ Class ChatSegment <a class="header-action link-secondary" title="View source" h
<dl class="parameters">
<dt><code>Text</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>Color</code> <span class="xref">Attribute</span>?</dt>
<dt><code>Color</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a>?</dt>
<dd></dd>
</dl>
@@ -239,7 +239,7 @@ Class ChatSegment <a class="header-action link-secondary" title="View source" h
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><span class="xref">Attribute</span>?</dt>
<dt><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a>?</dt>
<dd></dd>
</dl>
@@ -334,7 +334,7 @@ Class ChatSegment <a class="header-action link-secondary" title="View source" h
<dl class="parameters">
<dt><code>Text</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>Color</code> <span class="xref">Attribute</span>?</dt>
<dt><code>Color</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a>?</dt>
<dd></dd>
</dl>
@@ -175,7 +175,7 @@ Class ColorHelper <a class="header-action link-secondary" title="View source" h
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Attribute</span>?</dt>
<dt><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a>?</dt>
<dd></dd>
</dl>
@@ -199,7 +199,7 @@ Returns the result, or null if cancelled.</p>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>app</code> <span class="xref">IApplication</span></dt>
<dt><code>app</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/App/IApplication.cs">IApplication</a></dt>
<dd></dd>
<dt><code>savedServers</code> <span class="xref">List</span>&lt;<a class="xref" href="EchoHub.Client.Config.SavedServer.html">SavedServer</a>&gt;</dt>
<dd></dd>
@@ -183,8 +183,8 @@ Class ConnectDialogResult <a class="header-action link-secondary" title="View s
<a id="EchoHub_Client_UI_ConnectDialogResult__ctor_" data-uid="EchoHub.Client.UI.ConnectDialogResult.#ctor*"></a>
<h3 id="EchoHub_Client_UI_ConnectDialogResult__ctor_System_String_System_String_System_String_System_Boolean_" data-uid="EchoHub.Client.UI.ConnectDialogResult.#ctor(System.String,System.String,System.String,System.Boolean)">
ConnectDialogResult(string, string, string, bool)
<h3 id="EchoHub_Client_UI_ConnectDialogResult__ctor_System_String_System_String_System_String_System_Boolean_System_Boolean_System_String_" data-uid="EchoHub.Client.UI.ConnectDialogResult.#ctor(System.String,System.String,System.String,System.Boolean,System.Boolean,System.String)">
ConnectDialogResult(string, string, string, bool, bool, string?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ConnectDialog.cs"><i class="bi bi-code-slash"></i></a>
</h3>
@@ -193,7 +193,7 @@ Class ConnectDialogResult <a class="header-action link-secondary" title="View s
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ConnectDialogResult(string ServerUrl, string Username, string Password, bool IsRegister)</code></pre>
<pre><code class="lang-csharp hljs">public ConnectDialogResult(string ServerUrl, string Username, string Password, bool IsRegister, bool RememberMe, string? SavedRefreshToken)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -206,6 +206,10 @@ Class ConnectDialogResult <a class="header-action link-secondary" title="View s
<dd></dd>
<dt><code>IsRegister</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dt><code>RememberMe</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dt><code>SavedRefreshToken</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
@@ -316,6 +320,68 @@ Class ConnectDialogResult <a class="header-action link-secondary" title="View s
<a id="EchoHub_Client_UI_ConnectDialogResult_RememberMe_" data-uid="EchoHub.Client.UI.ConnectDialogResult.RememberMe*"></a>
<h3 id="EchoHub_Client_UI_ConnectDialogResult_RememberMe" data-uid="EchoHub.Client.UI.ConnectDialogResult.RememberMe">
RememberMe
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ConnectDialog.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 RememberMe { 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_Client_UI_ConnectDialogResult_SavedRefreshToken_" data-uid="EchoHub.Client.UI.ConnectDialogResult.SavedRefreshToken*"></a>
<h3 id="EchoHub_Client_UI_ConnectDialogResult_SavedRefreshToken" data-uid="EchoHub.Client.UI.ConnectDialogResult.SavedRefreshToken">
SavedRefreshToken
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ConnectDialog.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? SavedRefreshToken { 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_Client_UI_ConnectDialogResult_ServerUrl_" data-uid="EchoHub.Client.UI.ConnectDialogResult.ServerUrl*"></a>
<h3 id="EchoHub_Client_UI_ConnectDialogResult_ServerUrl" data-uid="EchoHub.Client.UI.ConnectDialogResult.ServerUrl">
@@ -384,8 +450,8 @@ Class ConnectDialogResult <a class="header-action link-secondary" title="View s
<a id="EchoHub_Client_UI_ConnectDialogResult_Deconstruct_" data-uid="EchoHub.Client.UI.ConnectDialogResult.Deconstruct*"></a>
<h3 id="EchoHub_Client_UI_ConnectDialogResult_Deconstruct_System_String__System_String__System_String__System_Boolean__" data-uid="EchoHub.Client.UI.ConnectDialogResult.Deconstruct(System.String@,System.String@,System.String@,System.Boolean@)">
Deconstruct(out string, out string, out string, out bool)
<h3 id="EchoHub_Client_UI_ConnectDialogResult_Deconstruct_System_String__System_String__System_String__System_Boolean__System_Boolean__System_String__" data-uid="EchoHub.Client.UI.ConnectDialogResult.Deconstruct(System.String@,System.String@,System.String@,System.Boolean@,System.Boolean@,System.String@)">
Deconstruct(out string, out string, out string, out bool, out bool, out string?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ConnectDialog.cs"><i class="bi bi-code-slash"></i></a>
</h3>
@@ -393,7 +459,7 @@ Class ConnectDialogResult <a class="header-action link-secondary" title="View s
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Deconstruct(out string ServerUrl, out string Username, out string Password, out bool IsRegister)</code></pre>
<pre><code class="lang-csharp hljs">public void Deconstruct(out string ServerUrl, out string Username, out string Password, out bool IsRegister, out bool RememberMe, out string? SavedRefreshToken)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -406,6 +472,10 @@ Class ConnectDialogResult <a class="header-action link-secondary" title="View s
<dd></dd>
<dt><code>IsRegister</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dt><code>RememberMe</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dt><code>SavedRefreshToken</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
@@ -195,7 +195,7 @@ Class CreateChannelDialog <a class="header-action link-secondary" title="View s
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>app</code> <span class="xref">IApplication</span></dt>
<dt><code>app</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/App/IApplication.cs">IApplication</a></dt>
<dd></dd>
</dl>
File diff suppressed because it is too large Load Diff
@@ -197,7 +197,7 @@ Class ProfileEditDialog <a class="header-action link-secondary" title="View sou
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>app</code> <span class="xref">IApplication</span></dt>
<dt><code>app</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/App/IApplication.cs">IApplication</a></dt>
<dd></dd>
<dt><code>currentDisplayName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
@@ -198,7 +198,7 @@ Shows Edit Profile / Set Status buttons when viewing own profile.</p>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>app</code> <span class="xref">IApplication</span></dt>
<dt><code>app</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/App/IApplication.cs">IApplication</a></dt>
<dd></dd>
<dt><code>profile</code> <a class="xref" href="../core/EchoHub.Core.DTOs.UserProfileDto.html">UserProfileDto</a></dt>
<dd></dd>
@@ -233,7 +233,7 @@ Returns the action the user selected.</p>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>app</code> <span class="xref">IApplication</span></dt>
<dt><code>app</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/App/IApplication.cs">IApplication</a></dt>
<dd></dd>
<dt><code>profile</code> <a class="xref" href="../core/EchoHub.Core.DTOs.UserProfileDto.html">UserProfileDto</a></dt>
<dd></dd>
@@ -197,7 +197,7 @@ Class StatusDialog <a class="header-action link-secondary" title="View source"
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>app</code> <span class="xref">IApplication</span></dt>
<dt><code>app</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/App/IApplication.cs">IApplication</a></dt>
<dd></dd>
<dt><code>currentStatus</code> <a class="xref" href="../core/EchoHub.Core.Models.UserStatus.html">UserStatus</a></dt>
<dd></dd>
@@ -0,0 +1,247 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class UpdateConfirmDialog | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class UpdateConfirmDialog | 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/new/master/apiSpec/new?filename=EchoHub_Client_UI_UpdateConfirmDialog.md&amp;value=---%0Auid%3A%20EchoHub.Client.UI.UpdateConfirmDialog%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.Client.UI.UpdateConfirmDialog">
<h1 id="EchoHub_Client_UI_UpdateConfirmDialog" data-uid="EchoHub.Client.UI.UpdateConfirmDialog" class="text-break">
Class UpdateConfirmDialog <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/UpdateConfirmDialog.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></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Client.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public sealed class UpdateConfirmDialog</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">UpdateConfirmDialog</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_Client_UI_UpdateConfirmDialog__ctor_" data-uid="EchoHub.Client.UI.UpdateConfirmDialog.#ctor*"></a>
<h3 id="EchoHub_Client_UI_UpdateConfirmDialog__ctor" data-uid="EchoHub.Client.UI.UpdateConfirmDialog.#ctor">
UpdateConfirmDialog()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/UpdateConfirmDialog.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 UpdateConfirmDialog()</code></pre>
</div>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Client_UI_UpdateConfirmDialog_Show_" data-uid="EchoHub.Client.UI.UpdateConfirmDialog.Show*"></a>
<h3 id="EchoHub_Client_UI_UpdateConfirmDialog_Show_Terminal_Gui_App_IApplication_System_String_System_String_" data-uid="EchoHub.Client.UI.UpdateConfirmDialog.Show(Terminal.Gui.App.IApplication,System.String,System.String)">
Show(IApplication, string, string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/UpdateConfirmDialog.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 Show(IApplication app, string currentVersion, string newVersion)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>app</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/App/IApplication.cs">IApplication</a></dt>
<dd></dd>
<dt><code>currentVersion</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></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>
<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.Client/UI/UpdateConfirmDialog.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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -0,0 +1,299 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class UpdateProgressDialog | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class UpdateProgressDialog | 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/new/master/apiSpec/new?filename=EchoHub_Client_UI_UpdateProgressDialog.md&amp;value=---%0Auid%3A%20EchoHub.Client.UI.UpdateProgressDialog%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.Client.UI.UpdateProgressDialog">
<h1 id="EchoHub_Client_UI_UpdateProgressDialog" data-uid="EchoHub.Client.UI.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/UpdateProgressDialog.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></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Client.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public sealed class UpdateProgressDialog</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">UpdateProgressDialog</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_Client_UI_UpdateProgressDialog__ctor_" data-uid="EchoHub.Client.UI.UpdateProgressDialog.#ctor*"></a>
<h3 id="EchoHub_Client_UI_UpdateProgressDialog__ctor_Terminal_Gui_App_IApplication_System_String_" data-uid="EchoHub.Client.UI.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/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> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/App/IApplication.cs">IApplication</a></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_UpdateProgressDialog_Close_" data-uid="EchoHub.Client.UI.UpdateProgressDialog.Close*"></a>
<h3 id="EchoHub_Client_UI_UpdateProgressDialog_Close" data-uid="EchoHub.Client.UI.UpdateProgressDialog.Close">
Close()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/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 Close()</code></pre>
</div>
<a id="EchoHub_Client_UI_UpdateProgressDialog_Show_" data-uid="EchoHub.Client.UI.UpdateProgressDialog.Show*"></a>
<h3 id="EchoHub_Client_UI_UpdateProgressDialog_Show" data-uid="EchoHub.Client.UI.UpdateProgressDialog.Show">
Show()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/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_UpdateProgressDialog_UpdateProgress_" data-uid="EchoHub.Client.UI.UpdateProgressDialog.UpdateProgress*"></a>
<h3 id="EchoHub_Client_UI_UpdateProgressDialog_UpdateProgress_System_Single_System_String_" data-uid="EchoHub.Client.UI.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/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>
</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>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/UpdateProgressDialog.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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -119,7 +119,7 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><span class="xref">IListDataSource</span></div>
<div><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/IListDataSource.cs">IListDataSource</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a></div>
</dd>
</dl>
@@ -197,7 +197,8 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Gets the number of items in the data source.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -228,7 +229,8 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Gets the width in columns of the widest item in the data source.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -248,6 +250,9 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_UserListSource_MaxItemLength_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> uses this value to set its horizontal content size for scrolling.</p>
</div>
@@ -259,7 +264,8 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Gets or sets whether the <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/IListDataSource.cs">CollectionChanged</a> event should be suppressed.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -279,6 +285,10 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_UserListSource_SuspendCollectionChangedEvent_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>Set to <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> to prevent <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/IListDataSource.cs">CollectionChanged</a> from being raised during bulk
operations. Set back to <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a> to resume event notifications.</p>
</div>
@@ -320,7 +330,8 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Determines whether the specified item is marked.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -330,13 +341,15 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>item</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The zero-based index of the item.</p>
</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>
<dd><p><a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> if the item is marked; otherwise <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a>.</p>
</dd>
</dl>
@@ -345,6 +358,10 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_UserListSource_IsMarked_System_Int32__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> calls this method to determine whether to render the item with a mark indicator when
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Selection.cs">ShowMarks</a> is <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a>.</p>
</div>
@@ -356,7 +373,8 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Renders the specified item to the <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -365,20 +383,27 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>listView</code> <span class="xref">ListView</span></dt>
<dd></dd>
<dt><code>listView</code> <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a></dt>
<dd><p>The <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> to render to.</p>
</dd>
<dt><code>selected</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dd><p><a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> if the item is currently selected; otherwise <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a>.</p>
</dd>
<dt><code>item</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The zero-based index of the item to render.</p>
</dd>
<dt><code>col</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The column in <code class="paramref">listView</code> Viewport where rendering starts.</p>
</dd>
<dt><code>row</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The row in <code class="paramref">listView</code> Viewport where rendering starts.</p>
</dd>
<dt><code>width</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The width available for rendering.</p>
</dd>
<dt><code>viewportX</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The horizontal scroll offset.</p>
</dd>
</dl>
@@ -388,6 +413,15 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_UserListSource_Render_Terminal_Gui_Views_ListView_System_Boolean_System_Int32_System_Int32_System_Int32_System_Int32_System_Int32__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> calls this method for each visible item during rendering. The color scheme will be
set based on selection state before this method is called.
</p>
<p>
Implementations must fill the entire <code class="paramref">width</code> to avoid rendering artifacts.
</p>
</div>
@@ -399,7 +433,8 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Sets the marked state of the specified item.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -409,9 +444,11 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>item</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dd><p>The zero-based index of the item.</p>
</dd>
<dt><code>value</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dd><p><a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> to mark the item; <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a> to unmark it.</p>
</dd>
</dl>
@@ -421,6 +458,10 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_UserListSource_SetMark_System_Int32_System_Boolean__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> calls this method when the user toggles marking (e.g., via the SPACE key) if
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Selection.cs">ShowMarks</a> is <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a>.</p>
</div>
@@ -432,7 +473,8 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Returns the underlying data source as an <span class="xref">System.Collections.IList</span>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -443,7 +485,8 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">IList</span></dt>
<dd></dd>
<dd><p>The data source as an <span class="xref">System.Collections.IList</span>.</p>
</dd>
</dl>
@@ -452,6 +495,11 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_UserListSource_ToList_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> uses this method to access individual items for events like
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ValueChanged</a> and to enable keyboard search via
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.cs">KeystrokeNavigator</a>.</p>
</div>
@@ -472,7 +520,7 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>users</code> <span class="xref">List</span>&lt;(<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.valuetuple-system.string,system.nullable-terminal.gui.drawing.attribute--.text">Text</a>, <span class="xref">Attribute</span>? <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.valuetuple-system.string,system.nullable-terminal.gui.drawing.attribute--.namecolor">NameColor</a>)&gt;</dt>
<dt><code>users</code> <span class="xref">List</span>&lt;(<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.valuetuple-system.string,system.nullable-terminal.gui.drawing.attribute--.text">Text</a>, <a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Drawing/Attribute.cs">Attribute</a>? <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.valuetuple-system.string,system.nullable-terminal.gui.drawing.attribute--.namecolor">NameColor</a>)&gt;</dt>
<dd></dd>
</dl>
@@ -497,7 +545,8 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Client/UI/ChatRenderer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 summary"><p>Raised when items are added, removed, moved, or the entire collection is refreshed.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
@@ -517,6 +566,11 @@ Class UserListSource <a class="header-action link-secondary" title="View source
<h4 class="section" id="EchoHub_Client_UI_UserListSource_CollectionChanged_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p><a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/ListView.Commands.cs">ListView</a> subscribes to this event to update its display and content size when the data
changes. Implementations should raise this event whenever the underlying collection changes, unless
<a class="xref" href="https://github.com/HueByte/Terminal.Gui/blob/master/Terminal.Gui/Views/ListView/IListDataSource.cs">SuspendCollectionChangedEvent</a> is <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a>.</p>
</div>
+12
View File
@@ -94,6 +94,10 @@
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Client.UI.AudioPlayerDialog.html">AudioPlayerDialog</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Client.UI.ChannelListSource.html">ChannelListSource</a></dt>
<dd><p>Custom list data source for colored channel list rendering.
@@ -182,6 +186,14 @@ Shows Edit Profile / Set Status buttons when viewing own profile.</p>
<dd><p>Result returned from the status dialog.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Client.UI.UpdateConfirmDialog.html">UpdateConfirmDialog</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Client.UI.UpdateProgressDialog.html">UpdateProgressDialog</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Client.UI.UserListSource.html">UserListSource</a></dt>
<dd><p>Custom list data source for the online users panel with per-user nickname colors.</p>
+1 -1
View File
@@ -91,7 +91,7 @@
<h2 id="topics">Topics</h2>
<ul>
<li>Data models and DTOs</li>
<li>Contract interfaces (IChatService, IChatBroadcaster, IEchoHubClient)</li>
<li>Contract interfaces (IChatService, IChannelService, IChatBroadcaster, IEchoHubClient)</li>
<li>Validation constants and shared rules</li>
</ul>
@@ -453,6 +453,36 @@ Class HubConstants <a class="header-action link-secondary" title="View source"
<h3 id="EchoHub_Core_Constants_HubConstants_MaxAudioFileSizeBytes" data-uid="EchoHub.Core.Constants.HubConstants.MaxAudioFileSizeBytes">
MaxAudioFileSizeBytes
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Constants/HubConstants.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 const int MaxAudioFileSizeBytes = 10485760</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_Core_Constants_HubConstants_MaxAvatarSizeBytes" data-uid="EchoHub.Core.Constants.HubConstants.MaxAvatarSizeBytes">
MaxAvatarSizeBytes
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Constants/HubConstants.cs"><i class="bi bi-code-slash"></i></a>
@@ -522,7 +552,37 @@ Class HubConstants <a class="header-action link-secondary" title="View source"
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const int MaxFileSizeBytes = 10485760</code></pre>
<pre><code class="lang-csharp hljs">public const int MaxFileSizeBytes = 104857600</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_Core_Constants_HubConstants_MaxImageSizeBytes" data-uid="EchoHub.Core.Constants.HubConstants.MaxImageSizeBytes">
MaxImageSizeBytes
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Constants/HubConstants.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 const int MaxImageSizeBytes = 10485760</code></pre>
</div>
@@ -89,7 +89,7 @@
<h1 id="EchoHub_Core_Contracts_ChannelListItem" data-uid="EchoHub.Core.Contracts.ChannelListItem" class="text-break">
Class ChannelListItem <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
Class ChannelListItem <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>
</h1>
<div class="facts text-secondary">
@@ -153,7 +153,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem__ctor_EchoHub_Core_Contracts_ChannelListItem_" data-uid="EchoHub.Core.Contracts.ChannelListItem.#ctor(EchoHub.Core.Contracts.ChannelListItem)">
ChannelListItem(ChannelListItem)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -184,7 +184,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem__ctor_System_String_System_String_System_Int32_" data-uid="EchoHub.Core.Contracts.ChannelListItem.#ctor(System.String,System.String,System.Int32)">
ChannelListItem(string, string?, int)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -223,7 +223,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem_EqualityContract" data-uid="EchoHub.Core.Contracts.ChannelListItem.EqualityContract">
EqualityContract
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -254,7 +254,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem_Name" data-uid="EchoHub.Core.Contracts.ChannelListItem.Name">
Name
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -285,7 +285,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem_OnlineCount" data-uid="EchoHub.Core.Contracts.ChannelListItem.OnlineCount">
OnlineCount
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -316,7 +316,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem_Topic" data-uid="EchoHub.Core.Contracts.ChannelListItem.Topic">
Topic
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -351,7 +351,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem_Deconstruct_System_String__System_String__System_Int32__" data-uid="EchoHub.Core.Contracts.ChannelListItem.Deconstruct(System.String@,System.String@,System.Int32@)">
Deconstruct(out string, out string?, out int)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -386,7 +386,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem_Equals_EchoHub_Core_Contracts_ChannelListItem_" data-uid="EchoHub.Core.Contracts.ChannelListItem.Equals(EchoHub.Core.Contracts.ChannelListItem)">
Equals(ChannelListItem?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -422,7 +422,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem_Equals_System_Object_" data-uid="EchoHub.Core.Contracts.ChannelListItem.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/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -458,7 +458,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem_GetHashCode" data-uid="EchoHub.Core.Contracts.ChannelListItem.GetHashCode">
GetHashCode()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -489,7 +489,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem_PrintMembers_System_Text_StringBuilder_" data-uid="EchoHub.Core.Contracts.ChannelListItem.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/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -525,7 +525,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem_ToString" data-uid="EchoHub.Core.Contracts.ChannelListItem.ToString">
ToString()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -560,7 +560,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem_op_Equality_EchoHub_Core_Contracts_ChannelListItem_EchoHub_Core_Contracts_ChannelListItem_" data-uid="EchoHub.Core.Contracts.ChannelListItem.op_Equality(EchoHub.Core.Contracts.ChannelListItem,EchoHub.Core.Contracts.ChannelListItem)">
operator ==(ChannelListItem?, ChannelListItem?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -598,7 +598,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
<h3 id="EchoHub_Core_Contracts_ChannelListItem_op_Inequality_EchoHub_Core_Contracts_ChannelListItem_EchoHub_Core_Contracts_ChannelListItem_" data-uid="EchoHub.Core.Contracts.ChannelListItem.op_Inequality(EchoHub.Core.Contracts.ChannelListItem,EchoHub.Core.Contracts.ChannelListItem)">
operator !=(ChannelListItem?, ChannelListItem?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs"><i class="bi bi-code-slash"></i></a>
<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>
@@ -636,7 +636,7 @@ Class ChannelListItem <a class="header-action link-secondary" title="View sourc
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs" class="edit-link">Edit this page</a>
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChannelService.cs" class="edit-link">Edit this page</a>
</div>
@@ -0,0 +1,449 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Interface IChannelService | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Interface IChannelService | 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/new/master/apiSpec/new?filename=EchoHub_Core_Contracts_IChannelService.md&amp;value=---%0Auid%3A%20EchoHub.Core.Contracts.IChannelService%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.Contracts.IChannelService">
<h1 id="EchoHub_Core_Contracts_IChannelService" data-uid="EchoHub.Core.Contracts.IChannelService" class="text-break">
Interface IChannelService <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>
</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.Contracts.html">Contracts</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Core.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface IChannelService</code></pre>
</div>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Core_Contracts_IChannelService_CreateChannelAsync_" data-uid="EchoHub.Core.Contracts.IChannelService.CreateChannelAsync*"></a>
<h3 id="EchoHub_Core_Contracts_IChannelService_CreateChannelAsync_System_Guid_System_String_System_String_System_Boolean_" data-uid="EchoHub.Core.Contracts.IChannelService.CreateChannelAsync(System.Guid,System.String,System.String,System.Boolean)">
CreateChannelAsync(Guid, string, string?, bool)
<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&lt;ChannelOperationResult&gt; CreateChannelAsync(Guid creatorUserId, string name, string? topic, bool isPublic)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>creatorUserId</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>isPublic</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span>&lt;<a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Contracts_IChannelService_DeleteChannelAsync_" data-uid="EchoHub.Core.Contracts.IChannelService.DeleteChannelAsync*"></a>
<h3 id="EchoHub_Core_Contracts_IChannelService_DeleteChannelAsync_System_Guid_System_String_" data-uid="EchoHub.Core.Contracts.IChannelService.DeleteChannelAsync(System.Guid,System.String)">
DeleteChannelAsync(Guid, 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&lt;ChannelOperationResult&gt; DeleteChannelAsync(Guid callerUserId, string channelName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>callerUserId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
<dd></dd>
<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>&lt;<a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Contracts_IChannelService_EnsureChannelMembershipAsync_" data-uid="EchoHub.Core.Contracts.IChannelService.EnsureChannelMembershipAsync*"></a>
<h3 id="EchoHub_Core_Contracts_IChannelService_EnsureChannelMembershipAsync_System_Guid_System_String_" data-uid="EchoHub.Core.Contracts.IChannelService.EnsureChannelMembershipAsync(System.Guid,System.String)">
EnsureChannelMembershipAsync(Guid, 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&lt;(bool Success, string? Error)&gt; EnsureChannelMembershipAsync(Guid userId, string channelName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>userId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
<dd></dd>
<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>&lt;(<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.valuetuple-system.boolean,system.string-.success">Success</a>, <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.valuetuple-system.boolean,system.string-.error">Error</a>)&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Contracts_IChannelService_GetChannelByNameAsync_" data-uid="EchoHub.Core.Contracts.IChannelService.GetChannelByNameAsync*"></a>
<h3 id="EchoHub_Core_Contracts_IChannelService_GetChannelByNameAsync_System_String_" data-uid="EchoHub.Core.Contracts.IChannelService.GetChannelByNameAsync(System.String)">
GetChannelByNameAsync(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&lt;ChannelDto?&gt; GetChannelByNameAsync(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>&lt;<a class="xref" href="EchoHub.Core.DTOs.ChannelDto.html">ChannelDto</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Contracts_IChannelService_GetChannelListAsync_" data-uid="EchoHub.Core.Contracts.IChannelService.GetChannelListAsync*"></a>
<h3 id="EchoHub_Core_Contracts_IChannelService_GetChannelListAsync" data-uid="EchoHub.Core.Contracts.IChannelService.GetChannelListAsync">
GetChannelListAsync()
<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&lt;List&lt;ChannelListItem&gt;&gt; GetChannelListAsync()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span>&lt;<span class="xref">List</span>&lt;<a class="xref" href="EchoHub.Core.Contracts.ChannelListItem.html">ChannelListItem</a>&gt;&gt;</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)">
GetChannelTopicAsync(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&lt;(string? Topic, bool Exists)&gt; GetChannelTopicAsync(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>&lt;(<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.valuetuple-system.string,system.boolean-.topic">Topic</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.valuetuple-system.string,system.boolean-.exists">Exists</a>)&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Contracts_IChannelService_GetChannelsAsync_" data-uid="EchoHub.Core.Contracts.IChannelService.GetChannelsAsync*"></a>
<h3 id="EchoHub_Core_Contracts_IChannelService_GetChannelsAsync_System_Guid_System_Int32_System_Int32_" data-uid="EchoHub.Core.Contracts.IChannelService.GetChannelsAsync(System.Guid,System.Int32,System.Int32)">
GetChannelsAsync(Guid, int, int)
<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&lt;PaginatedResponse&lt;ChannelDto&gt;&gt; GetChannelsAsync(Guid userId, int offset, int limit)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>userId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
<dd></dd>
<dt><code>offset</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dt><code>limit</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><span class="xref">Task</span>&lt;<a class="xref" href="EchoHub.Core.DTOs.PaginatedResponse-1.html">PaginatedResponse</a>&lt;<a class="xref" href="EchoHub.Core.DTOs.ChannelDto.html">ChannelDto</a>&gt;&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Contracts_IChannelService_UpdateTopicAsync_" data-uid="EchoHub.Core.Contracts.IChannelService.UpdateTopicAsync*"></a>
<h3 id="EchoHub_Core_Contracts_IChannelService_UpdateTopicAsync_System_Guid_System_String_System_String_" data-uid="EchoHub.Core.Contracts.IChannelService.UpdateTopicAsync(System.Guid,System.String,System.String)">
UpdateTopicAsync(Guid, string, 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&lt;ChannelOperationResult&gt; UpdateTopicAsync(Guid callerUserId, string channelName, string? topic)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>callerUserId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
<dd></dd>
<dt><code>channelName</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>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span>&lt;<a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</a>&gt;</dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChannelService.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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -272,73 +272,6 @@ Interface IChatService <a class="header-action link-secondary" title="View sour
<a id="EchoHub_Core_Contracts_IChatService_GetChannelListAsync_" data-uid="EchoHub.Core.Contracts.IChatService.GetChannelListAsync*"></a>
<h3 id="EchoHub_Core_Contracts_IChatService_GetChannelListAsync" data-uid="EchoHub.Core.Contracts.IChatService.GetChannelListAsync">
GetChannelListAsync()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.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&lt;List&lt;ChannelListItem&gt;&gt; GetChannelListAsync()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span>&lt;<span class="xref">List</span>&lt;<a class="xref" href="EchoHub.Core.Contracts.ChannelListItem.html">ChannelListItem</a>&gt;&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Contracts_IChatService_GetChannelTopicAsync_" data-uid="EchoHub.Core.Contracts.IChatService.GetChannelTopicAsync*"></a>
<h3 id="EchoHub_Core_Contracts_IChatService_GetChannelTopicAsync_System_String_" data-uid="EchoHub.Core.Contracts.IChatService.GetChannelTopicAsync(System.String)">
GetChannelTopicAsync(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.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&lt;(string? Topic, bool Exists)&gt; GetChannelTopicAsync(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>&lt;(<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.valuetuple-system.string,system.boolean-.topic">Topic</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.valuetuple-system.string,system.boolean-.exists">Exists</a>)&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Contracts_IChatService_GetChannelsForUserAsync_" data-uid="EchoHub.Core.Contracts.IChatService.GetChannelsForUserAsync*"></a>
<h3 id="EchoHub_Core_Contracts_IChatService_GetChannelsForUserAsync_System_String_" data-uid="EchoHub.Core.Contracts.IChatService.GetChannelsForUserAsync(System.String)">
+4
View File
@@ -101,6 +101,10 @@ Classes
<h3 id="interfaces">
Interfaces
</h3>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Core.Contracts.IChannelService.html">IChannelService</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Core.Contracts.IChatBroadcaster.html">IChatBroadcaster</a></dt>
<dd></dd>
@@ -0,0 +1,700 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ApiResponse&lt;T&gt; | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ApiResponse&lt;T&gt; | 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/new/master/apiSpec/new?filename=EchoHub_Core_DTOs_ApiResponse_1.md&amp;value=---%0Auid%3A%20EchoHub.Core.DTOs.ApiResponse%601%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.ApiResponse`1">
<h1 id="EchoHub_Core_DTOs_ApiResponse_1" data-uid="EchoHub.Core.DTOs.ApiResponse`1" class="text-break">
Class ApiResponse&lt;T&gt; <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public record ApiResponse&lt;T&gt; : IEquatable&lt;ApiResponse&lt;T&gt;&gt;</code></pre>
</div>
<h4 class="section">Type Parameters</h4>
<dl class="parameters">
<dt><code>T</code></dt>
<dd></dd>
</dl>
<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">ApiResponse&lt;T&gt;</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>&lt;<a class="xref" href="EchoHub.Core.DTOs.ApiResponse-1.html">ApiResponse</a>&lt;T&gt;&gt;</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_ApiResponse_1__ctor_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.#ctor*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1__ctor_EchoHub_Core_DTOs_ApiResponse__0__" data-uid="EchoHub.Core.DTOs.ApiResponse`1.#ctor(EchoHub.Core.DTOs.ApiResponse{`0})">
ApiResponse(ApiResponse&lt;T&gt;)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ApiResponse(ApiResponse&lt;T&gt; original)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>original</code> <a class="xref" href="EchoHub.Core.DTOs.ApiResponse-1.html">ApiResponse</a>&lt;T&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ApiResponse_1__ctor_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.#ctor*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1__ctor_System_Boolean_System_String_System_Collections_Generic_List_System_String___0_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.#ctor(System.Boolean,System.String,System.Collections.Generic.List{System.String},`0)">
ApiResponse(bool, string?, List&lt;string&gt;?, T?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ApiResponse(bool Success, string? Message = null, List&lt;string&gt;? Errors = null, T? Data = default)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>Success</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dt><code>Message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>Errors</code> <span class="xref">List</span>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
<dt><code>Data</code> <span class="xref">T</span></dt>
<dd></dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="EchoHub_Core_DTOs_ApiResponse_1_Data_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Data*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_Data" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Data">
Data
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 T? Data { get; init; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><span class="xref">T</span></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ApiResponse_1_EqualityContract_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.EqualityContract*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_EqualityContract" data-uid="EchoHub.Core.DTOs.ApiResponse`1.EqualityContract">
EqualityContract
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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_ApiResponse_1_Errors_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Errors*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_Errors" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Errors">
Errors
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 List&lt;string&gt;? Errors { get; init; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><span class="xref">List</span>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ApiResponse_1_Message_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Message*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_Message" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Message">
Message
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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? Message { 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_ApiResponse_1_Success_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Success*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_Success" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Success">
Success
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 Success { 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>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Core_DTOs_ApiResponse_1_Deconstruct_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Deconstruct*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_Deconstruct_System_Boolean__System_String__System_Collections_Generic_List_System_String____0__" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Deconstruct(System.Boolean@,System.String@,System.Collections.Generic.List{System.String}@,`0@)">
Deconstruct(out bool, out string?, out List&lt;string&gt;?, out T?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 bool Success, out string? Message, out List&lt;string&gt;? Errors, out T? Data)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>Success</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dt><code>Message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>Errors</code> <span class="xref">List</span>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
<dt><code>Data</code> <span class="xref">T</span></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ApiResponse_1_Equals_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Equals*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_Equals_EchoHub_Core_DTOs_ApiResponse__0__" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Equals(EchoHub.Core.DTOs.ApiResponse{`0})">
Equals(ApiResponse&lt;T&gt;?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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(ApiResponse&lt;T&gt;? other)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>other</code> <a class="xref" href="EchoHub.Core.DTOs.ApiResponse-1.html">ApiResponse</a>&lt;T&gt;</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_ApiResponse_1_Equals_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.Equals*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_Equals_System_Object_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.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/CommonDtos.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_ApiResponse_1_GetHashCode_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.GetHashCode*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_GetHashCode" data-uid="EchoHub.Core.DTOs.ApiResponse`1.GetHashCode">
GetHashCode()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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_ApiResponse_1_PrintMembers_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.PrintMembers*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_PrintMembers_System_Text_StringBuilder_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.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/CommonDtos.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_ApiResponse_1_ToString_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.ToString*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_ToString" data-uid="EchoHub.Core.DTOs.ApiResponse`1.ToString">
ToString()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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_ApiResponse_1_op_Equality_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.op_Equality*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_op_Equality_EchoHub_Core_DTOs_ApiResponse__0__EchoHub_Core_DTOs_ApiResponse__0__" data-uid="EchoHub.Core.DTOs.ApiResponse`1.op_Equality(EchoHub.Core.DTOs.ApiResponse{`0},EchoHub.Core.DTOs.ApiResponse{`0})">
operator ==(ApiResponse&lt;T&gt;?, ApiResponse&lt;T&gt;?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ==(ApiResponse&lt;T&gt;? left, ApiResponse&lt;T&gt;? right)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>left</code> <a class="xref" href="EchoHub.Core.DTOs.ApiResponse-1.html">ApiResponse</a>&lt;T&gt;</dt>
<dd></dd>
<dt><code>right</code> <a class="xref" href="EchoHub.Core.DTOs.ApiResponse-1.html">ApiResponse</a>&lt;T&gt;</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_ApiResponse_1_op_Inequality_" data-uid="EchoHub.Core.DTOs.ApiResponse`1.op_Inequality*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_1_op_Inequality_EchoHub_Core_DTOs_ApiResponse__0__EchoHub_Core_DTOs_ApiResponse__0__" data-uid="EchoHub.Core.DTOs.ApiResponse`1.op_Inequality(EchoHub.Core.DTOs.ApiResponse{`0},EchoHub.Core.DTOs.ApiResponse{`0})">
operator !=(ApiResponse&lt;T&gt;?, ApiResponse&lt;T&gt;?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 !=(ApiResponse&lt;T&gt;? left, ApiResponse&lt;T&gt;? right)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>left</code> <a class="xref" href="EchoHub.Core.DTOs.ApiResponse-1.html">ApiResponse</a>&lt;T&gt;</dt>
<dd></dd>
<dt><code>right</code> <a class="xref" href="EchoHub.Core.DTOs.ApiResponse-1.html">ApiResponse</a>&lt;T&gt;</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/CommonDtos.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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
+660
View File
@@ -0,0 +1,660 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ApiResponse | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ApiResponse | 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/new/master/apiSpec/new?filename=EchoHub_Core_DTOs_ApiResponse.md&amp;value=---%0Auid%3A%20EchoHub.Core.DTOs.ApiResponse%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.ApiResponse">
<h1 id="EchoHub_Core_DTOs_ApiResponse" data-uid="EchoHub.Core.DTOs.ApiResponse" class="text-break">
Class ApiResponse <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public record ApiResponse : IEquatable&lt;ApiResponse&gt;</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">ApiResponse</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>&lt;<a class="xref" href="EchoHub.Core.DTOs.ApiResponse.html">ApiResponse</a>&gt;</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_ApiResponse__ctor_" data-uid="EchoHub.Core.DTOs.ApiResponse.#ctor*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse__ctor_EchoHub_Core_DTOs_ApiResponse_" data-uid="EchoHub.Core.DTOs.ApiResponse.#ctor(EchoHub.Core.DTOs.ApiResponse)">
ApiResponse(ApiResponse)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ApiResponse(ApiResponse original)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>original</code> <a class="xref" href="EchoHub.Core.DTOs.ApiResponse.html">ApiResponse</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ApiResponse__ctor_" data-uid="EchoHub.Core.DTOs.ApiResponse.#ctor*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse__ctor_System_Boolean_System_String_System_Collections_Generic_List_System_String__" data-uid="EchoHub.Core.DTOs.ApiResponse.#ctor(System.Boolean,System.String,System.Collections.Generic.List{System.String})">
ApiResponse(bool, string?, List&lt;string&gt;?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ApiResponse(bool Success, string? Message = null, List&lt;string&gt;? Errors = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>Success</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dt><code>Message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>Errors</code> <span class="xref">List</span>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="EchoHub_Core_DTOs_ApiResponse_EqualityContract_" data-uid="EchoHub.Core.DTOs.ApiResponse.EqualityContract*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_EqualityContract" data-uid="EchoHub.Core.DTOs.ApiResponse.EqualityContract">
EqualityContract
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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_ApiResponse_Errors_" data-uid="EchoHub.Core.DTOs.ApiResponse.Errors*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_Errors" data-uid="EchoHub.Core.DTOs.ApiResponse.Errors">
Errors
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 List&lt;string&gt;? Errors { get; init; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><span class="xref">List</span>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ApiResponse_Message_" data-uid="EchoHub.Core.DTOs.ApiResponse.Message*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_Message" data-uid="EchoHub.Core.DTOs.ApiResponse.Message">
Message
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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? Message { 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_ApiResponse_Success_" data-uid="EchoHub.Core.DTOs.ApiResponse.Success*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_Success" data-uid="EchoHub.Core.DTOs.ApiResponse.Success">
Success
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 Success { 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>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Core_DTOs_ApiResponse_Deconstruct_" data-uid="EchoHub.Core.DTOs.ApiResponse.Deconstruct*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_Deconstruct_System_Boolean__System_String__System_Collections_Generic_List_System_String___" data-uid="EchoHub.Core.DTOs.ApiResponse.Deconstruct(System.Boolean@,System.String@,System.Collections.Generic.List{System.String}@)">
Deconstruct(out bool, out string?, out List&lt;string&gt;?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 bool Success, out string? Message, out List&lt;string&gt;? Errors)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>Success</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dt><code>Message</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>Errors</code> <span class="xref">List</span>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ApiResponse_Equals_" data-uid="EchoHub.Core.DTOs.ApiResponse.Equals*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_Equals_EchoHub_Core_DTOs_ApiResponse_" data-uid="EchoHub.Core.DTOs.ApiResponse.Equals(EchoHub.Core.DTOs.ApiResponse)">
Equals(ApiResponse?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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(ApiResponse? other)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>other</code> <a class="xref" href="EchoHub.Core.DTOs.ApiResponse.html">ApiResponse</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_ApiResponse_Equals_" data-uid="EchoHub.Core.DTOs.ApiResponse.Equals*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_Equals_System_Object_" data-uid="EchoHub.Core.DTOs.ApiResponse.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/CommonDtos.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_ApiResponse_GetHashCode_" data-uid="EchoHub.Core.DTOs.ApiResponse.GetHashCode*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_GetHashCode" data-uid="EchoHub.Core.DTOs.ApiResponse.GetHashCode">
GetHashCode()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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_ApiResponse_PrintMembers_" data-uid="EchoHub.Core.DTOs.ApiResponse.PrintMembers*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_PrintMembers_System_Text_StringBuilder_" data-uid="EchoHub.Core.DTOs.ApiResponse.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/CommonDtos.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_ApiResponse_ToString_" data-uid="EchoHub.Core.DTOs.ApiResponse.ToString*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_ToString" data-uid="EchoHub.Core.DTOs.ApiResponse.ToString">
ToString()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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_ApiResponse_op_Equality_" data-uid="EchoHub.Core.DTOs.ApiResponse.op_Equality*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_op_Equality_EchoHub_Core_DTOs_ApiResponse_EchoHub_Core_DTOs_ApiResponse_" data-uid="EchoHub.Core.DTOs.ApiResponse.op_Equality(EchoHub.Core.DTOs.ApiResponse,EchoHub.Core.DTOs.ApiResponse)">
operator ==(ApiResponse?, ApiResponse?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ==(ApiResponse? left, ApiResponse? right)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>left</code> <a class="xref" href="EchoHub.Core.DTOs.ApiResponse.html">ApiResponse</a></dt>
<dd></dd>
<dt><code>right</code> <a class="xref" href="EchoHub.Core.DTOs.ApiResponse.html">ApiResponse</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_ApiResponse_op_Inequality_" data-uid="EchoHub.Core.DTOs.ApiResponse.op_Inequality*"></a>
<h3 id="EchoHub_Core_DTOs_ApiResponse_op_Inequality_EchoHub_Core_DTOs_ApiResponse_EchoHub_Core_DTOs_ApiResponse_" data-uid="EchoHub.Core.DTOs.ApiResponse.op_Inequality(EchoHub.Core.DTOs.ApiResponse,EchoHub.Core.DTOs.ApiResponse)">
operator !=(ApiResponse?, ApiResponse?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 !=(ApiResponse? left, ApiResponse? right)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>left</code> <a class="xref" href="EchoHub.Core.DTOs.ApiResponse.html">ApiResponse</a></dt>
<dd></dd>
<dt><code>right</code> <a class="xref" href="EchoHub.Core.DTOs.ApiResponse.html">ApiResponse</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/CommonDtos.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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -0,0 +1,162 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Enum ChannelError | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Enum ChannelError | 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/new/master/apiSpec/new?filename=EchoHub_Core_DTOs_ChannelError.md&amp;value=---%0Auid%3A%20EchoHub.Core.DTOs.ChannelError%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.ChannelError">
<h1 id="EchoHub_Core_DTOs_ChannelError" data-uid="EchoHub.Core.DTOs.ChannelError" class="text-break">
Enum ChannelError <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public enum ChannelError</code></pre>
</div>
<h2 id="fields">Fields
</h2>
<dl class="parameters">
<dt id="EchoHub_Core_DTOs_ChannelError_AlreadyExists"><code>AlreadyExists = 1</code></dt>
<dd></dd>
<dt id="EchoHub_Core_DTOs_ChannelError_Forbidden"><code>Forbidden = 3</code></dt>
<dd></dd>
<dt id="EchoHub_Core_DTOs_ChannelError_NotFound"><code>NotFound = 2</code></dt>
<dd></dd>
<dt id="EchoHub_Core_DTOs_ChannelError_Protected"><code>Protected = 4</code></dt>
<dd></dd>
<dt id="EchoHub_Core_DTOs_ChannelError_ValidationFailed"><code>ValidationFailed = 0</code></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -0,0 +1,765 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ChannelOperationResult | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ChannelOperationResult | 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/new/master/apiSpec/new?filename=EchoHub_Core_DTOs_ChannelOperationResult.md&amp;value=---%0Auid%3A%20EchoHub.Core.DTOs.ChannelOperationResult%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.ChannelOperationResult">
<h1 id="EchoHub_Core_DTOs_ChannelOperationResult" data-uid="EchoHub.Core.DTOs.ChannelOperationResult" class="text-break">
Class ChannelOperationResult <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public record ChannelOperationResult : IEquatable&lt;ChannelOperationResult&gt;</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">ChannelOperationResult</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>&lt;<a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</a>&gt;</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_ChannelOperationResult__ctor_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.#ctor*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult__ctor_EchoHub_Core_DTOs_ChannelDto_System_Nullable_EchoHub_Core_DTOs_ChannelError__System_String_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.#ctor(EchoHub.Core.DTOs.ChannelDto,System.Nullable{EchoHub.Core.DTOs.ChannelError},System.String)">
ChannelOperationResult(ChannelDto?, ChannelError?, string?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ChannelOperationResult(ChannelDto? Channel, ChannelError? Error, string? ErrorMessage)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>Channel</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelDto.html">ChannelDto</a></dt>
<dd></dd>
<dt><code>Error</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelError.html">ChannelError</a>?</dt>
<dd></dd>
<dt><code>ErrorMessage</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ChannelOperationResult__ctor_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.#ctor*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult__ctor_EchoHub_Core_DTOs_ChannelOperationResult_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.#ctor(EchoHub.Core.DTOs.ChannelOperationResult)">
ChannelOperationResult(ChannelOperationResult)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ChannelOperationResult(ChannelOperationResult original)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>original</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="EchoHub_Core_DTOs_ChannelOperationResult_Channel_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Channel*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_Channel" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Channel">
Channel
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ChannelDto? Channel { get; init; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="EchoHub.Core.DTOs.ChannelDto.html">ChannelDto</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ChannelOperationResult_EqualityContract_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.EqualityContract*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_EqualityContract" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.EqualityContract">
EqualityContract
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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_ChannelOperationResult_Error_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Error*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_Error" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Error">
Error
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ChannelError? Error { get; init; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="EchoHub.Core.DTOs.ChannelError.html">ChannelError</a>?</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ChannelOperationResult_ErrorMessage_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.ErrorMessage*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_ErrorMessage" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.ErrorMessage">
ErrorMessage
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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? ErrorMessage { 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_ChannelOperationResult_IsSuccess_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.IsSuccess*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_IsSuccess" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.IsSuccess">
IsSuccess
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 IsSuccess { 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.boolean">bool</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Core_DTOs_ChannelOperationResult_Deconstruct_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Deconstruct*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_Deconstruct_EchoHub_Core_DTOs_ChannelDto__System_Nullable_EchoHub_Core_DTOs_ChannelError___System_String__" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Deconstruct(EchoHub.Core.DTOs.ChannelDto@,System.Nullable{EchoHub.Core.DTOs.ChannelError}@,System.String@)">
Deconstruct(out ChannelDto?, out ChannelError?, out string?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ChannelDto? Channel, out ChannelError? Error, out string? ErrorMessage)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>Channel</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelDto.html">ChannelDto</a></dt>
<dd></dd>
<dt><code>Error</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelError.html">ChannelError</a>?</dt>
<dd></dd>
<dt><code>ErrorMessage</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ChannelOperationResult_Equals_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Equals*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_Equals_EchoHub_Core_DTOs_ChannelOperationResult_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Equals(EchoHub.Core.DTOs.ChannelOperationResult)">
Equals(ChannelOperationResult?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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(ChannelOperationResult? other)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>other</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</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_ChannelOperationResult_Equals_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Equals*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_Equals_System_Object_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.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/CommonDtos.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_ChannelOperationResult_Fail_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Fail*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_Fail_EchoHub_Core_DTOs_ChannelError_System_String_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Fail(EchoHub.Core.DTOs.ChannelError,System.String)">
Fail(ChannelError, string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ChannelOperationResult Fail(ChannelError error, string message)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>error</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelError.html">ChannelError</a></dt>
<dd></dd>
<dt><code>message</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><a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ChannelOperationResult_GetHashCode_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.GetHashCode*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_GetHashCode" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.GetHashCode">
GetHashCode()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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_ChannelOperationResult_PrintMembers_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.PrintMembers*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_PrintMembers_System_Text_StringBuilder_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.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/CommonDtos.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_ChannelOperationResult_Success_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Success*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_Success_EchoHub_Core_DTOs_ChannelDto_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.Success(EchoHub.Core.DTOs.ChannelDto)">
Success(ChannelDto)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ChannelOperationResult Success(ChannelDto channel)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>channel</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelDto.html">ChannelDto</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_DTOs_ChannelOperationResult_ToString_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.ToString*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_ToString" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.ToString">
ToString()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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_ChannelOperationResult_op_Equality_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.op_Equality*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_op_Equality_EchoHub_Core_DTOs_ChannelOperationResult_EchoHub_Core_DTOs_ChannelOperationResult_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.op_Equality(EchoHub.Core.DTOs.ChannelOperationResult,EchoHub.Core.DTOs.ChannelOperationResult)">
operator ==(ChannelOperationResult?, ChannelOperationResult?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 ==(ChannelOperationResult? left, ChannelOperationResult? right)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>left</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</a></dt>
<dd></dd>
<dt><code>right</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</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_ChannelOperationResult_op_Inequality_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.op_Inequality*"></a>
<h3 id="EchoHub_Core_DTOs_ChannelOperationResult_op_Inequality_EchoHub_Core_DTOs_ChannelOperationResult_EchoHub_Core_DTOs_ChannelOperationResult_" data-uid="EchoHub.Core.DTOs.ChannelOperationResult.op_Inequality(EchoHub.Core.DTOs.ChannelOperationResult,EchoHub.Core.DTOs.ChannelOperationResult)">
operator !=(ChannelOperationResult?, ChannelOperationResult?)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.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 !=(ChannelOperationResult? left, ChannelOperationResult? right)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>left</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</a></dt>
<dd></dd>
<dt><code>right</code> <a class="xref" href="EchoHub.Core.DTOs.ChannelOperationResult.html">ChannelOperationResult</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/CommonDtos.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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
+41 -6
View File
@@ -182,8 +182,8 @@ Class MessageDto <a class="header-action link-secondary" title="View source" hr
<a id="EchoHub_Core_DTOs_MessageDto__ctor_" data-uid="EchoHub.Core.DTOs.MessageDto.#ctor*"></a>
<h3 id="EchoHub_Core_DTOs_MessageDto__ctor_System_Guid_System_String_System_String_System_String_System_String_EchoHub_Core_Models_MessageType_System_String_System_String_System_DateTimeOffset_System_Collections_Generic_List_EchoHub_Core_DTOs_EmbedDto__" data-uid="EchoHub.Core.DTOs.MessageDto.#ctor(System.Guid,System.String,System.String,System.String,System.String,EchoHub.Core.Models.MessageType,System.String,System.String,System.DateTimeOffset,System.Collections.Generic.List{EchoHub.Core.DTOs.EmbedDto})">
MessageDto(Guid, string, string, string?, string, MessageType, string?, string?, DateTimeOffset, List&lt;EmbedDto&gt;?)
<h3 id="EchoHub_Core_DTOs_MessageDto__ctor_System_Guid_System_String_System_String_System_String_System_String_EchoHub_Core_Models_MessageType_System_String_System_String_System_DateTimeOffset_System_Nullable_System_Int64__System_Collections_Generic_List_EchoHub_Core_DTOs_EmbedDto__" data-uid="EchoHub.Core.DTOs.MessageDto.#ctor(System.Guid,System.String,System.String,System.String,System.String,EchoHub.Core.Models.MessageType,System.String,System.String,System.DateTimeOffset,System.Nullable{System.Int64},System.Collections.Generic.List{EchoHub.Core.DTOs.EmbedDto})">
MessageDto(Guid, string, string, string?, string, MessageType, string?, string?, DateTimeOffset, long?, List&lt;EmbedDto&gt;?)
<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>
@@ -191,7 +191,7 @@ Class MessageDto <a class="header-action link-secondary" title="View source" hr
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MessageDto(Guid Id, string Content, string SenderUsername, string? SenderNicknameColor, string ChannelName, MessageType Type, string? AttachmentUrl, string? AttachmentFileName, DateTimeOffset SentAt, List&lt;EmbedDto&gt;? Embeds = null)</code></pre>
<pre><code class="lang-csharp hljs">public MessageDto(Guid Id, string Content, string SenderUsername, string? SenderNicknameColor, string ChannelName, MessageType Type, string? AttachmentUrl, string? AttachmentFileName, DateTimeOffset SentAt, long? AttachmentFileSize = null, List&lt;EmbedDto&gt;? Embeds = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -214,6 +214,8 @@ Class MessageDto <a class="header-action link-secondary" title="View source" hr
<dd></dd>
<dt><code>SentAt</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.datetimeoffset">DateTimeOffset</a></dt>
<dd></dd>
<dt><code>AttachmentFileSize</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a>?</dt>
<dd></dd>
<dt><code>Embeds</code> <span class="xref">List</span>&lt;<a class="xref" href="EchoHub.Core.DTOs.EmbedDto.html">EmbedDto</a>&gt;</dt>
<dd></dd>
</dl>
@@ -264,6 +266,37 @@ Class MessageDto <a class="header-action link-secondary" title="View source" hr
<a id="EchoHub_Core_DTOs_MessageDto_AttachmentFileSize_" data-uid="EchoHub.Core.DTOs.MessageDto.AttachmentFileSize*"></a>
<h3 id="EchoHub_Core_DTOs_MessageDto_AttachmentFileSize" data-uid="EchoHub.Core.DTOs.MessageDto.AttachmentFileSize">
AttachmentFileSize
<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? AttachmentFileSize { 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_MessageDto_AttachmentUrl_" data-uid="EchoHub.Core.DTOs.MessageDto.AttachmentUrl*"></a>
<h3 id="EchoHub_Core_DTOs_MessageDto_AttachmentUrl" data-uid="EchoHub.Core.DTOs.MessageDto.AttachmentUrl">
@@ -580,8 +613,8 @@ Class MessageDto <a class="header-action link-secondary" title="View source" hr
<a id="EchoHub_Core_DTOs_MessageDto_Deconstruct_" data-uid="EchoHub.Core.DTOs.MessageDto.Deconstruct*"></a>
<h3 id="EchoHub_Core_DTOs_MessageDto_Deconstruct_System_Guid__System_String__System_String__System_String__System_String__EchoHub_Core_Models_MessageType__System_String__System_String__System_DateTimeOffset__System_Collections_Generic_List_EchoHub_Core_DTOs_EmbedDto___" data-uid="EchoHub.Core.DTOs.MessageDto.Deconstruct(System.Guid@,System.String@,System.String@,System.String@,System.String@,EchoHub.Core.Models.MessageType@,System.String@,System.String@,System.DateTimeOffset@,System.Collections.Generic.List{EchoHub.Core.DTOs.EmbedDto}@)">
Deconstruct(out Guid, out string, out string, out string?, out string, out MessageType, out string?, out string?, out DateTimeOffset, out List&lt;EmbedDto&gt;?)
<h3 id="EchoHub_Core_DTOs_MessageDto_Deconstruct_System_Guid__System_String__System_String__System_String__System_String__EchoHub_Core_Models_MessageType__System_String__System_String__System_DateTimeOffset__System_Nullable_System_Int64___System_Collections_Generic_List_EchoHub_Core_DTOs_EmbedDto___" data-uid="EchoHub.Core.DTOs.MessageDto.Deconstruct(System.Guid@,System.String@,System.String@,System.String@,System.String@,EchoHub.Core.Models.MessageType@,System.String@,System.String@,System.DateTimeOffset@,System.Nullable{System.Int64}@,System.Collections.Generic.List{EchoHub.Core.DTOs.EmbedDto}@)">
Deconstruct(out Guid, out string, out string, out string?, out string, out MessageType, out string?, out string?, out DateTimeOffset, out long?, out List&lt;EmbedDto&gt;?)
<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>
@@ -589,7 +622,7 @@ Class MessageDto <a class="header-action link-secondary" title="View source" hr
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Deconstruct(out Guid Id, out string Content, out string SenderUsername, out string? SenderNicknameColor, out string ChannelName, out MessageType Type, out string? AttachmentUrl, out string? AttachmentFileName, out DateTimeOffset SentAt, out List&lt;EmbedDto&gt;? Embeds)</code></pre>
<pre><code class="lang-csharp hljs">public void Deconstruct(out Guid Id, out string Content, out string SenderUsername, out string? SenderNicknameColor, out string ChannelName, out MessageType Type, out string? AttachmentUrl, out string? AttachmentFileName, out DateTimeOffset SentAt, out long? AttachmentFileSize, out List&lt;EmbedDto&gt;? Embeds)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -612,6 +645,8 @@ Class MessageDto <a class="header-action link-secondary" title="View source" hr
<dd></dd>
<dt><code>SentAt</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.datetimeoffset">DateTimeOffset</a></dt>
<dd></dd>
<dt><code>AttachmentFileSize</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a>?</dt>
<dd></dd>
<dt><code>Embeds</code> <span class="xref">List</span>&lt;<a class="xref" href="EchoHub.Core.DTOs.EmbedDto.html">EmbedDto</a>&gt;</dt>
<dd></dd>
</dl>
+19
View File
@@ -94,6 +94,14 @@
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Core.DTOs.ApiResponse.html">ApiResponse</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Core.DTOs.ApiResponse-1.html">ApiResponse&lt;T&gt;</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Core.DTOs.AssignRoleRequest.html">AssignRoleRequest</a></dt>
<dd></dd>
@@ -110,6 +118,10 @@ Classes
<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.ChannelOperationResult.html">ChannelOperationResult</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Core.DTOs.CreateChannelRequest.html">CreateChannelRequest</a></dt>
<dd></dd>
@@ -194,6 +206,13 @@ Classes
<dt><a class="xref" href="EchoHub.Core.DTOs.UserProfileDto.html">UserProfileDto</a></dt>
<dd></dd>
</dl>
<h3 id="enums">
Enums
</h3>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Core.DTOs.ChannelError.html">ChannelError</a></dt>
<dd></dd>
</dl>
</article>
+31
View File
@@ -213,6 +213,37 @@ Class Message <a class="header-action link-secondary" title="View source" href=
<a id="EchoHub_Core_Models_Message_AttachmentFileSize_" data-uid="EchoHub.Core.Models.Message.AttachmentFileSize*"></a>
<h3 id="EchoHub_Core_Models_Message_AttachmentFileSize" data-uid="EchoHub.Core.Models.Message.AttachmentFileSize">
AttachmentFileSize
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/Message.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? AttachmentFileSize { 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.int64">long</a>?</dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_Message_AttachmentUrl_" data-uid="EchoHub.Core.Models.Message.AttachmentUrl*"></a>
<h3 id="EchoHub_Core_Models_Message_AttachmentUrl" data-uid="EchoHub.Core.Models.Message.AttachmentUrl">
@@ -116,6 +116,9 @@ Enum MessageType <a class="header-action link-secondary" title="View source" hr
<h2 id="fields">Fields
</h2>
<dl class="parameters">
<dt id="EchoHub_Core_Models_MessageType_Audio"><code>Audio = 3</code></dt>
<dd></dd>
<dt id="EchoHub_Core_Models_MessageType_File"><code>File = 2</code></dt>
<dd></dd>
+2 -2
View File
@@ -92,9 +92,9 @@
<h3 id="client">Client</h3>
<p>Terminal.Gui v2 TUI application -- UI components, services, themes, and configuration.</p>
<h3 id="core">Core</h3>
<p>Shared library -- DTOs, models, constants, and contracts (<code>IChatService</code>, <code>IChatBroadcaster</code>, <code>IEchoHubClient</code>).</p>
<p>Shared library -- DTOs, models, constants, and contracts (<code>IChatService</code>, <code>IChannelService</code>, <code>IChatBroadcaster</code>, <code>IEchoHubClient</code>).</p>
<h3 id="server">Server</h3>
<p>ASP.NET Core server -- controllers, hubs, ChatService, SignalRBroadcaster, authentication, and data access.</p>
<p>ASP.NET Core server -- controllers, hubs, ChatService, ChannelService, SignalRBroadcaster, authentication, file cleanup, and data access.</p>
<h3 id="serverirc">Server.Irc</h3>
<p>IRC protocol gateway -- TCP listener, command handler, IrcBroadcaster, and message formatter.</p>
+3 -2
View File
@@ -94,9 +94,10 @@
<li>SignalR hub and real-time messaging</li>
<li>IRC gateway and protocol bridging</li>
<li>ChatService and broadcaster pattern</li>
<li>File upload and validation</li>
<li>ChannelService and channel CRUD</li>
<li>File upload, validation, and cleanup</li>
<li>Rate limiting configuration</li>
<li>Database schema and migrations</li>
<li>Database schema, migrations, and DataMigrationService</li>
</ul>
</article>
@@ -410,37 +410,6 @@ Class IrcClientConnection <a class="header-action link-secondary" title="View s
<a id="EchoHub_Server_Irc_IrcClientConnection_JoinedChannels_" data-uid="EchoHub.Server.Irc.IrcClientConnection.JoinedChannels*"></a>
<h3 id="EchoHub_Server_Irc_IrcClientConnection_JoinedChannels" data-uid="EchoHub.Server.Irc.IrcClientConnection.JoinedChannels">
JoinedChannels
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server.Irc/IrcClientConnection.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 HashSet&lt;string&gt; JoinedChannels { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><span class="xref">HashSet</span>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Irc_IrcClientConnection_Nickname_" data-uid="EchoHub.Server.Irc.IrcClientConnection.Nickname*"></a>
<h3 id="EchoHub_Server_Irc_IrcClientConnection_Nickname" data-uid="EchoHub.Server.Irc.IrcClientConnection.Nickname">
@@ -631,6 +600,135 @@ Class IrcClientConnection <a class="header-action link-secondary" title="View s
<a id="EchoHub_Server_Irc_IrcClientConnection_GetJoinedChannels_" data-uid="EchoHub.Server.Irc.IrcClientConnection.GetJoinedChannels*"></a>
<h3 id="EchoHub_Server_Irc_IrcClientConnection_GetJoinedChannels" data-uid="EchoHub.Server.Irc.IrcClientConnection.GetJoinedChannels">
GetJoinedChannels()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server.Irc/IrcClientConnection.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 List&lt;string&gt; GetJoinedChannels()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">List</span>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Irc_IrcClientConnection_IsInChannel_" data-uid="EchoHub.Server.Irc.IrcClientConnection.IsInChannel*"></a>
<h3 id="EchoHub_Server_Irc_IrcClientConnection_IsInChannel_System_String_" data-uid="EchoHub.Server.Irc.IrcClientConnection.IsInChannel(System.String)">
IsInChannel(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server.Irc/IrcClientConnection.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 IsInChannel(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><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Irc_IrcClientConnection_JoinChannel_" data-uid="EchoHub.Server.Irc.IrcClientConnection.JoinChannel*"></a>
<h3 id="EchoHub_Server_Irc_IrcClientConnection_JoinChannel_System_String_" data-uid="EchoHub.Server.Irc.IrcClientConnection.JoinChannel(System.String)">
JoinChannel(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server.Irc/IrcClientConnection.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 JoinChannel(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>
<a id="EchoHub_Server_Irc_IrcClientConnection_LeaveChannel_" data-uid="EchoHub.Server.Irc.IrcClientConnection.LeaveChannel*"></a>
<h3 id="EchoHub_Server_Irc_IrcClientConnection_LeaveChannel_System_String_" data-uid="EchoHub.Server.Irc.IrcClientConnection.LeaveChannel(System.String)">
LeaveChannel(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server.Irc/IrcClientConnection.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 LeaveChannel(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>
<a id="EchoHub_Server_Irc_IrcClientConnection_ReadLineAsync_" data-uid="EchoHub.Server.Irc.IrcClientConnection.ReadLineAsync*"></a>
<h3 id="EchoHub_Server_Irc_IrcClientConnection_ReadLineAsync_System_Threading_CancellationToken_" data-uid="EchoHub.Server.Irc.IrcClientConnection.ReadLineAsync(System.Threading.CancellationToken)">
@@ -151,8 +151,8 @@ Class IrcCommandHandler <a class="header-action link-secondary" title="View sou
<a id="EchoHub_Server_Irc_IrcCommandHandler__ctor_" data-uid="EchoHub.Server.Irc.IrcCommandHandler.#ctor*"></a>
<h3 id="EchoHub_Server_Irc_IrcCommandHandler__ctor_EchoHub_Server_Irc_IrcClientConnection_EchoHub_Server_Irc_IrcOptions_EchoHub_Core_Contracts_IChatService_Microsoft_Extensions_Logging_ILogger_" data-uid="EchoHub.Server.Irc.IrcCommandHandler.#ctor(EchoHub.Server.Irc.IrcClientConnection,EchoHub.Server.Irc.IrcOptions,EchoHub.Core.Contracts.IChatService,Microsoft.Extensions.Logging.ILogger)">
IrcCommandHandler(IrcClientConnection, IrcOptions, IChatService, ILogger)
<h3 id="EchoHub_Server_Irc_IrcCommandHandler__ctor_EchoHub_Server_Irc_IrcClientConnection_EchoHub_Server_Irc_IrcOptions_EchoHub_Core_Contracts_IChatService_EchoHub_Core_Contracts_IChannelService_EchoHub_Core_Contracts_IMessageEncryptionService_Microsoft_Extensions_Logging_ILogger_" data-uid="EchoHub.Server.Irc.IrcCommandHandler.#ctor(EchoHub.Server.Irc.IrcClientConnection,EchoHub.Server.Irc.IrcOptions,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IChannelService,EchoHub.Core.Contracts.IMessageEncryptionService,Microsoft.Extensions.Logging.ILogger)">
IrcCommandHandler(IrcClientConnection, IrcOptions, IChatService, IChannelService, IMessageEncryptionService, ILogger)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server.Irc/IrcCommandHandler.cs"><i class="bi bi-code-slash"></i></a>
</h3>
@@ -160,7 +160,7 @@ Class IrcCommandHandler <a class="header-action link-secondary" title="View sou
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IrcCommandHandler(IrcClientConnection conn, IrcOptions options, IChatService chatService, ILogger logger)</code></pre>
<pre><code class="lang-csharp hljs">public IrcCommandHandler(IrcClientConnection conn, IrcOptions options, IChatService chatService, IChannelService channelService, IMessageEncryptionService encryption, ILogger logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -171,6 +171,10 @@ Class IrcCommandHandler <a class="header-action link-secondary" title="View sou
<dd></dd>
<dt><code>chatService</code> <a class="xref" href="../core/EchoHub.Core.Contracts.IChatService.html">IChatService</a></dt>
<dd></dd>
<dt><code>channelService</code> <a class="xref" href="../core/EchoHub.Core.Contracts.IChannelService.html">IChannelService</a></dt>
<dd></dd>
<dt><code>encryption</code> <a class="xref" href="../core/EchoHub.Core.Contracts.IMessageEncryptionService.html">IMessageEncryptionService</a></dt>
<dd></dd>
<dt><code>logger</code> <span class="xref">ILogger</span></dt>
<dd></dd>
</dl>
@@ -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_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Server_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_EchoHub_Core_Contracts_IMessageEncryptionService_" data-uid="EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService)">
ChannelsController(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_Server_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.Server.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService)">
ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService)
<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,11 +168,13 @@ public class ChannelsController : ControllerBase</code></pre>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ChannelsController(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)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>channelService</code> <a class="xref" href="../core/EchoHub.Core.Contracts.IChannelService.html">IChannelService</a></dt>
<dd></dd>
<dt><code>db</code> <a class="xref" href="EchoHub.Server.Data.EchoHubDbContext.html">EchoHubDbContext</a></dt>
<dd></dd>
<dt><code>fileStorage</code> <a class="xref" href="EchoHub.Server.Services.FileStorageService.html">FileStorageService</a></dt>
@@ -409,6 +411,8 @@ public Task&lt;IActionResult&gt; UpdateTopic(string channel, UpdateTopicRequest
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[HttpPost(&quot;{channel}/upload&quot;)]
[EnableRateLimiting(&quot;upload&quot;)]
[RequestSizeLimit(104857600)]
[RequestFormLimits(MultipartBodyLengthLimit = 104857600)]
public Task&lt;IActionResult&gt; Upload(string channel, string? size = null)</code></pre>
</div>
@@ -0,0 +1,306 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class AddAttachmentFileSize | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class AddAttachmentFileSize | 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/new/master/apiSpec/new?filename=EchoHub_Server_Data_Migrations_AddAttachmentFileSize.md&amp;value=---%0Auid%3A%20EchoHub.Server.Data.Migrations.AddAttachmentFileSize%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.Data.Migrations.AddAttachmentFileSize">
<h1 id="EchoHub_Server_Data_Migrations_AddAttachmentFileSize" data-uid="EchoHub.Server.Data.Migrations.AddAttachmentFileSize" class="text-break">
Class AddAttachmentFileSize <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260221193444_AddAttachmentFileSize.Designer.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.Data.html">Data</a>.<a class="xref" href="EchoHub.Server.Data.Migrations.html">Migrations</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Server.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[DbContext(typeof(EchoHubDbContext))]
[Migration(&quot;20260221193444_AddAttachmentFileSize&quot;)]
public class AddAttachmentFileSize : Migration</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">Migration</span></div>
<div><span class="xref">AddAttachmentFileSize</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.memberwiseclone">object.MemberwiseClone()</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_Data_Migrations_AddAttachmentFileSize__ctor_" data-uid="EchoHub.Server.Data.Migrations.AddAttachmentFileSize.#ctor*"></a>
<h3 id="EchoHub_Server_Data_Migrations_AddAttachmentFileSize__ctor" data-uid="EchoHub.Server.Data.Migrations.AddAttachmentFileSize.#ctor">
AddAttachmentFileSize()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260221193444_AddAttachmentFileSize.Designer.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 AddAttachmentFileSize()</code></pre>
</div>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Server_Data_Migrations_AddAttachmentFileSize_BuildTargetModel_" data-uid="EchoHub.Server.Data.Migrations.AddAttachmentFileSize.BuildTargetModel*"></a>
<h3 id="EchoHub_Server_Data_Migrations_AddAttachmentFileSize_BuildTargetModel_Microsoft_EntityFrameworkCore_ModelBuilder_" data-uid="EchoHub.Server.Data.Migrations.AddAttachmentFileSize.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
BuildTargetModel(ModelBuilder)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260221193444_AddAttachmentFileSize.Designer.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 override void BuildTargetModel(ModelBuilder modelBuilder)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>modelBuilder</code> <span class="xref">ModelBuilder</span></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Data_Migrations_AddAttachmentFileSize_Down_" data-uid="EchoHub.Server.Data.Migrations.AddAttachmentFileSize.Down*"></a>
<h3 id="EchoHub_Server_Data_Migrations_AddAttachmentFileSize_Down_Microsoft_EntityFrameworkCore_Migrations_MigrationBuilder_" data-uid="EchoHub.Server.Data.Migrations.AddAttachmentFileSize.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
Down(MigrationBuilder)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260221193444_AddAttachmentFileSize.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 override void Down(MigrationBuilder migrationBuilder)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>migrationBuilder</code> <span class="xref">MigrationBuilder</span></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Data_Migrations_AddAttachmentFileSize_Up_" data-uid="EchoHub.Server.Data.Migrations.AddAttachmentFileSize.Up*"></a>
<h3 id="EchoHub_Server_Data_Migrations_AddAttachmentFileSize_Up_Microsoft_EntityFrameworkCore_Migrations_MigrationBuilder_" data-uid="EchoHub.Server.Data.Migrations.AddAttachmentFileSize.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
Up(MigrationBuilder)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260221193444_AddAttachmentFileSize.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 override void Up(MigrationBuilder migrationBuilder)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>migrationBuilder</code> <span class="xref">MigrationBuilder</span></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260221193444_AddAttachmentFileSize.Designer.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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -94,6 +94,10 @@
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Data.Migrations.AddAttachmentFileSize.html">AddAttachmentFileSize</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Data.Migrations.AddChannelIsPublic.html">AddChannelIsPublic</a></dt>
<dd></dd>
@@ -0,0 +1,526 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ChannelService | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ChannelService | 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/new/master/apiSpec/new?filename=EchoHub_Server_Services_ChannelService.md&amp;value=---%0Auid%3A%20EchoHub.Server.Services.ChannelService%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.Services.ChannelService">
<h1 id="EchoHub_Server_Services_ChannelService" data-uid="EchoHub.Server.Services.ChannelService" class="text-break">
Class ChannelService <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>
</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.Services.html">Services</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Server.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class ChannelService : IChannelService</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">ChannelService</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="../core/EchoHub.Core.Contracts.IChannelService.html">IChannelService</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.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_Services_ChannelService__ctor_" data-uid="EchoHub.Server.Services.ChannelService.#ctor*"></a>
<h3 id="EchoHub_Server_Services_ChannelService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_ChannelService__" data-uid="EchoHub.Server.Services.ChannelService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChannelService})">
ChannelService(IServiceScopeFactory, PresenceTracker, ILogger&lt;ChannelService&gt;)
<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 ChannelService(IServiceScopeFactory scopeFactory, PresenceTracker presenceTracker, ILogger&lt;ChannelService&gt; logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>scopeFactory</code> <span class="xref">IServiceScopeFactory</span></dt>
<dd></dd>
<dt><code>presenceTracker</code> <a class="xref" href="EchoHub.Server.Services.PresenceTracker.html">PresenceTracker</a></dt>
<dd></dd>
<dt><code>logger</code> <span class="xref">ILogger</span>&lt;<a class="xref" href="EchoHub.Server.Services.ChannelService.html">ChannelService</a>&gt;</dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Server_Services_ChannelService_CreateChannelAsync_" data-uid="EchoHub.Server.Services.ChannelService.CreateChannelAsync*"></a>
<h3 id="EchoHub_Server_Services_ChannelService_CreateChannelAsync_System_Guid_System_String_System_String_System_Boolean_" data-uid="EchoHub.Server.Services.ChannelService.CreateChannelAsync(System.Guid,System.String,System.String,System.Boolean)">
CreateChannelAsync(Guid, string, string?, bool)
<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&lt;ChannelOperationResult&gt; CreateChannelAsync(Guid creatorUserId, string name, string? topic, bool isPublic)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>creatorUserId</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>isPublic</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span>&lt;<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.cs">ChannelOperationResult</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_ChannelService_DeleteChannelAsync_" data-uid="EchoHub.Server.Services.ChannelService.DeleteChannelAsync*"></a>
<h3 id="EchoHub_Server_Services_ChannelService_DeleteChannelAsync_System_Guid_System_String_" data-uid="EchoHub.Server.Services.ChannelService.DeleteChannelAsync(System.Guid,System.String)">
DeleteChannelAsync(Guid, 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&lt;ChannelOperationResult&gt; DeleteChannelAsync(Guid callerUserId, string channelName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>callerUserId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
<dd></dd>
<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>&lt;<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.cs">ChannelOperationResult</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_ChannelService_EnsureChannelMembershipAsync_" data-uid="EchoHub.Server.Services.ChannelService.EnsureChannelMembershipAsync*"></a>
<h3 id="EchoHub_Server_Services_ChannelService_EnsureChannelMembershipAsync_System_Guid_System_String_" data-uid="EchoHub.Server.Services.ChannelService.EnsureChannelMembershipAsync(System.Guid,System.String)">
EnsureChannelMembershipAsync(Guid, 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&lt;(bool Success, string? Error)&gt; EnsureChannelMembershipAsync(Guid userId, string channelName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>userId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
<dd></dd>
<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>&lt;(<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.valuetuple-system.boolean,system.string-.success">Success</a>, <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.valuetuple-system.boolean,system.string-.error">Error</a>)&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_ChannelService_GetChannelByNameAsync_" data-uid="EchoHub.Server.Services.ChannelService.GetChannelByNameAsync*"></a>
<h3 id="EchoHub_Server_Services_ChannelService_GetChannelByNameAsync_System_String_" data-uid="EchoHub.Server.Services.ChannelService.GetChannelByNameAsync(System.String)">
GetChannelByNameAsync(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&lt;ChannelDto?&gt; GetChannelByNameAsync(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>&lt;<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs">ChannelDto</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_ChannelService_GetChannelListAsync_" data-uid="EchoHub.Server.Services.ChannelService.GetChannelListAsync*"></a>
<h3 id="EchoHub_Server_Services_ChannelService_GetChannelListAsync" data-uid="EchoHub.Server.Services.ChannelService.GetChannelListAsync">
GetChannelListAsync()
<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&lt;List&lt;ChannelListItem&gt;&gt; GetChannelListAsync()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span>&lt;<span class="xref">List</span>&lt;<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChannelService.cs">ChannelListItem</a>&gt;&gt;</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)">
GetChannelTopicAsync(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&lt;(string? Topic, bool Exists)&gt; GetChannelTopicAsync(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>&lt;(<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.valuetuple-system.string,system.boolean-.topic">Topic</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.valuetuple-system.string,system.boolean-.exists">Exists</a>)&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_ChannelService_GetChannelsAsync_" data-uid="EchoHub.Server.Services.ChannelService.GetChannelsAsync*"></a>
<h3 id="EchoHub_Server_Services_ChannelService_GetChannelsAsync_System_Guid_System_Int32_System_Int32_" data-uid="EchoHub.Server.Services.ChannelService.GetChannelsAsync(System.Guid,System.Int32,System.Int32)">
GetChannelsAsync(Guid, int, int)
<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&lt;PaginatedResponse&lt;ChannelDto&gt;&gt; GetChannelsAsync(Guid userId, int offset, int limit)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>userId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
<dd></dd>
<dt><code>offset</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
<dt><code>limit</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><span class="xref">Task</span>&lt;<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.cs">PaginatedResponse</a>&lt;<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/ChatDtos.cs">ChannelDto</a>&gt;&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_ChannelService_UpdateTopicAsync_" data-uid="EchoHub.Server.Services.ChannelService.UpdateTopicAsync*"></a>
<h3 id="EchoHub_Server_Services_ChannelService_UpdateTopicAsync_System_Guid_System_String_System_String_" data-uid="EchoHub.Server.Services.ChannelService.UpdateTopicAsync(System.Guid,System.String,System.String)">
UpdateTopicAsync(Guid, string, 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&lt;ChannelOperationResult&gt; UpdateTopicAsync(Guid callerUserId, string channelName, string? topic)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>callerUserId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
<dd></dd>
<dt><code>channelName</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>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span>&lt;<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/DTOs/CommonDtos.cs">ChannelOperationResult</a>&gt;</dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/ChannelService.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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -160,8 +160,8 @@ Class ChatService <a class="header-action link-secondary" title="View source" h
<a id="EchoHub_Server_Services_ChatService__ctor_" data-uid="EchoHub.Server.Services.ChatService.#ctor*"></a>
<h3 id="EchoHub_Server_Services_ChatService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__EchoHub_Server_Services_LinkEmbedService_EchoHub_Core_Contracts_IMessageEncryptionService_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_ChatService__" data-uid="EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,EchoHub.Core.Contracts.IMessageEncryptionService,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})">
ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable&lt;IChatBroadcaster&gt;, LinkEmbedService, IMessageEncryptionService, ILogger&lt;ChatService&gt;)
<h3 id="EchoHub_Server_Services_ChatService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__EchoHub_Server_Services_LinkEmbedService_EchoHub_Core_Contracts_IMessageEncryptionService_EchoHub_Core_Contracts_IChannelService_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_ChatService__" data-uid="EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Core.Contracts.IChannelService,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})">
ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable&lt;IChatBroadcaster&gt;, LinkEmbedService, IMessageEncryptionService, IChannelService, ILogger&lt;ChatService&gt;)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/ChatService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
@@ -169,7 +169,7 @@ Class ChatService <a class="header-action link-secondary" title="View source" h
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ChatService(IServiceScopeFactory scopeFactory, PresenceTracker presenceTracker, IEnumerable&lt;IChatBroadcaster&gt; broadcasters, LinkEmbedService embedService, IMessageEncryptionService encryption, ILogger&lt;ChatService&gt; logger)</code></pre>
<pre><code class="lang-csharp hljs">public ChatService(IServiceScopeFactory scopeFactory, PresenceTracker presenceTracker, IEnumerable&lt;IChatBroadcaster&gt; broadcasters, LinkEmbedService embedService, IMessageEncryptionService encryption, IChannelService channelService, ILogger&lt;ChatService&gt; logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -184,6 +184,8 @@ Class ChatService <a class="header-action link-secondary" title="View source" h
<dd></dd>
<dt><code>encryption</code> <a class="xref" href="../core/EchoHub.Core.Contracts.IMessageEncryptionService.html">IMessageEncryptionService</a></dt>
<dd></dd>
<dt><code>channelService</code> <a class="xref" href="../core/EchoHub.Core.Contracts.IChannelService.html">IChannelService</a></dt>
<dd></dd>
<dt><code>logger</code> <span class="xref">ILogger</span>&lt;<a class="xref" href="EchoHub.Server.Services.ChatService.html">ChatService</a>&gt;</dt>
<dd></dd>
</dl>
@@ -355,73 +357,6 @@ Class ChatService <a class="header-action link-secondary" title="View source" h
<a id="EchoHub_Server_Services_ChatService_GetChannelListAsync_" data-uid="EchoHub.Server.Services.ChatService.GetChannelListAsync*"></a>
<h3 id="EchoHub_Server_Services_ChatService_GetChannelListAsync" data-uid="EchoHub.Server.Services.ChatService.GetChannelListAsync">
GetChannelListAsync()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/ChatService.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&lt;List&lt;ChannelListItem&gt;&gt; GetChannelListAsync()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span>&lt;<span class="xref">List</span>&lt;<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatService.cs">ChannelListItem</a>&gt;&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_ChatService_GetChannelTopicAsync_" data-uid="EchoHub.Server.Services.ChatService.GetChannelTopicAsync*"></a>
<h3 id="EchoHub_Server_Services_ChatService_GetChannelTopicAsync_System_String_" data-uid="EchoHub.Server.Services.ChatService.GetChannelTopicAsync(System.String)">
GetChannelTopicAsync(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/ChatService.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&lt;(string? Topic, bool Exists)&gt; GetChannelTopicAsync(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>&lt;(<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.valuetuple-system.string,system.boolean-.topic">Topic</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.valuetuple-system.string,system.boolean-.exists">Exists</a>)&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_ChatService_GetChannelsForUserAsync_" data-uid="EchoHub.Server.Services.ChatService.GetChannelsForUserAsync*"></a>
<h3 id="EchoHub_Server_Services_ChatService_GetChannelsForUserAsync_System_String_" data-uid="EchoHub.Server.Services.ChatService.GetChannelsForUserAsync(System.String)">
@@ -0,0 +1,257 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class FileCleanupService | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class FileCleanupService | 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/new/master/apiSpec/new?filename=EchoHub_Server_Services_FileCleanupService.md&amp;value=---%0Auid%3A%20EchoHub.Server.Services.FileCleanupService%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.Services.FileCleanupService">
<h1 id="EchoHub_Server_Services_FileCleanupService" data-uid="EchoHub.Server.Services.FileCleanupService" class="text-break">
Class FileCleanupService <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/FileCleanupService.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.Services.html">Services</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Server.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public sealed class FileCleanupService : BackgroundService, IDisposable</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">BackgroundService</span></div>
<div><span class="xref">FileCleanupService</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</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.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_Services_FileCleanupService__ctor_" data-uid="EchoHub.Server.Services.FileCleanupService.#ctor*"></a>
<h3 id="EchoHub_Server_Services_FileCleanupService__ctor_Microsoft_Extensions_Configuration_IConfiguration_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_FileCleanupService__" data-uid="EchoHub.Server.Services.FileCleanupService.#ctor(Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.FileCleanupService})">
FileCleanupService(IConfiguration, ILogger&lt;FileCleanupService&gt;)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/FileCleanupService.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 FileCleanupService(IConfiguration configuration, ILogger&lt;FileCleanupService&gt; logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>configuration</code> <span class="xref">IConfiguration</span></dt>
<dd></dd>
<dt><code>logger</code> <span class="xref">ILogger</span>&lt;<a class="xref" href="EchoHub.Server.Services.FileCleanupService.html">FileCleanupService</a>&gt;</dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Server_Services_FileCleanupService_ExecuteAsync_" data-uid="EchoHub.Server.Services.FileCleanupService.ExecuteAsync*"></a>
<h3 id="EchoHub_Server_Services_FileCleanupService_ExecuteAsync_System_Threading_CancellationToken_" data-uid="EchoHub.Server.Services.FileCleanupService.ExecuteAsync(System.Threading.CancellationToken)">
ExecuteAsync(CancellationToken)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/FileCleanupService.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 override Task ExecuteAsync(CancellationToken stoppingToken)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>stoppingToken</code> <span class="xref">CancellationToken</span></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/FileCleanupService.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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -152,6 +152,43 @@ Class FileValidationHelper <a class="header-action link-secondary" title="View
</h2>
<a id="EchoHub_Server_Services_FileValidationHelper_IsAudioFile_" data-uid="EchoHub.Server.Services.FileValidationHelper.IsAudioFile*"></a>
<h3 id="EchoHub_Server_Services_FileValidationHelper_IsAudioFile_System_String_" data-uid="EchoHub.Server.Services.FileValidationHelper.IsAudioFile(System.String)">
IsAudioFile(string)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/FileValidationHelper.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Checks whether the file name has a recognized audio extension.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool IsAudioFile(string fileName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>fileName</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><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_FileValidationHelper_IsValidImage_" data-uid="EchoHub.Server.Services.FileValidationHelper.IsValidImage*"></a>
<h3 id="EchoHub_Server_Services_FileValidationHelper_IsValidImage_System_IO_Stream_" data-uid="EchoHub.Server.Services.FileValidationHelper.IsValidImage(System.IO.Stream)">
+8
View File
@@ -94,10 +94,18 @@
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Services.ChannelService.html">ChannelService</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Services.ChatService.html">ChatService</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Services.FileCleanupService.html">FileCleanupService</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Services.FileStorageService.html">FileStorageService</a></dt>
<dd></dd>
+36
View File
@@ -78,6 +78,9 @@
<li>
<a href="client/EchoHub.Client.Services.ApiClient.html" name="" title="ApiClient">ApiClient</a>
</li>
<li>
<a href="client/EchoHub.Client.Services.AudioPlaybackService.html" name="" title="AudioPlaybackService">AudioPlaybackService</a>
</li>
<li>
<a href="client/EchoHub.Client.Services.ClientEncryptionService.html" name="" title="ClientEncryptionService">ClientEncryptionService</a>
</li>
@@ -113,6 +116,9 @@
<a href="client/EchoHub.Client.UI.html" name="" title="EchoHub.Client.UI">EchoHub.Client.UI</a>
<ul class="nav level4">
<li>
<a href="client/EchoHub.Client.UI.AudioPlayerDialog.html" name="" title="AudioPlayerDialog">AudioPlayerDialog</a>
</li>
<li>
<a href="client/EchoHub.Client.UI.ChannelListSource.html" name="" title="ChannelListSource">ChannelListSource</a>
</li>
@@ -167,6 +173,12 @@
<li>
<a href="client/EchoHub.Client.UI.StatusDialogResult.html" name="" title="StatusDialogResult">StatusDialogResult</a>
</li>
<li>
<a href="client/EchoHub.Client.UI.UpdateConfirmDialog.html" name="" title="UpdateConfirmDialog">UpdateConfirmDialog</a>
</li>
<li>
<a href="client/EchoHub.Client.UI.UpdateProgressDialog.html" name="" title="UpdateProgressDialog">UpdateProgressDialog</a>
</li>
<li>
<a href="client/EchoHub.Client.UI.UserListSource.html" name="" title="UserListSource">UserListSource</a>
</li>
@@ -217,6 +229,9 @@
<li>
<a href="core/EchoHub.Core.Contracts.ChannelListItem.html" name="" title="ChannelListItem">ChannelListItem</a>
</li>
<li>
<a href="core/EchoHub.Core.Contracts.IChannelService.html" name="" title="IChannelService">IChannelService</a>
</li>
<li>
<a href="core/EchoHub.Core.Contracts.IChatBroadcaster.html" name="" title="IChatBroadcaster">IChatBroadcaster</a>
</li>
@@ -236,6 +251,12 @@
<a href="core/EchoHub.Core.DTOs.html" name="" title="EchoHub.Core.DTOs">EchoHub.Core.DTOs</a>
<ul class="nav level4">
<li>
<a href="core/EchoHub.Core.DTOs.ApiResponse.html" name="" title="ApiResponse">ApiResponse</a>
</li>
<li>
<a href="core/EchoHub.Core.DTOs.ApiResponse-1.html" name="" title="ApiResponse&lt;T&gt;">ApiResponse&lt;T&gt;</a>
</li>
<li>
<a href="core/EchoHub.Core.DTOs.AssignRoleRequest.html" name="" title="AssignRoleRequest">AssignRoleRequest</a>
</li>
@@ -248,6 +269,12 @@
<li>
<a href="core/EchoHub.Core.DTOs.ChannelDto.html" name="" title="ChannelDto">ChannelDto</a>
</li>
<li>
<a href="core/EchoHub.Core.DTOs.ChannelError.html" name="" title="ChannelError">ChannelError</a>
</li>
<li>
<a href="core/EchoHub.Core.DTOs.ChannelOperationResult.html" name="" title="ChannelOperationResult">ChannelOperationResult</a>
</li>
<li>
<a href="core/EchoHub.Core.DTOs.CreateChannelRequest.html" name="" title="CreateChannelRequest">CreateChannelRequest</a>
</li>
@@ -418,6 +445,9 @@
<a href="server/EchoHub.Server.Data.Migrations.html" name="" title="EchoHub.Server.Data.Migrations">EchoHub.Server.Data.Migrations</a>
<ul class="nav level4">
<li>
<a href="server/EchoHub.Server.Data.Migrations.AddAttachmentFileSize.html" name="" title="AddAttachmentFileSize">AddAttachmentFileSize</a>
</li>
<li>
<a href="server/EchoHub.Server.Data.Migrations.AddChannelIsPublic.html" name="" title="AddChannelIsPublic">AddChannelIsPublic</a>
</li>
@@ -453,9 +483,15 @@
<a href="server/EchoHub.Server.Services.html" name="" title="EchoHub.Server.Services">EchoHub.Server.Services</a>
<ul class="nav level4">
<li>
<a href="server/EchoHub.Server.Services.ChannelService.html" name="" title="ChannelService">ChannelService</a>
</li>
<li>
<a href="server/EchoHub.Server.Services.ChatService.html" name="" title="ChatService">ChatService</a>
</li>
<li>
<a href="server/EchoHub.Server.Services.FileCleanupService.html" name="" title="FileCleanupService">FileCleanupService</a>
</li>
<li>
<a href="server/EchoHub.Server.Services.FileStorageService.html" name="" title="FileStorageService">FileStorageService</a>
</li>
+1 -1
View File
File diff suppressed because one or more lines are too long
+5 -5
View File
@@ -101,7 +101,7 @@ TUI Client ──► WebSocket ──► ChatHub ─────┘
<ul>
<li><strong>Models</strong>: <code>User</code>, <code>Channel</code>, <code>Message</code>, <code>RefreshToken</code></li>
<li><strong>DTOs</strong>: Record types for API requests/responses</li>
<li><strong>Contracts</strong>: <code>IChatService</code> (protocol-agnostic chat operations), <code>IChatBroadcaster</code> (event fan-out interface), <code>IEchoHubClient</code> (SignalR client interface)</li>
<li><strong>Contracts</strong>: <code>IChatService</code> (protocol-agnostic chat operations), <code>IChannelService</code> (channel CRUD and membership), <code>IChatBroadcaster</code> (event fan-out interface), <code>IEchoHubClient</code> (SignalR client interface)</li>
<li><strong>Constants</strong>: <code>ValidationConstants</code> (shared regex patterns), <code>HubConstants</code></li>
</ul>
<h3 id="echohubserver">EchoHub.Server</h3>
@@ -111,7 +111,7 @@ TUI Client ──► WebSocket ──► ChatHub ─────┘
<li><strong>Hubs</strong>: SignalR <code>ChatHub</code> -- thin adapter delegating to <code>IChatService</code></li>
<li><strong>Auth</strong>: JWT token service (15-min access tokens, 30-day refresh tokens)</li>
<li><strong>Data</strong>: EF Core with SQLite</li>
<li><strong>Services</strong>: <code>ChatService</code> (core business logic), <code>SignalRBroadcaster</code>, presence tracking, file storage, image-to-ASCII conversion</li>
<li><strong>Services</strong>: <code>ChatService</code> (core business logic), <code>ChannelService</code> (channel CRUD and membership), <code>SignalRBroadcaster</code>, presence tracking, file storage, image-to-ASCII conversion, <code>FileCleanupService</code> (periodic removal of expired uploads), <code>DataMigrationService</code> (startup schema/data evolution)</li>
</ul>
<h3 id="echohubserverirc">EchoHub.Server.Irc</h3>
<p>IRC protocol gateway (separate project for clean separation of concerns):</p>
@@ -126,9 +126,9 @@ TUI Client ──► WebSocket ──► ChatHub ─────┘
<p>Terminal.Gui v2 TUI application:</p>
<ul>
<li><strong>UI</strong>: Main window, dialogs, chat renderer with ANSI color support</li>
<li><strong>Services</strong>: API client with automatic token refresh, SignalR connection wrapper</li>
<li><strong>Themes</strong>: 13 built-in color themes</li>
<li><strong>Config</strong>: Client configuration management</li>
<li><strong>Services</strong>: API client with automatic token refresh, SignalR connection wrapper, audio playback (NetCoreAudio), automatic update checker (AlwaysUpToDate)</li>
<li><strong>Themes</strong>: 13 built-in color themes (including transparent theme with true terminal transparency)</li>
<li><strong>Config</strong>: Client configuration management with session persistence (&quot;Remember Me&quot; refresh tokens)</li>
</ul>
<h2 id="communication">Communication</h2>
<ul>
+2
View File
@@ -90,6 +90,8 @@
<p>Release history for EchoHub.</p>
<h2 id="releases">Releases</h2>
<ul>
<li><a href="v0.2.5.html">v0.2.5</a> - Session Persistence, Auto-Updates, Audio &amp; Transparent Theme</li>
<li><a href="v0.2.4.html">v0.2.4</a> - E2E Message Encryption</li>
<li><a href="v0.2.3.html">v0.2.3</a> - Moderation, Embeds &amp; UI Overhaul</li>
<li><a href="v0.2.2.html">v0.2.2</a> - Startup &amp; Shutdown Fixes</li>
<li><a href="v0.2.1.html">v0.2.1</a> - Shutdown &amp; CI Fixes</li>
+3
View File
@@ -15,6 +15,9 @@
<li>
<a href="index.html" name="" title="Overview">Overview</a>
</li>
<li>
<a href="v0.2.5.html" name="" title="v0.2.5">v0.2.5</a>
</li>
<li>
<a href="v0.2.4.html" name="" title="v0.2.4">v0.2.4</a>
</li>
+1 -1
View File
@@ -1,2 +1,2 @@
{"items":[{"name":"Overview","href":"index.html","topicHref":"index.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.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"}]}
+1 -1
View File
@@ -117,7 +117,7 @@
<li><code>Encryption:EncryptDatabase</code> server setting (default <code>false</code>) controls whether messages are encrypted at rest</li>
<li>DB column max lengths increased for encrypted content: <code>Message.Content</code> 2000 → 16000, <code>Message.EmbedJson</code> 8000 → 32000</li>
<li>EF Core migration: <code>AddEncryptionSupport</code></li>
<li>Encryption test suite: server-side, client-side, and cross-compatibility tests (87 total)</li>
<li>Encryption test suite: server-side, client-side, and cross-compatibility tests</li>
<li>Documentation article: <code>docs/articles/encryption.md</code></li>
</ul>
+232
View File
@@ -0,0 +1,232 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>v0.2.5 - Session Persistence, Auto-Updates, Audio &amp; Transparent Theme | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="v0.2.5 - Session Persistence, Auto-Updates, Audio &amp; Transparent Theme | 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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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="v025---session-persistence-auto-updates-audio--transparent-theme">v0.2.5 - Session Persistence, Auto-Updates, Audio &amp; Transparent Theme</h1>
<h2 id="features">Features</h2>
<h3 id="audio-message-support">Audio Message Support</h3>
<ul>
<li>New <code>Audio</code> message type — uploaded audio files (<code>.mp3</code>, <code>.wav</code>, <code>.ogg</code>, <code>.flac</code>, <code>.aac</code>, <code>.m4a</code>, <code>.wma</code>) are automatically detected and categorized</li>
<li>TUI client renders audio messages with <code>♪ [Audio: filename] (Enter to play)</code> indicator</li>
<li>Press Enter on an audio message to open the <strong>Audio Player dialog</strong> with animated wave visualization, play/pause/stop controls, and volume slider</li>
<li>Per-type upload limits: <strong>10 MB</strong> images, <strong>10 MB</strong> audio, <strong>100 MB</strong> generic files (with Kestrel request size configured to match)</li>
<li><code>AudioPlaybackService</code> enhanced with pause/resume, volume control, and playback-finished events</li>
<li>Fixed: wrapped audio/file messages now remain clickable on all lines (attachment metadata propagated through word-wrap)</li>
<li>IRC gateway formats audio messages as <code>♪ [Audio: filename] url</code></li>
<li>Server detects audio files by extension via <code>FileValidationHelper.IsAudioFile()</code></li>
</ul>
<h3 id="file-downloads">File Downloads</h3>
<ul>
<li>Press Enter on a file message in the TUI client to download and open it with the system default application</li>
<li><code>ApiClient.DownloadFileAsync()</code> streams file downloads from the server</li>
<li>File and audio messages in the chat list now show colored indicators with interaction hints</li>
</ul>
<h3 id="file-cleanup-service">File Cleanup Service</h3>
<ul>
<li><code>FileCleanupService</code> (BackgroundService) periodically removes old uploaded files</li>
<li>Configurable via <code>Storage:CleanupIntervalHours</code> (default 1h) and <code>Storage:RetentionDays</code> (default 30d)</li>
</ul>
<h3 id="data-migration-service">Data Migration Service</h3>
<ul>
<li><code>DataMigrationService</code> runs at startup to handle schema/data evolution</li>
<li>Ensures <code>#general</code> channel and pre-existing channels are marked public</li>
<li>Migrates legacy ANSI escape codes in image messages to printable color tags (<code>{F:RRGGBB}</code>, <code>{B:RRGGBB}</code>, <code>{X}</code>)</li>
<li>Migrates legacy single-object <code>EmbedJson</code> to array format</li>
<li>Promotes usernames listed in <code>Server:Admins</code> config to Admin role</li>
</ul>
<h3 id="true-transparent-background">True Transparent Background</h3>
<ul>
<li>Transparent theme now uses the terminal's native background instead of solid black</li>
<li>Powered by <code>Color.None</code> (alpha=0) which emits ANSI <code>CSI 49m</code> (default background) instead of explicit RGB</li>
<li>Terminal transparency, acrylic, wallpaper effects now show through the TUI</li>
<li>Dialogs retain solid <code>DarkGray</code> background for readability</li>
<li>Uses local Terminal.Gui fork (submodule) with transparent color support pending upstream merge (<a href="https://github.com/gui-cs/Terminal.Gui/pull/4234">gui-cs/Terminal.Gui#4234</a>)</li>
</ul>
<h3 id="enhanced-status-bar">Enhanced Status Bar</h3>
<ul>
<li>Status bar now shows <strong>EchoHub</strong> branding at the start</li>
<li>Connection state is color-coded: green (Connected), red (Disconnected), yellow (transitional states like Connecting, Reconnecting, Authenticating)</li>
<li>Current channel shows its type: <code>#channel - public</code> or <code>#channel - private</code></li>
</ul>
<h3 id="remember-me-session-persistence">Remember Me (Session Persistence)</h3>
<ul>
<li>&quot;Remember me&quot; checkbox in the connect dialog — saves a 30-day refresh token so users can reconnect without entering their password</li>
<li>Saved servers with active sessions show <code>[session]</code> indicator in the connect dialog and saved servers list</li>
<li>Token-based login: selecting a saved server with a session lets you click Login with an empty password</li>
<li>Graceful expiry handling: if the saved session is expired or revoked, shows an error and prompts for password</li>
<li>Refresh token rotation: rotated tokens are automatically persisted to config so the session stays valid across refreshes</li>
<li>New &quot;Logout&quot; menu item (Server menu): revokes the refresh token server-side and clears the saved session</li>
<li>Removed dead <code>SavedServer.Token</code> field (stored 15-min access token that was never read back)</li>
</ul>
<h3 id="automatic-update-checking">Automatic Update Checking</h3>
<ul>
<li><code>UpdateChecker</code> rewritten to use the <a href="https://github.com/AuriRex/AlwaysUpToDate">AlwaysUpToDate</a> library for self-updating</li>
<li>Polls the EchoHub version manifest hourly (active only in <code>RELEASE</code> builds)</li>
<li><code>UpdateConfirmDialog</code> shows current vs. available version with Update/Cancel buttons</li>
<li><code>UpdateProgressDialog</code> displays real-time download progress bar</li>
<li>Errors are logged via Serilog instead of being silently swallowed</li>
</ul>
<h3 id="windows-installer">Windows Installer</h3>
<ul>
<li>New Inno Setup script (<code>installer/Installer.iss</code>) to build a Windows installer</li>
<li>Auto-reads product version from the built EXE</li>
<li>User-level install by default (no admin required), with admin override option</li>
<li>Creates desktop and quick-launch shortcuts (optional)</li>
<li>Supports English and German languages</li>
</ul>
<h3 id="application-icons">Application Icons</h3>
<ul>
<li>New <code>hue_icon</code> branding assets (ICO, PNG, SVG) in <code>assets/</code></li>
<li>Application icon set on both Client and Server projects</li>
</ul>
<h3 id="general-channel-protection">#general Channel Protection</h3>
<ul>
<li><code>#general</code> channel is now auto-recreated if somehow missing (both in <code>GetChannels</code> endpoint and <code>JoinChannel</code> flow)</li>
<li>Users cannot <code>/leave</code> the #general channel (client-side guard)</li>
<li>Connecting while already connected now prompts to disconnect first instead of silently leaking the previous connection</li>
</ul>
<h2 id="fixes">Fixes</h2>
<h3 id="irc-gateway">IRC Gateway</h3>
<ul>
<li><strong>Fixed: IRC JOIN history replay showed encrypted gibberish</strong><code>IrcCommandHandler.HandleJoinAsync</code> now decrypts channel history before formatting for IRC clients (history was encrypted for SignalR transport but sent raw to IRC)</li>
<li><strong>Fixed: <code>JoinedChannels</code> race condition</strong><code>IrcClientConnection.JoinedChannels</code> replaced with thread-safe methods (<code>JoinChannel</code>, <code>LeaveChannel</code>, <code>IsInChannel</code>, <code>GetJoinedChannels</code>) using lock synchronization; prevents crashes when broadcaster threads read while the command handler writes</li>
<li><strong>Fixed: <code>RequireRegistered</code> fire-and-forget</strong> — converted from sync <code>bool</code> to <code>async Task&lt;bool&gt;</code> (<code>RequireRegisteredAsync</code>) so the error reply is properly awaited before the handler returns</li>
</ul>
<h3 id="channelservice-extraction">ChannelService Extraction</h3>
<ul>
<li>Extracted channel management logic from <code>ChannelsController</code> and <code>ChatService</code> into a dedicated <code>IChannelService</code> / <code>ChannelService</code></li>
<li><code>ChannelsController</code> is now a thin adapter — delegates CRUD operations to <code>IChannelService</code> and maps <code>ChannelError</code> to HTTP status codes</li>
<li><code>ChatService.JoinChannelAsync</code> delegates channel validation + membership to <code>IChannelService.EnsureChannelMembershipAsync()</code></li>
<li>New <code>ChannelOperationResult</code> result type with <code>ChannelError</code> enum for typed error handling across service boundaries</li>
<li>IRC gateway uses <code>IChannelService</code> for topic queries and channel listing (instead of <code>IChatService</code>)</li>
</ul>
<h3 id="echohub-branding">EchoHub Branding</h3>
<ul>
<li>Status bar &quot;EchoHub&quot; text now uses golden color (218, 165, 32)</li>
</ul>
<h2 id="infrastructure">Infrastructure</h2>
<ul>
<li>Audio MIME types in <code>FilesController</code> (mp3, wav, ogg, flac, aac, m4a, wma)</li>
<li>CI workflows updated to handle Terminal.Gui submodule <code>nuget.config</code> workaround (<code>rm -f</code> step)</li>
<li>Root <code>nuget.config</code> added for package source management</li>
<li>Terminal.Gui formatting excluded from CI format checks</li>
<li>Recursive submodule fetching enabled in CI workflows</li>
<li><code>Server:Admins</code> config array in <code>appsettings.example.json</code> for designating admin usernames</li>
<li><code>Storage:CleanupIntervalHours</code> and <code>Storage:RetentionDays</code> added to <code>appsettings.example.json</code></li>
<li><code>FakeChannelService</code> test helper added for IRC unit tests</li>
<li>Test suites: ChatLine, CommandHandler, DataMigrationService, FileValidationHelper, ImageToAsciiService, IrcMessageFormatter, JwtTokenService, LinkEmbedService</li>
<li>IRC abstraction layer test suite: IrcMessage parsing, IrcMessageFormatter, IrcClientConnection, IrcCommandHandler, IrcBroadcaster</li>
<li>Test helpers: <code>TestDuplexStream</code>, <code>TestIrcConnectionFactory</code>, <code>FakeChatService</code>, <code>FakeChannelService</code>, <code>FakeEncryptionService</code> for IRC unit testing without network I/O</li>
<li>346 total tests</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'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a><span class='footer-sep'>&middot;</span><span class='footer-credit'>Built with <a href='https://dotnet.github.io/docfx'>DocFX</a></span></div></div>
</div>
</div>
</footer>
</body>
</html>
+98 -33
View File
File diff suppressed because one or more lines are too long
+178
View File
@@ -178,6 +178,20 @@
"Title": "EchoHub.Client.Services.ApiClient",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/client/EchoHub.Client.Services.AudioPlaybackService.yml",
"output": {
".html": {
"relative_path": "api/client/EchoHub.Client.Services.AudioPlaybackService.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Client.Services.AudioPlaybackService",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/client/EchoHub.Client.Services.ClientEncryptionService.yml",
@@ -304,6 +318,20 @@
"Title": "EchoHub.Client.Themes",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/client/EchoHub.Client.UI.AudioPlayerDialog.yml",
"output": {
".html": {
"relative_path": "api/client/EchoHub.Client.UI.AudioPlayerDialog.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Client.UI.AudioPlayerDialog",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/client/EchoHub.Client.UI.ChannelListSource.yml",
@@ -556,6 +584,34 @@
"Title": "EchoHub.Client.UI.StatusDialogResult",
"Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.StatusDialogResult.yml\" sourcestartlinenumber=\"1\">Result returned from the status dialog.</p>\n"
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/client/EchoHub.Client.UI.UpdateConfirmDialog.yml",
"output": {
".html": {
"relative_path": "api/client/EchoHub.Client.UI.UpdateConfirmDialog.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Client.UI.UpdateConfirmDialog",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/client/EchoHub.Client.UI.UpdateProgressDialog.yml",
"output": {
".html": {
"relative_path": "api/client/EchoHub.Client.UI.UpdateProgressDialog.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Client.UI.UpdateProgressDialog",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/client/EchoHub.Client.UI.UserListSource.yml",
@@ -654,6 +710,20 @@
"Title": "EchoHub.Core.Contracts.ChannelListItem",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.Contracts.IChannelService.yml",
"output": {
".html": {
"relative_path": "api/core/EchoHub.Core.Contracts.IChannelService.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Core.Contracts.IChannelService",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.Contracts.IChatBroadcaster.yml",
@@ -724,6 +794,34 @@
"Title": "EchoHub.Core.Contracts",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ApiResponse-1.yml",
"output": {
".html": {
"relative_path": "api/core/EchoHub.Core.DTOs.ApiResponse-1.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Core.DTOs.ApiResponse<T>",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ApiResponse.yml",
"output": {
".html": {
"relative_path": "api/core/EchoHub.Core.DTOs.ApiResponse.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Core.DTOs.ApiResponse",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.AssignRoleRequest.yml",
@@ -780,6 +878,34 @@
"Title": "EchoHub.Core.DTOs.ChannelDto",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ChannelError.yml",
"output": {
".html": {
"relative_path": "api/core/EchoHub.Core.DTOs.ChannelError.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Core.DTOs.ChannelError",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ChannelOperationResult.yml",
"output": {
".html": {
"relative_path": "api/core/EchoHub.Core.DTOs.ChannelOperationResult.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Core.DTOs.ChannelOperationResult",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.CreateChannelRequest.yml",
@@ -1494,6 +1620,20 @@
"Title": "EchoHub.Server.Data.EchoHubDbContext",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddAttachmentFileSize.yml",
"output": {
".html": {
"relative_path": "api/server/EchoHub.Server.Data.Migrations.AddAttachmentFileSize.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Server.Data.Migrations.AddAttachmentFileSize",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddChannelIsPublic.yml",
@@ -1634,6 +1774,20 @@
"Title": "EchoHub.Server.Hubs",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Services.ChannelService.yml",
"output": {
".html": {
"relative_path": "api/server/EchoHub.Server.Services.ChannelService.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Server.Services.ChannelService",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Services.ChatService.yml",
@@ -1648,6 +1802,20 @@
"Title": "EchoHub.Server.Services.ChatService",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Services.FileCleanupService.yml",
"output": {
".html": {
"relative_path": "api/server/EchoHub.Server.Services.FileCleanupService.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Server.Services.FileCleanupService",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Services.FileStorageService.yml",
@@ -2068,6 +2236,16 @@
},
"version": ""
},
{
"type": "Conceptual",
"source_relative_path": "changelog/v0.2.5.md",
"output": {
".html": {
"relative_path": "changelog/v0.2.5.html"
}
},
"version": ""
},
{
"type": "Resource",
"source_relative_path": "images/hue_icon.svg",
+1728 -162
View File
File diff suppressed because it is too large Load Diff