From 6280287dedbb3ea97efab7848cb9073a79cb6d54 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 12 Apr 2025 21:08:08 +0200 Subject: [PATCH] Improved message handling methods by making them virtual, i.e., optional. --- .../Components/ChatComponent.razor.cs | 6 ++--- .../Components/InnerScrolling.razor.cs | 9 ++----- .../Components/MSGComponentBase.cs | 25 +++++++++++++------ app/MindWork AI Studio/Pages/Writer.razor.cs | 12 +-------- 4 files changed, 23 insertions(+), 29 deletions(-) diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor.cs b/app/MindWork AI Studio/Components/ChatComponent.razor.cs index 0759d5b4..f12be751 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor.cs +++ b/app/MindWork AI Studio/Components/ChatComponent.razor.cs @@ -840,8 +840,8 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable #region Overrides of MSGComponentBase public override string ComponentName => nameof(ChatComponent); - - public override async Task ProcessIncomingMessage(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default + + protected override async Task ProcessIncomingMessage(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default { switch (triggeredEvent) { @@ -860,7 +860,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable } } - public override Task ProcessMessageWithResult(ComponentBase? sendingComponent, Event triggeredEvent, TPayload? data) where TResult : default where TPayload : default + protected override Task ProcessIncomingMessageWithResult(ComponentBase? sendingComponent, Event triggeredEvent, TPayload? data) where TResult : default where TPayload : default { switch (triggeredEvent) { diff --git a/app/MindWork AI Studio/Components/InnerScrolling.razor.cs b/app/MindWork AI Studio/Components/InnerScrolling.razor.cs index 6dd0143e..3238ffd9 100644 --- a/app/MindWork AI Studio/Components/InnerScrolling.razor.cs +++ b/app/MindWork AI Studio/Components/InnerScrolling.razor.cs @@ -46,8 +46,8 @@ public partial class InnerScrolling : MSGComponentBase #region Overrides of MSGComponentBase public override string ComponentName => nameof(InnerScrolling); - - public override Task ProcessIncomingMessage(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default + + protected override Task ProcessIncomingMessage(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default { switch (triggeredEvent) { @@ -59,11 +59,6 @@ public partial class InnerScrolling : MSGComponentBase return Task.CompletedTask; } - public override Task ProcessMessageWithResult(ComponentBase? sendingComponent, Event triggeredEvent, TPayload? data) where TResult : default where TPayload : default - { - return Task.FromResult(default(TResult)); - } - #endregion private string MinWidthStyle => string.IsNullOrWhiteSpace(this.MinWidth) ? string.Empty : $"min-width: {this.MinWidth}; "; diff --git a/app/MindWork AI Studio/Components/MSGComponentBase.cs b/app/MindWork AI Studio/Components/MSGComponentBase.cs index 4dddb57d..a4a38d48 100644 --- a/app/MindWork AI Studio/Components/MSGComponentBase.cs +++ b/app/MindWork AI Studio/Components/MSGComponentBase.cs @@ -26,7 +26,7 @@ public abstract class MSGComponentBase : ComponentBase, IDisposable, IMessageBus public abstract string ComponentName { get; } - public Task ProcessMessage(ComponentBase? sendingComponent, Event triggeredEvent, T? data) + public async Task ProcessMessage(ComponentBase? sendingComponent, Event triggeredEvent, T? data) { switch (triggeredEvent) { @@ -35,18 +35,27 @@ public abstract class MSGComponentBase : ComponentBase, IDisposable, IMessageBus break; default: - return this.ProcessIncomingMessage(sendingComponent, triggeredEvent, data); + await this.ProcessIncomingMessage(sendingComponent, triggeredEvent, data); + break; } - - return Task.CompletedTask; } - - public abstract Task ProcessIncomingMessage(ComponentBase? sendingComponent, Event triggeredEvent, T? data); - - public abstract Task ProcessMessageWithResult(ComponentBase? sendingComponent, Event triggeredEvent, TPayload? data); + + { + return await this.ProcessIncomingMessageWithResult(sendingComponent, triggeredEvent, data); + } #endregion + protected virtual Task ProcessIncomingMessage(ComponentBase? sendingComponent, Event triggeredEvent, T? data) + { + return Task.CompletedTask; + } + + protected virtual Task ProcessIncomingMessageWithResult(ComponentBase? sendingComponent, Event triggeredEvent, TPayload? data) + { + return Task.FromResult(default); + } + #region Implementation of IDisposable public void Dispose() diff --git a/app/MindWork AI Studio/Pages/Writer.razor.cs b/app/MindWork AI Studio/Pages/Writer.razor.cs index 42b23abc..a36c0410 100644 --- a/app/MindWork AI Studio/Pages/Writer.razor.cs +++ b/app/MindWork AI Studio/Pages/Writer.razor.cs @@ -24,7 +24,7 @@ public partial class Writer : MSGComponentBase, IAsyncDisposable private string userInput = string.Empty; private string userDirection = string.Empty; private string suggestion = string.Empty; - + #region Overrides of ComponentBase protected override async Task OnInitializedAsync() @@ -43,16 +43,6 @@ public partial class Writer : MSGComponentBase, IAsyncDisposable public override string ComponentName => nameof(Writer); - public override Task ProcessIncomingMessage(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default - { - return Task.CompletedTask; - } - - public override Task ProcessMessageWithResult(ComponentBase? sendingComponent, Event triggeredEvent, TPayload? data) where TResult : default where TPayload : default - { - return Task.FromResult(default(TResult)); - } - #endregion private bool IsProviderSelected => this.providerSettings.UsedLLMProvider != LLMProviders.NONE;