Added Markdown clipboard service

This commit is contained in:
Thorsten Sommer 2024-05-04 10:47:42 +02:00
parent f11b9e0299
commit 0b9bf32a84
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
2 changed files with 31 additions and 0 deletions

View File

@ -0,0 +1,28 @@
using AIStudio.Tools;
using Microsoft.JSInterop;
using MudBlazor;
// ReSharper disable ClassNeverInstantiated.Global
namespace AIStudio;
/// <summary>
/// Wire up the clipboard service to copy markdown to the clipboard.
/// We use our own Rust-based clipboard service for this.
/// </summary>
public sealed class MarkdownClipboardService(Rust rust, IJSRuntime jsRuntime, ISnackbar snackbar) : IMudMarkdownClipboardService
{
private IJSRuntime JsRuntime { get; } = jsRuntime;
private ISnackbar Snackbar { get; } = snackbar;
private Rust Rust { get; } = rust;
/// <summary>
/// Gets called when the user wants to copy the markdown to the clipboard.
/// </summary>
/// <param name="text">The Markdown text to copy.</param>
public async ValueTask CopyToClipboardAsync(string text) => await this.Rust.CopyText2Clipboard(this.JsRuntime, this.Snackbar, text);
}

View File

@ -1,3 +1,4 @@
using AIStudio;
using AIStudio.Components;
using AIStudio.Settings;
@ -18,6 +19,8 @@ builder.Services.AddMudServices(config =>
});
builder.Services.AddMudMarkdownServices();
builder.Services.AddSingleton<Rust>();
builder.Services.AddMudMarkdownClipboardService<MarkdownClipboardService>();
builder.Services.AddSingleton<SettingsManager>();
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents()