From cd51a310428a9a22993f3554b739c56f95816e13 Mon Sep 17 00:00:00 2001
From: Thorsten Sommer <thorsten.sommer@dlr.de>
Date: Mon, 29 Jul 2024 09:05:07 +0200
Subject: [PATCH] Added possibility to configure a default provider for chats

---
 app/MindWork AI Studio/Components/Pages/Chat.razor.cs  |  5 +++++
 app/MindWork AI Studio/Components/Pages/Settings.razor |  2 ++
 app/MindWork AI Studio/Settings/DataModel/Data.cs      | 10 ++++++++++
 app/MindWork AI Studio/wwwroot/changelog/v0.8.6.md     |  1 +
 4 files changed, 18 insertions(+)

diff --git a/app/MindWork AI Studio/Components/Pages/Chat.razor.cs b/app/MindWork AI Studio/Components/Pages/Chat.razor.cs
index 6f1a4038..d880982e 100644
--- a/app/MindWork AI Studio/Components/Pages/Chat.razor.cs	
+++ b/app/MindWork AI Studio/Components/Pages/Chat.razor.cs	
@@ -56,6 +56,11 @@ public partial class Chat : MSGComponentBase, IAsyncDisposable
         
         // Configure the spellchecking for the user input:
         this.SettingsManager.InjectSpellchecking(USER_INPUT_ATTRIBUTES);
+
+        if (this.SettingsManager.ConfigurationData.PreselectChatOptions)
+        {
+            this.providerSettings = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.SettingsManager.ConfigurationData.PreselectedChatProvider);
+        }
         
         await base.OnInitializedAsync();
     }
diff --git a/app/MindWork AI Studio/Components/Pages/Settings.razor b/app/MindWork AI Studio/Components/Pages/Settings.razor
index 06673974..6551a722 100644
--- a/app/MindWork AI Studio/Components/Pages/Settings.razor	
+++ b/app/MindWork AI Studio/Components/Pages/Settings.razor	
@@ -75,6 +75,8 @@
 
         <MudText Typo="Typo.h4" Class="mb-3">Chat Options</MudText>
         <ConfigurationSelect OptionDescription="Shortcut to send input" SelectedValue="@(() => this.SettingsManager.ConfigurationData.ShortcutSendBehavior)" Data="@ConfigurationSelectDataFactory.GetSendBehaviorData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.ShortcutSendBehavior = selectedValue)" OptionHelp="Do you want to use any shortcut to send your input?"/>
+        <ConfigurationOption OptionDescription="Preselect chat options?" LabelOn="Chat options are preselected" LabelOff="No chat options are preselected" State="@(() => this.SettingsManager.ConfigurationData.PreselectChatOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.PreselectChatOptions = updatedState)" OptionHelp="When enabled, you can preselect chat options. This is might be useful when you prefer a specific provider."/>
+        <ConfigurationProviderSelection Data="@this.availableProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.PreselectChatOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.PreselectedChatProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.PreselectedChatProvider = selectedValue)"/>
         
         <MudText Typo="Typo.h4" Class="mb-3">Workspace Options</MudText>
         <ConfigurationSelect OptionDescription="Workspace behavior" SelectedValue="@(() => this.SettingsManager.ConfigurationData.WorkspaceStorageBehavior)" Data="@ConfigurationSelectDataFactory.GetWorkspaceStorageBehaviorData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.WorkspaceStorageBehavior = selectedValue)" OptionHelp="Should we store your chats?"/>
diff --git a/app/MindWork AI Studio/Settings/DataModel/Data.cs b/app/MindWork AI Studio/Settings/DataModel/Data.cs
index 0a1bcb5c..26639b6a 100644
--- a/app/MindWork AI Studio/Settings/DataModel/Data.cs	
+++ b/app/MindWork AI Studio/Settings/DataModel/Data.cs	
@@ -58,6 +58,16 @@ public sealed class Data
     /// </summary>
     public SendBehavior ShortcutSendBehavior { get; set; } = SendBehavior.MODIFER_ENTER_IS_SENDING;
 
+    /// <summary>
+    /// Preselect any chat options?
+    /// </summary>
+    public bool PreselectChatOptions { get; set; }
+
+    /// <summary>
+    /// Should we preselect a provider for the chat?
+    /// </summary>
+    public string PreselectedChatProvider { get; set; } = string.Empty;
+
     #endregion
 
     #region Workspace Settings
diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.8.6.md b/app/MindWork AI Studio/wwwroot/changelog/v0.8.6.md
index ab409ca0..59495062 100644
--- a/app/MindWork AI Studio/wwwroot/changelog/v0.8.6.md	
+++ b/app/MindWork AI Studio/wwwroot/changelog/v0.8.6.md	
@@ -1,3 +1,4 @@
 # v0.8.6, build 168
+- Added possibility to configure a default provider for chats
 - Improved the readability of the `settings.json` file by using indentation and enum names instead of numbers
 - Increased the default value for the live translation delay from 1,000 to 1,500 ms
\ No newline at end of file